子package.json中的root package.json未满足依赖项

时间:2019-04-01 06:23:30

标签: node.js typescript

让我们说我有一个Typescript项目

root/
  api/
    package.json
  web/
    package.json
  ...
  package.json

我在根package.json中安装了打字稿依赖项(以确保它在Web和api中使用相同的版本)。

如果我在 web / package.json 中安装了一个在Typescript上带有peerDepedency的软件包(让我们说ts-loader),它将抱怨Typescript是未满足的依赖项。

root package.json

{
  ...
  "devDependencies": {
    "@types/node": "^11.11.7",
    ...
    "typescript": "^3.3.4000"
  }
}

web / package.json

{
  ...
  "devDependencies": {
    "ts-loader": "^5.3.3",
    "webpack": "^4.29.6"
  }
}

如何解决此问题而不在 web / package.json 中添加Typescript?

如果那不可能,那么如何确保多个模块使用相同版本的软件包?

1 个答案:

答案 0 :(得分:1)

不幸的是,npm没有任何package.json继承。

由于这只是一个警告,并且由于节点在父目录中查找node_modules,所以一切仍然可以正常工作,我认为您可以执行以下操作之一:

  • 只要忽略警告
  • ts-loader移至上级目录
  • 在每个子目录(without any modifier)中声明并安装确切版本的打字稿,并在必要时手动进行更新
  • 切换到yarn并使用workspaces(我认为您仍然必须在每个软件包的依赖项中列出打字稿,但至少它们只会安装一次。)
  • 使用lerna,这是一个可以管理交叉依赖项的js monorepo管理器