У меня возникли проблемы с визуализацией того, как я могу использовать DllPlugin/DllReferencePlugin
с помощью Webpack, а также используя Grunt для здания. Для тех, у кого нет знаний, DllPlugin
создает отдельный пакет, который может использоваться совместно с другими пакетами. Он также создает файл манифеста (важно), чтобы помочь с привязкой. Затем DllReferencePlugin
используется другим комплектом при построении для захвата предыдущего пакета DllPlugin Bundle. Для этого требуется файл манифеста, созданный ранее.Grunt, Webpack и DllPlugin
В Grunt для этого потребуется файл манифеста, созданный до того, как хрюкает даже бег, нет? Heres упрощенный пример кода:
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')
потерпит неудачу, потому что предыдущий шаг grunt, который строит webpack.dll.js
, не завершено, значение манифеста еще не существует.
Пожалуйста, старайтесь избегать просто сдачи кода в качестве ответа и попытаться объяснить, что он делает и почему. Ваш код может быть не очевидным для людей, у которых нет соответствующего опыта в кодировании. – Frits
Спасибо! Ты спасатель жизни. – zjm555