Основной ответ
Используйте папку node_modules для проверки каждого импортированного модуля и поместите его в свой собственный файл:
optimization: {
// runtimeChunk: 'single',
splitChunks: {
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
enforce: true,
chunks: 'all'
}
}
}
}
Бонус-раунд
Выходное имя файла Webpackпринимает функцию для настройки.
Я попробую продемонстрировать концепцию;Давайте создадим имя файла, как вы просили: [name]-[version]-[contenthash].js
const pkgJson = require('./package.json');
const namesVersionsObject = pkgJson.dependencies.forEach(...);
output: {
filename: (chunkData) => {
return `[${chunkData.chunk.name}]-[${namesVersionsObject[chunkData.chunk.name]}]-[contenthash]`
},
}
Не копируйте и не вставляйте этот код, он не будет работать.Это просто POC о том, как генерировать пользовательский вывод имени файла.Вы должны построить объект из пакета JSON, который выглядит как {name: version}
:
{
"react": "16.5.0"
...
}
В качестве альтернативы, вы можете использовать что-то вроде webpack-version-file-plugin для генерации файла JSON, которыйиметь {name: version} в своем выводе и использовать этот файл в качестве ссылки namesVersionsObject