webpack能夠說不用就難受,那麼它有哪些咱們須要注意的呢? <1> webpack的發佈策略css
webpack.publish.config.js
,將webpack.config.js
的配置拷貝過去,剔除一些開發配置項便可:devServer
節點刪掉:devServer: {
hot: true,
open: true,
port: 4321
}
複製代碼
plugins
節點下的熱更新插件刪掉:new webpack.HotModuleReplacementPlugin()
複製代碼
url-loader
,將圖片放入統一的images文件夾之下:{ test: /\.(png|jpg|gif)$/, use: 'url-loader?limit=43959&name=images/[name].[ext]' }
複製代碼
或者使用img-
前綴加上7位的hash名稱
:html
{ test: /\.(png|jpg|gif)$/, use: 'url-loader?limit=43959&name=images/img-[hash:7].[ext]' }
複製代碼
package.json
中的script節點下新增dev
命令,經過--config
指定webpack啓動時要讀取的配置文件:"pub": "webpack --config webpack.publish.config.js"
複製代碼
<2> 每次從新構建時候刪除dist目錄jquery
cnpm i clean-webpack-plugin --save-dev
var cleanWebpackPlugin = require('clean-webpack-plugin');
複製代碼
plugins
節點下使用這個插件:new cleanWebpackPlugin(['dist'])
複製代碼
webpack.publish.config.js
entry: {
app: path.resolve(__dirname, 'src/js/main.js'), // 本身代碼的入口
vendors: ['jquery'] // 要分離的第三方包的入口
}
複製代碼
new webpack.optimize.CommonsChunkPlugin({ // 抽離第三方包的插件
name:'vendors', // 指定抽離第三方包的入口名稱
filename:'vendors.js' // 抽離出的公共模塊的名稱
})
複製代碼
html-webpack-plugin
在生成index.html
文件的時候,會自動將抽離的第三方包引入進去!在plugins數組中添加:webpack
new webpack.optimize.UglifyJsPlugin({ // 優化壓縮JS
compress:{
warnings:false // 移除警告
}
}),
new webpack.DefinePlugin({ // 設置爲產品上線環境,進一步壓縮JS代碼
'process.env.NODE_ENV': '"production"'
})
複製代碼
<3> 優化壓縮HTML文件 在plugins
節點下的htmlWebpackPlugin
插件中,添加minify
子節點:git
minify:{// 壓縮HTML代碼
collapseWhitespace:true, // 合併空白字符
removeComments:true, // 移除註釋
removeAttributeQuotes:true // 移除屬性上的引號
}
複製代碼
其餘優化項請參考:html-minifier - githubgithub
npm install --save-dev extract-text-webpack-plugin
安裝抽取CSS文件的插件。const ExtractTextPlugin = require("extract-text-webpack-plugin");
複製代碼
{
test: /\.css$/, use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: ["css-loader"],
publicPath: '../' // 設置圖片路徑
})
},
{
test: /\.scss$/, use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: ['css-loader', 'sass-loader'],
publicPath: '../' // 設置圖片路徑
})
}
複製代碼
new ExtractTextPlugin("css/styles.css"), // 抽取CSS文件的插件
複製代碼
<4>壓縮抽取出來的CSS文件 (https://github.com/NMFR/optimize-css-assets-webpack-plugin)web
cnpm i optimize-css-assets-webpack-plugin --save-dev
安裝插件到開發依賴。var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
複製代碼
new OptimizeCssAssetsPlugin() // 壓縮CSS文件的插件
複製代碼
<5> 相關文章npm
服務員,打包一個webpack,對,要一鍵生成的那種。json