Я пытаюсь найти хороший способ использования локальных модулей в npm или способ структурирования большого приложения, чтобы его можно было объединить в модули, которые могут находиться или не находиться в отдельном хранилище.
Каждый локальный модуль имеет свой собственный package.json и установленные зависимости.
Мои требования состоят в том, чтобы модули были написаны на ES6 и скомпилированы только как часть строящегося основного проекта (поэтому у меня не так много зависимостей, которые постоянно создаются независимо).
Структура проекта
/root
/main-module
... main js files <- entry point
webpack.config.js
package.json
/module-1
... module 1 js files
package.json
/module-2
... module 2 js files
package.json
/module-3
... module 3 js files
package.json
В настоящее время я изучаю использование локальных модулей, указав локальный файл в моем package.json следующим образом:
...
"dependencies": {
"lodash": "^4.17.10",
"module-1": "../module-1",
"module-2": "../module-2",
"module-3": "../module-3",
"normalize.css": "^8.0.0"
}
...
Вы можете увидеть весь проект здесь: https://github.com/SamStonehouse/webpack-local-modules-test
Я использую веб-пакет с загрузчиком babel, который не нуждается в какой-либо дополнительной настройке для использования этой формы и даже просматривает файл модуля на предмет изменений и перестраивает, когда они завершены, что удивительно.
Проблема: после сборки lodash включается во встроенный пакет 4 раза, по одному для каждого модуля, которому это требуется, даже если все они требуют одинаковой версии и все исходные коды компилируются одновременно.
- Я пытался использовать splitChunkPlugin, но безрезультатно
- Я пытался установить lodash как devDependency в локальных модулях (это было то, чего я не хотел делать, но это все равно не работало)
У кого-нибудь есть решение для этого?
Или альтернативный способ объединения локальных модулей аналогичным образом