Библиотеки Webpack: работа с несколькими файлами manifest.json - PullRequest
0 голосов
/ 08 мая 2019

У меня есть проект веб-пакета, в котором я хочу разделить некоторые часто используемые зависимости в пакет «вендора». У меня есть существующая установка, которая хорошо работает для использования сторонних библиотек модулей узлов. Это веб-приложение, в котором есть пакеты для «отложенной загрузки» для каждой страницы. У меня есть файл 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"]}}}}

Или я все это неправильно подхожу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...