NPM使用可传递依赖解决对等依赖

NPM使用可传递依赖解决对等依赖,npm,webpack,dependencies,peer-dependencies,Npm,Webpack,Dependencies,Peer Dependencies,我有3个包A、B、C,我正在开发的包要求包A将B和C作为依赖项,但这里的问题是包C也依赖于包B,在下面描述案例的块中 所以我想让包B作为A,C中的对等依赖,但这种方式不起作用,当我尝试在包A上运行ex-unit test时,它总是会失败 Start testing for: /\.main.spec.js?/ module.js:549 throw err; ^ Error: Cannot find module 'B/user/model' at Function

我有3个包A、B、C,我正在开发的包要求包A将B和C作为依赖项,但这里的问题是包C也依赖于包B,在下面描述案例的块中

所以我想让包B作为A,C中的对等依赖,但这种方式不起作用,当我尝试在包A上运行ex-unit test时,它总是会失败

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
Package C Package.json文件

  "dependencies": {
    "@comp/C": "0.0.1"
}
  "peerDependencies": {
    "@comp/B": "0.0.1"
  }
  "peerDependencies": {
    "@comp/B": "0.0.1"
  }
除此之外,在包C中,我不会直接从包中导入B函数 像

而是使用模块的绝对路径,如: 从“C/X”导入X

然后在webpack中,我使用了C包的别名

alias:{
      'C': path.resolve(__dirname, './node_modules/@comp/C/lib/app')
}
对于本地开发,它可以正常工作,但是如果推送包并尝试将其作为单个包(包a)使用,它将无法工作,并将给出上述npm错误


我做得对,还是有别的办法处理这个案子

仅仅将B作为普通依赖项添加到C有什么问题?除非webpack有什么特别之处(我不熟悉),否则您描述的场景非常常见,与对等依赖无关。
alias:{
      'C': path.resolve(__dirname, './node_modules/@comp/C/lib/app')
}