NPM通过传递依赖关系解决对等依赖关系

时间:2018-11-19 23:39:14

标签: npm webpack dependencies peer-dependencies

我有3个程序包A,B,C,而我正在开发的程序包要求程序包A具有B和C作为依存关系,但是这里的问题是程序包C也依赖于程序包B,下面的方框描述了这种情况

enter image description here

所以我当时考虑将包B作为A,C内部的对等依赖,但是这种方式不起作用,当我尝试对包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

打包package.json文件

  "dependencies": {
    "@comp/C": "0.0.1"
}
  "peerDependencies": {
    "@comp/B": "0.0.1"
  }

Package C package.json文件

  "peerDependencies": {
    "@comp/B": "0.0.1"
  }

除此之外,在程序包C中,我没有直接从程序包中导入B函数 像

import X from '@comp/C'

相反,我正在为模块使用绝对路径,例如:     从“ C / X”导入X

然后在webpack中,我为程序包C使用别名,

alias:{
      'C': path.resolve(__dirname, './node_modules/@comp/C/lib/app')
}

对于本地开发,它可以正常工作,但是如果将软件包推入并尝试将其作为单个软件包(软件包A)使用,它将无法工作,并且会出现上述npm错误。

我做对了,还是有其他方法可以处理这种情况?

0 个答案:

没有答案
相关问题