我有一个项目,它包含一个根节点包,其中包含通过 npm链接链接在一起的子包 - 这些子包相互依赖(在package.json依赖项中列出),结构基本上看起来像这样:
-rootpackage
--subpackageA
--subpackageB
让我们说subpackageA依赖于subpackageB,所以我链接它们以避免在subpackageB源的每次更改后在subpackageA中发布/重新安装subpackageB。
链接工作正常,直到我在subpackageA中运行npm update
,这导致subpackageB被取消链接。
现在,我看到两个选项:
npm link
或npm install
之后运行npm update
操作,以确保链接始终存在。如果安装,这适用于postinstall
,但是在更新的情况下,不会调用postinstall
。我不知道任何针对npm的 postupdate 命令,该命令将在更新后调用。有没有办法让其中一个选项工作或以任何其他方式解决这个问题?我需要保留此链接和其他链接,以便我们不必在每次安装/更新后运行npm link
。我无法在任何地方找到有关此问题的信息。顺便说一下,我使用的是Node 6.4.0和NPM 3.10.3。
答案 0 :(得分:0)
因此解决方案是使用Yarn Workspaces或类似Lerna的项目。
纱线工作区是一种实用程序,其期望的结构与问题中所述的结构类似,并且会自动维护链接子包和根目录。设置非常容易(在根 package.json 中仅两行,并且第一次执行yarn
),之后,您不必担心{{1} }或upgrade
,除非您手动删除链接,否则链接会保留在原处。
Lerna 对此进行了扩展,并为您提供了用于管理多包项目的其他工具。如果使用 yarn ,它可以在内部使用Yarn Workspaces进行链接,但这不是必需的,并且可以与 npm 一起正常工作。请确保拥有Git,因为上次我检查Lerna不适用于SVN或其他VCS。