我正在创建一个 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
所以我认为算法应该是这样的:
- 创建本地开发项目的唯一列表 L(相对于仅远程)。
- 从主项目开始,向下钻取树(使用 package.json 查找已声明的依赖项),直到找到列表 L 中但在列表 L 中没有其他依赖项的一组依赖项。
之后我不确定。