webpack引入dll

轉(zhuǎn)載自:
作者:Stark偉
鏈接:https://zhuanlan.zhihu.com/p/21748318

上面我們提到的方法本質(zhì)上就是一種“動態(tài)鏈接庫(dll)”的思想,這在 windows 系統(tǒng)下面是一種很常見的思想。一個 dll 包,就是一個很純凈的依賴庫,它本身不能運行,是用來給你的 app 或者業(yè)務(wù)代碼引用的。
同樣的 Webpack 最近也新加入了這個功能:webpack.DllPlugin。使用這個功能需要把打包過程分成兩步:
打包ddl包
引用ddl包,打包業(yè)務(wù)代碼
首先我們來打包ddl包,首先配置一個這樣的 ddl.config.js:
const webpack = require('webpack');const vendors = [
'react',
'react-dom',
'react-router',
// ...其它庫];module.exports = {
output: {
path: 'build',
filename: '[name].js',
library: '[name]',
},
entry: {
"lib": vendors,
},
plugins: [
new webpack.DllPlugin({
path: 'manifest.json',
name: '[name]',
context: __dirname,
}),
],};
webpack.DllPlugin 的選項中:
path 是 manifest.json 文件的輸出路徑,這個文件會用于后續(xù)的業(yè)務(wù)代碼打包;
name 是 dll 暴露的對象名,要跟 output.library 保持一致;
context 是解析包路徑的上下文,這個要跟接下來配置的 webpack.config.js 一致。
運行Webpack,會輸出兩個文件一個是打包好的 lib.js,一個就是 manifest.json,它里面的內(nèi)容大概是這樣的:
{
"name": "vendor_ac51ba426d4f259b8b18",
"content": {
"./node_modules/react/react.js": 1,
"./node_modules/react/lib/React.js": 2,
"./node_modules/react/node_modules/object-assign/index.js": 3,
"./node_modules/react/lib/ReactChildren.js": 4,
"./node_modules/react/lib/PooledClass.js": 5,
"./node_modules/react/lib/reactProdInvariant.js": 6,
// ............
}}
接下來我們就可以快樂地打包業(yè)務(wù)代碼啦,首先寫好打包配置文件 webpack.config.js:
const webpack = require('webpack');module.exports = {
output: {
path: 'build',
filename: '[name].js',
},
entry: {
app: './src/index.js',
},
plugins: [
new webpack.DllReferencePlugin({
context: __dirname,
manifest: require('./manifest.json'),
}),
],};
webpack.DllReferencePlugin 的選項中:
context 需要跟之前保持一致,這個用來指導(dǎo) Webpack 匹配 manifest.json 中庫的路徑;
manifest 用來引入剛才輸出的 manifest.json 文件。
DllPlugin 本質(zhì)上的做法和我們手動分離這些第三方庫是一樣的,但是對于包極多的應(yīng)用來說,自動化明顯加快了生產(chǎn)效率。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • GitChat技術(shù)雜談 前言 本文較長,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,865評論 7 110
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,358評論 7 35
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,660評論 2 71
  • 學(xué)習(xí)流程 參考文檔:入門Webpack,看這篇就夠了Webpack for React 一. 簡單使用webpac...
    Jason_Zeng閱讀 3,251評論 2 16
  • 我又回來了。最近看了一部電影 The Edge of Seventeen。特別好。 首先它是個青春片,沒有你想得到...
    壬捷閱讀 1,338評論 0 0

友情鏈接更多精彩內(nèi)容