2017-07-28 73 views
0

我正在处理一个较大的项目,该项目被拆分为多个npm包。软件包之间有几个依赖关系。整个代码库存储在主目录是这样的:如何在安装时自动链接npm包?

main/ 
    pkg1/ 
    pkg2/ 
    ... 

假设pkg2的取决于的pkg1,所以在main/pkg2/package.json我:

"dependencies": { 
    "pkg1": "^0.1.0" 
} 

我已经联系我包起来使用npm link。但是,当我开始在新机器上开发或出于某种原因,我必须重新安装软件包时,我不能简单地在pkg2/中说npm install。它会失败,因为找不到pkg1。 (它没有发布,但无论如何,我想要本地版本,因为我正在开发这两个包)。

当然,我可以手动完成所有链接,而不是打电话npm install,但这很麻烦。有没有办法一步到位呢?

我以前的研究:

This问题提出了编写预装脚本,但我不想让生产连接,只有在开发环境中,为another答案要点出来。

我也试过npm linkpkg1/然后npm install --linkpkg2/。根据手册,

在某些情况下,--link参数将导致npm将全局安装链接到本地​​空间。

虽然不是我的情况。

回答

0

您可以使用zelda。由Feross撰写,它正是为这个目的而设计的。

+0

看起来像一个很好的解决方案。谢谢! – kkeri

0

我不是这样做的粉丝;我通常更喜欢运行本地存储库或使用git URL来处理这样的依赖。

这就是说,如果你想继续使用npm链接,你总是可以使用预安装脚本的方法,但不要使用预安装密钥。

"autolink": "cd ../project1 && npm link && cd ../project2 && npm link project1_name", 

然后在你的命令行,你可以做$ npm run autolink当你第一次安装一个开发ENV。

+0

保罗,你可以链接我的一些资源,描述你的首选方式?我不太明白你的意思,但它可能是有用的,因为我打算在Github上托管我的软件包。无论如何,感谢自动链接脚本的想法。同时我发现我真正的问题是要找到正确的访问包目录和运行脚本的顺序。当我有一些包时,这并不明显。 – kkeri