npm update取消链接包的链接

时间:2017-01-15 14:35:45

标签: node.js npm yarnpkg npm-link

我有一个项目,它包含一个根节点包,其中包含通过 npm链接链接在一起的子包 - 这些子包相互依赖(在package.json依赖项中列出),结构基本上看起来像这样:

-rootpackage
--subpackageA
--subpackageB

让我们说subpackageA依赖于subpackageB,所以我链接它们以避免在subpackageB源的每次更改后在subpackageA中发布/重新安装subpackageB。 链接工作正常,直到我在subpackageA中运行npm update,这导致subpackageB被取消链接。

现在,我看到两个选项:

  1. 理论上,我可以在每个npm linknpm install之后运行npm update操作,以确保链接始终存在。如果安装,这适用于postinstall,但是在更新的情况下,不会调用postinstall。我不知道任何针对npm的 postupdate 命令,该命令将在更新后调用。
  2. 也许有一种方法可以更聪明地做到这一点,也许是使用 yarn ,我也在使用,在某种程度上,它可以防止取消链接或排除我的子包的更新,所以我不会丢失我的子包之间的链接,但是现在我不知道这样的方式。
  3. 有没有办法让其中一个选项工作或以任何其他方式解决这个问题?我需要保留此链接和其他链接,以便我们不必在每次安装/更新后运行npm link。我无法在任何地方找到有关此问题的信息。顺便说一下,我使用的是Node 6.4.0和NPM 3.10.3。

1 个答案:

答案 0 :(得分:0)

因此解决方案是使用Yarn Workspaces或类似Lerna的项目。

纱线工作区是一种实用程序,其期望的结构与问题中所述的结构类似,并且会自动维护链接子包和根目录。设置非常容易(在根 package.json 中仅两行,并且第一次执行yarn),之后,您不必担心{{1} }或upgrade,除非您手动删除链接,否则链接会保留在原处。

Lerna 对此进行了扩展,并为您提供了用于管理多包项目的其他工具。如果使用 yarn ,它可以在内部使用Yarn Workspaces进行链接,但这不是必需的,并且可以与 npm 一起正常工作。请确保拥有Git,因为上次我检查Lerna不适用于SVN或其他VCS。