什么是处理节点中子模块的本地依赖的最佳方法?

时间:2015-03-06 17:06:45

标签: node.js git-submodules

在我们的环境中,我们有一个节点应用程序,它依赖于一个子模块,它也是一个节点模块。我们使用npm链接遇到了问题,因此我们尝试使用本地依赖项(即将package.json中的依赖项值设置为file:./ path / to / dep)。这个问题是,当你在子模块中进行更改时,你必须碰撞版本&在父级中更新它。有没有更好的方法来处理这种类型的依赖关系,以便我可以只在子模块中进行更改并将其传播到父级?

2 个答案:

答案 0 :(得分:1)

如果您希望在子模块中进行的更改立即反映在主模块中,我知道实现这一目标的唯一方法是从主模块的node_modules/目录创建一个符号链接你的子模块的目录。我真的建议找出为什么npm link不适合你,因为这是解决这个问题最好的方法。但是,如果您愿意,也可以手动创建链接。

例如,如果您的子模块的包名是' slave'并且您的文件结构如下所示:

main-module/
    sub-module/

然后,您可以通过从主模块的根目录运行以下命令来创建指向main-module/node_modules/slave的符号链接main-module/sub-module

ln -s ../sub-module ./node_modules/slave

然后,您在子模块中所做的任何更改都将立即在主模块中使用。

关于此的两点说明:

  • 在创建链接之前,请确保main-module/node_modules/slave不作为npm install - ed目录存在,否则它将无法正常工作。
  • 再次npm install时,它会覆盖您的符号链接,因此如果您想经常执行上述命令,请将上述命令放在shell脚本中。

答案 1 :(得分:-1)

当你在子模块中进行更改时,这意味着你在父仓库中进行提交(为了记录新的 gitlink special entry in the index,记住子模块的新SHA1)

为什么不使用该提交机会自动执行一个脚本,该脚本将使用正确的信息修改package.json文件?

从内容过滤器驱动程序称为'clean' script

clean

(图片显示在“Customizing Git - Git Attributes”中,来自“Pro Git book”)

干净的脚本是:

它的功能是获取npm子模块的版本并适当更新package.json文件。