国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解Webpack DLL用法以及功能

2019-11-19 16:06:26
字體:
來源:轉載
供稿:網友

在使用webpack過程中,本人也發現發現構建速度非常慢,Webpack性能優化的方式有很多種,本文介紹了dll,dll是一種最簡單粗暴并且極其有效的優化方式。

前言

在用 Webpack 打包的時候,對于一些不經常更新的第三方庫,比如 reactlodash,我們希望能和自己的代碼分離開,Webpack 社區有兩種方案

  1. CommonsChunkPlugin
  2. DLLPlugin

對于 CommonsChunkPlugin,webpack 每次打包實際還是需要去處理這些第三方庫,只是打包完之后,能把第三方庫和我們自己的代碼分開。而DLLPlugin 則是能把第三方代碼完全分離開,即每次只打包項目自身的代碼。

用法

要使用 DLLPlugin,需要額外新建一個配置文件。所以對于用這種方式打包的項目,一般會有下面兩個配置文件

  1. webpack.config.js
  2. webpack.dll.config.js

先來看下 webpack.dll.config.js

const webpack = require('webpack')const library = '[name]_lib'const path = require('path')module.exports = { entry: {  vendors: ['react', 'lodash'] }, output: {  filename: '[name].dll.js',  path: 'dist/',  library }, plugins: [  new webpack.DllPlugin({   path: path.join(__dirname, 'dist/[name]-manifest.json'),   // This must match the output.library option above   name: library  }), ],}

再改下 webpack.config.js 文件

const webpack = require('webpack')module.exports = { entry: {  app: './src/index' }, output: {  filename: 'app.bundle.js',  path: 'dist/', }, plugins: [  new webpack.DllReferencePlugin({   context: __dirname,   manifest: require('./dist/vendors-manifest.json')  }) ]}

manifest: require('./dist/vendors-manifest.json') 這里的路徑要和 webpack.dll.config.js 里面的對應。

然后運行

$ webpack --config webpack.dll.config.js$ webpack --config webpack.config.js

然后你的 html 文件像下面這樣引用

<script src="/dist/vendors.dll.js"></script><script src="/dist/app.bundle.js"></script>

DLL Link Plugin

上面的用法也存在一些不方便的地方,比如在 webpack.config.js 中要明確指出對應的 manifest.json 文件。還有當 DLL 需要更新的時候,比如 react 升級了,或者加入新的第三方庫,都需要手動像下面這樣編譯一次。

$ webpack --config webpack.dll.config.js

因為上面這些問題,所以基于官方的 DllReferencePlugin,我寫了一個打包的插件,Dll Link Plugin

使用這個插件,只需要對 webpack.config.js 作下小小的改動

const webpack = require('webpack')const DllLinkPlugin = require('dll-link-webpack-plugin')module.exports = { // ... plugins: [  new DllLinkPlugin({   config: require('webpack.dll.config.js')  }) ]}

直接替換掉 DllReferencePlugin,然后傳入對應的 DLL 配置文件就可以了。每次打包的時候,只需要運行

$ webpack --config webpack.config.js

上面的命令便會自動生成對應的 vendors 文件,需要更新的時候,也會自動更新。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永康市| 芮城县| 辉县市| 东丰县| 凤冈县| 百色市| 锦州市| 肇源县| 清水河县| 乌兰县| 唐山市| 兰考县| 偃师市| 余江县| 上栗县| 六安市| 建瓯市| 双辽市| 巩留县| 万州区| 兴仁县| 盖州市| 赣州市| 陕西省| 延寿县| 渑池县| 九龙城区| 鄢陵县| 阳山县| 太白县| 金阳县| 仙游县| 星子县| 津南区| 平湖市| 都江堰市| 新干县| 桃江县| 大城县| 罗源县| 江山市|