隨着前端技巧的開展,Vue.js因其易用性跟機動性成為了很多開辟者的首選框架。而Webpack作為Vue.js項目標打包東西,其設置跟優化對晉升項目機能至關重要。本文將深刻探究Vue.js與Webpack的結合,以及怎樣經由過程現實實現高效的打包與優化。
一、項目基本信息
在停止Webpack優化之前,懂得項目標基本信息是至關重要的。以下是一個Vue2項目標示例設置:
vue.config.js
module.exports = {
productionSourceMap: false,
chainWebpack: config => {
config.plugin('html').tap(args => {
args[0].chunksSortMode = 'none';
return args;
});
},
devServer: {
disableHostCheck: true,
before: function(app) {
app.get('/api/version', function(req, res) {
res.json({
data: 'V1.0.0',
message: '',
status: 0
});
});
},
proxy: {
'/api': {
target: 'http://localhost:8080/',
changeOrigin: true,
autoRewrite: true
}
}
}
};
二、分析以後項目情況
1. 利用webpack-bundle-analyzer插件
webpack-bundle-analyzer插件可能幫助我們可視化Webpack的輸出文件,分析各個模塊的大小跟依附關係。
npm install webpack-bundle-analyzer --save-dev
在vue.config.js
中增加插件:
configureWebpack: config => {
config.plugins.push(new BundleAnalyzerPlugin());
}
2. 利用speed-measure-webpack-plugin插件
speed-measure-webpack-plugin插件可能測量Webpack構建過程中每個插件的履行時光。
npm install speed-measure-webpack-plugin --save-dev
在vue.config.js
中增加插件:
configureWebpack: config => {
config.plugins.push(new SpeedMeasurePlugin());
}
三、處理構建成績
1. caniuse-lite提示的成績
根據caniuse-lite的提示,檢查項目中利用的JavaScript、CSS等特點能否在目標瀏覽器中支撐,假如不支撐,可能須要引入polyfills。
2. warning成績
Webpack在構建過程中可能會輸出一些warning,須要根據warning的內容停止響應的調劑。
四、打包速度優化
1. 修改source map
在出產情況中封閉source map,可能增加構建文件的大小。
productionSourceMap: false
2. 處理loader
優化Loader設置,增加不須要的文件處理。
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
五、Webpack機能優化
1. 利用Tree Shaking
Tree Shaking可能幫助我們移除未利用的代碼,增加終極打包文件的大小。
optimization: {
usedExports: true
}
2. 設置Gzip緊縮
利用Gzip緊縮可能增加效勞器傳輸的數據量,進步頁面加載速度。
const CompressionWebpackPlugin = require('compression-webpack-plugin');
module.exports = {
plugins: [
new CompressionWebpackPlugin({
filename: '[path].gz[query]',
algorithm: 'gzip',
test: /\.js$/,
threshold: 10240,
minRatio: 0.8
})
]
};
3. 設置devtool
根據項目須要設置合適的devtool,比方source-map
、eval-source-map
等。
devtool: 'eval-source-map'
4. 利用uglifyjs-webpack-plugin緊縮js
利用uglifyjs-webpack-plugin緊縮JavaScript文件,進一步減小文件大小。
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
optimization: {
minimizer: [new TerserPlugin()]
}
};
5. chunks分割
經由過程splitChunks設置,將大年夜眾模塊跟異步模塊分別,增減輕複加載。
optimization: {
splitChunks: {
chunks: 'all'
}
}
六、總結
經由過程以上現實,我們可能有效地優化Vue.js項目標Webpack打包過程,進步構建速度跟項目機能。在現實開辟中,須要根據項目須要跟情況停止調劑,以達到最佳後果。