Webpack dllPluginサードパーティ共通ブロックを抽出
2440 ワード
単一ページアプリケーションプロジェクトでは、jQuery、React、antd、momentなど、多くのサードパーティモジュールを参照します.パッケージ化すると、webpackはデフォルトでこれらのモジュールを再パッケージし、パッケージ化時間が非常に長くなります.パッケージ化の時間を最小限に抑えるために、これらのサードパーティ製ライブラリをまずダイナミックライブラリにパッケージ化したほうがいいです.次回のパッケージ化時にこれらのライブラリを再パッケージする必要はなく、インタフェースを直接参照します.以下、例として説明する.私たちがしなければならないのは2つです.1、これらのライブラリをdllパッケージにパッケージ化する2、dllパッケージを参照し、ビジネスコードをパッケージ化する
もし私たちがこれらのライブラリをパッケージ化するなら.
まず
ステップ2:ビジネスコードをパッケージ化しdllを参照する.config.js htmlテンプレートにjsを導入しました
そしてwebpackでconfig.jsに の を き む
ビジネスロジックjsには、 した のサードパーティモジュールが される.
Webpack--config Webpackを します.config.jsでいいです. したindexを する.jsでは、コードが に さい.5 kくらいしかありません. するlib.jsはとても きくて2.5 Mくらいあります. に たちの を しました.
する 1、なぜ するLib.Jsはこんなに きくて、2.5 Mあります.dllを わなければ、コードはすべてindexにパッケージされます.jsでは538 Kしかありません. してみると していました.でも は きすぎます.2、サードパーティモジュールが たに された 、lib.jsは する があります.しかし、 は の はできません.
もし私たちがこれらのライブラリをパッケージ化するなら.
"dependencies": {
"antd": "^3.19.6",
"jquery": "^3.4.1",
"moment": "^2.24.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"vue": "^2.6.10"
}
まず
dll.config.js
ファイルを新規作成します.主な内容は entry: {
"lib": vendors, // vendors = ['antd','jquery','moment'...]
},
output: {
path: path.resolve(process.cwd(), 'lib'), // js
filename: '[name].js', // name lib
library: '[name]', // lib.js var lib=function(n){v...
},
plugins: [
new webpack.DllPlugin({
path: path.resolve(__dirname,'manifest.json'), // manifest.json
name: '[name]',
}),
]
webpack --config dll.config.js
を実行すると、動的リンクライブラリを作成する手順1が完了します.ステップ2:ビジネスコードをパッケージ化しdllを参照する.config.js htmlテンプレートにjsを導入しました
そしてwebpackでconfig.jsに の を き む
plugins:[
new CleanWebpackPlugin(), //
new webpack.DllReferencePlugin({
context: __dirname,
manifest: path.join(__dirname,'manifest.json')
}),
new copyWebpackPlugin([ // ,
{
from:'./lib',
to:'lib'
}
])
]
ビジネスロジックjsには、 した のサードパーティモジュールが される.
import jquery from 'jquery'
import moment from 'moment'
import vue from 'vue'
import antd from 'antd'
import react from 'react'
import reactDom from 'react-dom'
Webpack--config Webpackを します.config.jsでいいです. したindexを する.jsでは、コードが に さい.5 kくらいしかありません. するlib.jsはとても きくて2.5 Mくらいあります. に たちの を しました.
する 1、なぜ するLib.Jsはこんなに きくて、2.5 Mあります.dllを わなければ、コードはすべてindexにパッケージされます.jsでは538 Kしかありません. してみると していました.でも は きすぎます.2、サードパーティモジュールが たに された 、lib.jsは する があります.しかし、 は の はできません.