У меня есть проект веб-пакета, в котором я хочу разделить некоторые часто используемые зависимости в пакет «вендора». У меня есть существующая установка, которая хорошо работает для использования сторонних библиотек модулей узлов. Это веб-приложение, в котором есть пакеты для «отложенной загрузки» для каждой страницы. У меня есть файл JSON, на который я хочу сослаться в некоторых из этих пакетов, но он составляет ~ 2 МБ, и по умолчанию веб-пакет делает копию для каждого экземпляра, что значительно увеличивает размер моей сборки.
Итак, по моему vendor.webpack.config.js
:
const config = {
entry: {
common: [/* A bunch of npm libaries */],
assets: ["./assets/myfile.json"]
},
output: {
filename: "[name].bundle.js",
path: path.resolve(__dirname, "common-dist"),
// The name of the global variable which the library's
// require() function will be assigned to
library: "[name]_lib"
},
devtool: sourceMap,
plugins: []
};
config.plugins = [
new webpack.DllPlugin({
path: "common-dist/[name]-manifest.json",
name: "[name]_lib"
})
];
module.exports = config;
Сборка библиотеки DLL дает мне 2 набора связок, один для «общих» и один для «активов». Каждая связка выглядит правильно.
Тогда в webpack.config.json у меня есть:
new webpack.DllReferencePlugin({
context: '.',
manifest: require('./common-dist/common-manifest.json')
}),
new webpack.DllReferencePlugin({
context: __dirname,
manifest: require("./common-dist/assets-manifest.json"),
}),
Тогда в моем приложении
// somefile.js
import SomeThing from "assets"
Однако запустить сборку не удалось, так как импорт не может быть разрешен.
Как мне сослаться на assets-manifest.json
, чтобы сделать myFile.json импортируемым в мое приложение? Имеется один экспорт, который правильно указан в манифесте:
// asssets-manifest.json
{"name":"assets_lib","content":{"./assets/myFile.json":{"id":"./assets/myFile.json","buildMeta":{"exportsType":"named","providedExports":["SomeThing","default"]}}}}
Или я все это неправильно подхожу?