Почему мой пакет Webpack включает jQuery дважды? - PullRequest
0 голосов
/ 16 октября 2019

Я установил родительский модуль с 2 зависимостями субмодуля. Родительский модуль не имеет указанной зависимости jQuery, но каждый подмодуль определяет в качестве зависимости jQuery ^ 3.3.1 (результаты для каждого подмодуля 3.4.1). Я упаковал родительский модуль в Web, а затем вижу в сгенерированном файле комплекта, что jQuery 3.4.1 включен дважды. Что мне делать, чтобы одна и та же версия jQuery не была включена дважды? Я попробовал плагин splitchunks, и он генерировал куски, но jQuery все еще был там дважды. Я думал, что Webpack должен автоматически анализировать зависимости в графе модуля и оптимизировать связанный код? Я еще не тестировал зависимости одноранговых устройств NPM или плагин de-dupe для Webpack. Мне также интересно, есть ли что-то в самом jQuery, где Webpack не может / не решает не выполнять дедупликацию автоматически?

В файлах index.js обоих подмодулей я использую:

import $ from "jquery"

В файле package.json каждого подмодуля я указал:

"dependencies": {
"jquery" : "^3.3.1"
}

Затем я установил npm для каждого подмодуля.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Я обнаружил, что разрешение модуля может автоматически происходить вниз (в дочерние папки) папки точки входа, но не вверх (в папках модуля вне папки точки входа). Я обнаружил, что мне нужно «сообщить» Webpack об этих других местах расположения модулей, добавив объект «resolv» в Webpack.config:

resolve: {
        modules: [
          path.resolve(__dirname, "src/modules/pagetype/node_modules"),
          path.resolve(__dirname, "src/modules/sitewide/node_modules"),
          path.resolve(__dirname, "src/modules/template/node_modules"),
          "node_modules"
        ]
      }, // resolve
0 голосов
/ 16 октября 2019
module.exports = {
    resolve: {
        alias: {
            // fix every jQuery to our direct jQuery dependency. Shariff 1.24.1 brings its own jQuery and it would be included twice without this alias.
            'jquery': __dirname + '/node_modules/jquery/',
        },
    },
};

Примечание - происходит потому, что Shariff 1.24.1 определяет jQuery как свою собственную зависимость, а не определяет ее как зависимость от равноправных узлов в package.json.

Refrence

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