webpack做項目優化
- 2020 年 9 月 7 日
- 筆記
webpack優化 — compression-webpack-plugin 開啟gzip
打包的時候開啟gzip可以大大減少體積,非常適合於上線部署。下面以vue-cli2.x項目為例,介紹如何在vue中開啟gzip。(摘自網路://www.cnblogs.com/blogs-xlf/p/11365859.html)
步驟
安裝 compression-webpack-plugin
注意,目前最新版需要運行在
webpack4.0
以上,如果你的webpack
是3.x版本的,請安裝compression-webpack-plugin
的1.x版本(筆者安裝的是1.1.12)。
npm install compression-webpack-plugin -D
改造vue項目配置
- 在
config/index.js
文件中修改productionGzip: true
;
- 在
build/webpack.prod.conf.js
文件中的plugins
添加下面的程式碼, vue-cli2.x默認已經寫好了,則不用管
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
查看壓縮前後的大小對比
如果想知道壓縮前後的大小情況,可以使用
webpack-bundle-analyzer
插件,vue-cli2.x默認引進的不用管。然後在package.json
文件中添加下面的script命令:
"report":"npm run build --report=true"
另:
實際項目中的程式碼:
webpack 的externals配置
按照官方文檔的解釋,如果我們想引用一個庫,但是又不想讓webpack打包,並且又不影響我們在程式中以CMD、AMD或者window/global全局等方式進行使用,那就可以通過配置externals。這個功能主要是用在創建一個庫的時候用的,但是也可以在我們項目開發中充分使用。
假設:以jquery為例子,目的是在runtime時通過cdn獲取jquery依賴,在打包時忽略他的打包
步驟一:
//index.html
<script
src="//code.jquery.com/jquery-3.1.0.js"
integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk="
crossorigin="anonymous">
</script>
步驟二:
//webpack.config.js
module.exports = {
//...
externals: {
jquery: 'jQuery'
//將需要忽略打包的都寫在這個裡面,但前提是index.html文件裡面必須script引入
}
};
//屬性名jquery指的是 import $ from 'jquery'中的 'jquery'
屬性值 jQuery指的是jquery插件暴露出來的全局對象名。按理來說$應該也是可以寫在屬性值裡面的,(也是jquery暴露的啊,但我沒試過行不行)
步驟三:
文件中的
import $ from 'jquery';
千萬不能去掉。 很重要,好多人就是把它去掉了跑過來問我為啥我的還是報錯jquery is undefined。
vue項目: