1

我正在创建一个 NPM 链接实用程序。

我有一个包,它也依赖于大约 7 或 8 个本地开发的包。我使用 NPM 链接将它们链接在一起。这目前是手动的并且已经变得乏味,希望使用实用程序将其自动化。我相信最好的办法是开始链接没有依赖关系的包,然后逐步找到具有最多依赖关系的包。

它看起来像这样:

     A (my main NPM project)

       /     \       \
      /       \       \
     B         C       H __
    / \              /  \  \
   /   \            /    \  \
  D     E          I     J   K
         \       /
          \     /
           \   / 
             F 

假设-我应该从树的底部开始向上工作。

我可以使用哪些数据结构/算法来轻松实现这一点?

考虑到上面的树,有效的代码如下所示:

# start with F and work upwards
cd F && npm link .
cd E && npm link F && npm link .
cd D && npm link .
cd B && npm link D && npm link E && npm link .
# etc etc

所以我认为算法应该是这样的:

  1. 创建本地开发项目的唯一列表 L(相对于仅远程)。
  2. 从主项目开始,向下钻取树(使用 package.json 查找已声明的依赖项),直到找到列表 L 中但在列表 L 中没有其他依赖项的一组依赖项。

之后我不确定。

4

2 回答 2

1

试试http://aka.ms/rush——它是解决您问题的工业级解决方案。

于 2017-04-14T06:25:06.877 回答
0

我问了 NPM,有人说可能还没有这样的实用程序,所以我开始研究它:

https://github.com/ORESoftware/npm-link-up

随时提供反馈或贡献。

除了Rush之外,还有Babel 使用的Lerna 。但我认为“npm-link-up”可能更简单、更精简。

于 2017-04-14T21:05:31.990 回答