webpack.config.js解剖

webpack

在開(kāi)發(fā)過(guò)程中庶骄,webpack是一一款模塊化開(kāi)發(fā)編譯打包的一款利器澳眷,下面我們對(duì)webpack的一些配置進(jìn)行一些解剖式的學(xué)習(xí)吧习柠!
var webapck =require("webpack); var path=require("path"); modules.export={ devtool: 'source-map', entry: [ './src/index' ], output: { path: path.join(__dirname, 'dist'), filename: 'bundle.js', publicPath: '/static/' }, }
在上面這部分代碼中:
devtool:

entry

bundle的入口文件

  • 如果傳入一個(gè)字符串蒜焊,這個(gè)字符串就會(huì)被解析為啟動(dòng)時(shí)加載的模塊倒信。
  • 如果傳入個(gè)數(shù)組,所有模塊都是啟動(dòng)時(shí)加載泳梆,模塊導(dǎo)出到最后一個(gè)里面,即把多個(gè)文件打包合并成一個(gè)
    entry: ["./entry1", "./entry2"]
  • 如果傳入一個(gè)對(duì)象鳖悠,就會(huì)創(chuàng)建多個(gè)輸入包文件,對(duì)象鍵值就chunk的name优妙,值可以是字符串或者是數(shù)組乘综。
  entry: {
      page1: "./page1",
      page2: ["./entry1", "./entry2"]
  },
  output: {
      // 當(dāng)使用多入口文件時(shí)候,要確保在output.filename使用[name]或者[id]
      filename: "[name].bundle.js",
      chunkFilename: "[id].bundle.js"
  }
}

注意: 沒(méi)有別的專門來(lái)配置入口點(diǎn)的選項(xiàng)套硼。如果你需要一個(gè)專門來(lái)配置入口點(diǎn)的配置對(duì)象卡辰,你需要用到××多個(gè)配置對(duì)象××

output

output是影響編譯輸出的選項(xiàng)。output選項(xiàng)告訴webpack怎么把編譯文件寫(xiě)入磁盤邪意。注意九妈,雖然可以有很多輸入口,但是只有一個(gè)輸出配置

如果使用了哈希([hash] 或者 [chunkhash]), 需要確保有一個(gè)一致的模塊順序抄罕。使用OccurenceOrderPlugin插件或者 recordsPath允蚣。(譯者:參看這個(gè)issue)

output.filename

指定輸出到硬盤的文件的文件名。這里必須是相對(duì)路徑

單一入口:

{
    entry:  "./src/app.js",
    output: {
        filename:"bundle.js",
        path:"./build"
     }
}

多入口

如果帶有多個(gè)入口點(diǎn)呆贿,或者使用了CommonsChunkPlugin這樣的插件嚷兔,你應(yīng)該使用替換符來(lái)為每個(gè)文件命名一個(gè)為一個(gè)名字。
[name] 被chunk的名字替換做入。
[hash] 被編譯器hash替換冒晰。
[chunkhash]被chunk的hash替換

  entry: {
    app: './src/app.js',
    search: './src/search.js'
  },
  output: {
    filename: '[name].js',
    path: __dirname + '/built'
  }
}

// 輸出到磁盤: ./built/app.js, ./built/search.js
output.path

絕對(duì)路徑(required)
[hash]被編譯后 文件的hash替換

output.publicPath

publicPath指定了一個(gè)在瀏覽器中被引用的URL地址。對(duì)于使用 <script>和<link>加載器竟块,當(dāng)文件路徑不同于他們的本地磁盤路徑(由path指定)時(shí)候壶运,publicPath被用來(lái)作為href或者url指向該文件。這種做法在你需要將靜態(tài)文件放在不同的域名或者cdn上面的時(shí)候是很有用的浪秘。與path搭配使用[hash]就能做好緩存方案了蒋情。

