入口:
entry: {
page1: "./page1",
page2:["./entry1","./entry2"]
}
把前面的二個(gè)使用方法結(jié)合使用横蜒。對(duì)象的key是作為打包成的文件的名稱(chēng),所以有多少個(gè)key规哲,就代表打包成多少個(gè)文件蝶溶。
出口:
output: {
path: path: path.join(__dirname,'/public/dist'),
filename: 'static/js/[name].[chunkhash:8].js',
publicPath: publicPath
}
path:打包后的js文件存放地址膝蜈。
filename:文件名稱(chēng)乙漓;如果前面有/開(kāi)始的储狭,webpack自動(dòng)幫你生成目錄互婿;[name]就是entry中的key,[chunkhash:8]自動(dòng)幫你加上hash辽狈。
publicPath:在你網(wǎng)站運(yùn)行時(shí)候可能你訪(fǎng)問(wèn)的資源地址(image慈参,url等)可能不是你打包的目錄(path),publicPath就是在path前加上一段;可以是目錄刮萌,也可以是CDN地址
插件CommonsChunkPlugin
一般會(huì)把jQuery驮配、react、angular等框架或者庫(kù)打包成一個(gè)文件着茸,因?yàn)椴粫?huì)經(jīng)常更改壮锻,可以長(zhǎng)時(shí)間的緩存在用戶(hù)的瀏覽器上。
插件ExtractTextPlugin
webpack把css也當(dāng)成模塊涮阔,在js中可以import css文件猜绣,所以html中不需要手動(dòng)去加css,當(dāng)這個(gè)js加載時(shí)候敬特,會(huì)幫你把css包裹在style標(biāo)簽中插入頁(yè)面掰邢。但是這個(gè)使用場(chǎng)景也是極少的,你還是需要把css生成文件的伟阔。
webpack-dev-server
一個(gè)npm的包辣之,需要安裝。
開(kāi)發(fā)時(shí)候你需要運(yùn)行你的應(yīng)用皱炉,就需要一個(gè)server怀估,webpack-dev-server其實(shí)就是封裝了express的一個(gè)server,里面又使用了一個(gè)中間件webpack-dev-middleware來(lái)把webpack編譯的文件放在內(nèi)存中娃承,請(qǐng)求資源時(shí)候都是從內(nèi)存中取奏夫,編譯過(guò)程也是在內(nèi)存中運(yùn)行,所以速度非忱荩快酗昼。
熱替換react-hot不刷新瀏覽器
常用Plugins介紹
代碼熱替換,HotModuleReplacementPlugin
生成html文件,HtmlWebpackPlugin
將css成生文件梳猪,而非內(nèi)聯(lián)麻削,ExtractTextPlugin
報(bào)錯(cuò)但不退出webpack進(jìn)程蒸痹,NoErrorsPlugin
代碼丑化,UglifyJsPlugin呛哟,開(kāi)發(fā)過(guò)程中不建議打開(kāi)
多個(gè)html共用一個(gè)js文件(chunk)叠荠,可用CommonsChunkPlugin
清理文件夾,Clean
調(diào)用模塊的別名ProvidePlugin扫责,例如想在js中用$榛鼎,如果通過(guò)webpack加載,需要將$與jQuery對(duì)應(yīng)起來(lái)
壓縮:http://www.qingpingshan.com/jb/javascript/175812.html
newwebpack.DefinePlugin({ // <--減少React大小的關(guān)鍵
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
newwebpack.optimize.DedupePlugin(),//刪除類(lèi)似的重復(fù)代碼
newwebpack.optimize.UglifyJsPlugin(),//最小化一切
newwebpack.optimize.AggressiveMergingPlugin()//合并塊
//在生產(chǎn)環(huán)境服務(wù)端gzip壓縮文件
newCompressionPlugin({
asset: "[path].gz[query]",
algorithm: "gzip",
test: /\.js$|\.css$|\.html$/,
threshold: 10240,
minRatio: 0.8
})