У меня есть модуль приложения и общий модуль, который используется несколькими модулями приложения.
- app
- src
- package.json
- webpack.config.json
- .babelrc
- common
- lib
- package.json
- .babelrc
приложение/package.json
dependencies: {
common: "../common"
},
devDependencies: {
...othe deps,
"babel-plugin-transform-object-rest-spread": "^6.23.0",
}
общий/package.json
devDependencies: {
..other deps,
"babel-plugin-transform-object-rest-spread": "^6.23.0",
}
общий код находится в es6 и должен быть перенесен в приложение, поэтому webpack.config.js содержит
{
test: /\.js/,
exclude: /node_modules\/(?!(ui-common|ui-server-common)\/).*/,
loader: 'babel-loader',
},
Все работает нормально, если я запускаю установку пряжи в общем модуле, а затем в модуле приложения. Это копирует полные node_modules общего модуля, поэтому он содержит все отладочные файлы, включая babel-plugin-transform-object-rest-spread.
Если я удаляю node_modules из общего модуля, запускаю модуль приложения yarn install app, копируются только зависимости prod, а babel-plugin-transform-object-rest-spread отсутствует в app/node_modules/common/node_modules. тогда я получаю
Module build failed: ReferenceError: Unknown plugin "transform-object-
rest-spread" specified in "/Users/blaf/projects/management-
ui/ui-common/.babelrc" at 0, attempted to resolve relative to
"/Users/blaf/projects/management-ui/ui-common"
потому что в app/node_modules/common/node_modules отсутствует babel-plugin-transform-object-rest-spread. Пакет уже находится в app/node_modules, поэтому проблем быть не должно, но Babel хочет, чтобы он был прямо в общем пакете? Как я могу сказать Babel использовать зависимость корневого уровня?
.babelrc
, поэтому, если их нет вcommon
, это не сработает. - person loganfsmyth   schedule 09.08.2017