NPM разрешает одноранговые зависимости с помощью транзитивных зависимостей
У меня есть 3 пакета A, B, C, и я разрабатываю, что пакет A имеет зависимости B и C в качестве зависимостей, но проблема здесь в том, что пакет C также зависит от пакета B, ниже блока, описывающего случай.
Так что я думал о том, чтобы иметь пакет B в качестве зависимой равноправной среды внутри A,C, но таким образом он не работает, когда я пытался запустить для модульного теста ex на пакете A, он всегда будет терпеть неудачу
Start testing for: /\.main.spec.js?/
module.js:549
throw err;
^
Error: Cannot find module 'B/user/model'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (D:\workspace1\A\node_modules\@comp\C\lib\form\container.js:13:14)
at Module._compile (module.js:652:30)
at Module._extensions..js (module.js:663:10)
at Object.require.extensions.(anonymous function) [as .js] (D:\workspace1\A\node_modules\babel-register\lib\node.js:152:7)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (D:\workspace1\A\node_modules\@comp\C\lib\index.js:12:18)
at Module._compile (module.js:652:30)
at Module._extensions..js (module.js:663:10)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Exit status 1
Пакет A файл package.json
"dependencies": {
"@comp/C": "0.0.1"
}
"peerDependencies": {
"@comp/B": "0.0.1"
}
Пакет C файл package.json
"peerDependencies": {
"@comp/B": "0.0.1"
}
Кроме того, в пакете C я не импортирую функции B из пакета, например
import X from '@comp/C'
скорее я использую абсолютный путь для модуля, как: импорт X из 'C/X'
а затем в веб-пакете я использую псевдоним для пакета C,
alias:{
'C': path.resolve(__dirname, './node_modules/@comp/C/lib/app')
}
для локальной разработки он работает корректно, но если отодвинуть пакеты и попытаться использовать их как один пакет (пакет A), он не будет работать и выдаст ошибку npm выше.
Я делаю это правильно, или есть другой способ справиться с этим делом?