config.js

    path: "/home/proj/public/assets",
    publicPath: "/assets/"
}```

index.html

<head>
<link href="/assets/spinner.gif"/>
</head>

如果使用CDN和hash的例子
```output: {
    path: "/home/proj/cdn/assets/[hash]",
    publicPath: "http://cdn.example.com/assets/[hash]/"
}```
注: 萬(wàn)一最終輸出文件的publicPath在編譯的時(shí)候不知道,那么你可以不填耸携,動(dòng)態(tài)的在運(yùn)行時(shí)添加也可以棵癣。如果在編譯過(guò)程你不知道publicPath你可以忽略他,然后在你的入口文件里面添加上這個(gè)字段就可以了__webpack_public_path__夺衍。

```__webpack_public_path__ = myRuntimePublicPath

// rest of your application entry```

##### output.chunkFilename
非入口chunk的文件名狈谊,作為一個(gè)相對(duì)路徑放在output.path里面。

[id] 替換chunk的id.

[name] 替換chunk的名字 (or 如果沒(méi)有名字就用id替換).

[hash] 替換編譯的hash.

[chunkhash] 替換chunk的hash.

##### output.sourceMapFilename
js文件的sourceMap的文件名,也同樣在output路徑下面河劝。
[file] 替換js文件的文件名.

[id] 替換chunk的id.

[hash] 替換編譯的hash.

默認(rèn): "[file].map"

### module

###### module.loaders
自動(dòng)引用的加載器的數(shù)組
每個(gè)元素有這些選項(xiàng)
- test:必須滿足的條件
- exclude:不滿足的條件
- include:必須滿足的條件
- loader:用“!"隔開(kāi)多個(gè)loader
- loaders:多個(gè)loader

重要信息:這里的loader解析了他們應(yīng)用相關(guān)的資源壁榕,這意味著他們不需要解析配置過(guò)的文件。如果你用npm安裝loaders赎瞎,node_modules文件夾不在資源文件夾的父目錄中牌里,webpack就找不到這個(gè)loader。你需要把node_modules文件夾的絕對(duì)路徑添加到resolveLoader.root這個(gè)選項(xiàng)中煎娇。 (resolveLoader: { root: path.join(__dirname, "node_modules") })

例子:

module: {
loaders: [
{
// "test" is commonly used to match the file extension
test: /.jsx$/,

  // "include" is commonly used to match the directories
  include: [
    path.resolve(__dirname, "app/src"),
    path.resolve(__dirname, "app/test")
  ],

  // "exclude" should be used to exclude exceptions
  // try to prefer "include" when possible

  // the "loader"
  loader: "babel-loader"
}

]
}````

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末二庵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缓呛,更是在濱河造成了極大的恐慌,老刑警劉巖杭隙,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哟绊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡痰憎,警方通過(guò)查閱死者的電腦和手機(jī)票髓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铣耘,“玉大人洽沟,你說(shuō)我怎么就攤上這事∥舷福” “怎么了裆操?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)炉媒。 經(jīng)常有香客問(wèn)我踪区,道長(zhǎng),這世上最難降的妖魔是什么吊骤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任缎岗,我火速辦了婚禮,結(jié)果婚禮上白粉,老公的妹妹穿的比我還像新娘传泊。我一直安慰自己,他們只是感情好鸭巴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布眷细。 她就那樣靜靜地躺著,像睡著了一般奕扣。 火紅的嫁衣襯著肌膚如雪薪鹦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音池磁,去河邊找鬼奔害。 笑死,一個(gè)胖子當(dāng)著我的面吹牛地熄,可吹牛的內(nèi)容都是我干的华临。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼端考,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼雅潭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起却特,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扶供,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后裂明,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體椿浓,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年闽晦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扳碍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仙蛉,死狀恐怖笋敞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荠瘪,我是刑警寧澤夯巷,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站巧还,受9級(jí)特大地震影響鞭莽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜麸祷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一澎怒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阶牍,春花似錦喷面、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至磕瓷,卻和暖如春盒齿,著一層夾襖步出監(jiān)牢的瞬間念逞,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工边翁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翎承,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓符匾,卻偏偏與公主長(zhǎng)得像叨咖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啊胶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容