Скажем, есть модуль на npm, называемый "awesomepackage". Я могу зарегистрировать его как зависимость моего приложения через package.json
следующим образом:
npm i --save awesomepackage
Проверяя мою папку node_modules
, я вижу папку с именем "awesomepackage", которая выглядит так:
- index.js
- package.json
- README.md
- lib/
- awesomepackage.min.js
и я могу использовать пакет внутри своего собственного приложения так:
import {AwesomeThing} from 'awesomepackage';
Мой вопрос:
Когда я создаю свое приложение с помощью webpack, мой последний bundle.js
всегда содержит исходный код из node_modules/awesomepackage/index.js
- независимо от каких-либо переменных среды, которые у меня установлены (например, NODE_ENV=production
).
Есть ли способ сказать webpack использовать предварительно созданные файлы (например, node_modules/awesomepackage/lib/awesomepackage.min.js
), если они отправлены как часть пакета NPM, вместо повторного создания из источника?
Я видел решения которые use resolve.alias
и noParse
в конфигурации webpack с жестко запрограммированными путями в минированные исходные файлы, но разве это не означает, что в основном преследует цель использования npm и webpack? Я не хочу, чтобы жестко кодировать и поддерживать пути к каждому зависимому файлу сборки!
Я пришел сюда, потому что мой bundle.js
подскочил на 2,5 Мб, когда я добавил moment.js
- который был изменен на 167kb, включая все локали, но из которых исходный код включает в себя 2 МБ тестов.
Изменить
Понятно, что это больше, чем просто финализация окончательного файла bundle.js
в конце. Например: почему кто-то хочет включать сотни ненужных модульных тестов для зависимостей в конечный производственный код? Они этого не делают. Именно поэтому большинство библиотек предоставляют папку dist
(или аналогичную) как часть своего модуля npm.