我很難想象如何利用帶有Webpack的DllPlugin/DllReferencePlugin
,同時也使用Grunt作爲建築物。對於那些沒有知識的人,DllPlugin
創建一個單獨的包,可以與其他包共享。它還會創建一個清單文件(重要)來幫助鏈接。然後,DllReferencePlugin
被另一個軟件包用於構建時抓取之前製作的DllPlugin Bundle。爲此,它需要先前創建的清單文件。Grunt,Webpack和DllPlugin
在Grunt中,這需要在grunt甚至運行之前創建的清單文件,否?下面有一個簡單的代碼示例:
webpack.dll.js
// My Dll Bundles, which creates
// - ./bundles/my_dll.js
// - ./bundles/my_dll-manifest.json
module.exports = {
entry: {
my_dll : './dll.js'
},
// where to send final bundle
output: {
path: './bundles',
filename: "[name].js"
},
// CREATES THE MANIFEST
plugins: [
new webpack.DllPlugin({
path: "./bundles/[name]-manifest.json",
name: "[name]_lib"
})
]
};
webpack.app.js
// My Referencing Bundle, which includes
// - ./bundles/app.js
module.exports = {
entry: {
my_app : './app.js'
},
// where to send final bundle
output: {
path: './bundles',
filename: "[name].js"
},
// SETS UP THE REFERENCE TO THE DLL
plugins: [
new webpack.DllReferencePlugin({
context: '.',
// IMPORTANT LINE, AND WHERE EVERYTHING SEEMS TO FAIL
manifest: require('./bundles/my_dll-manifest.json')
})
]
};
如果在第二部分看,webpack.app .js,我已經評論過哪裏的一切似乎都會在咕嚕聲中失敗。爲使DllReferencePlugin正常工作,它需要DllPlugin中的清單文件,但在Grunt工作流程中,grunt會在初始化grunt本身時加載這兩個配置,導致manifest: require('./bundles/my_dll-manifest.json')
行失敗,因爲構建webpack.dll.js
的上一個grunt步驟沒有完成,意味着清單尚不存在。
請儘量避免將代碼轉儲爲答案,並嘗試解釋它的作用和原因。對於那些沒有相關編碼經驗的人來說,你的代碼可能並不明顯。 – Frits
謝謝!你是一個拯救生命的人。 – zjm555