使用git子模块有什么好处

目前试图找出使用什么样的包pipe理。

例如,我目前正在与nodejs一个JavaScript项目。

我已经设置了一个git子模块,并且正在试图找出使用哪种方法。

将存储库克隆到当前的存储库?

cd ./somedir && git clone some_repo 

使用git submodulenpm

 "scripts": { "install": "bower install && git submodule init && git submodule update" } 

为什么不直接添加与npm package.json dependencies的回购?

喜欢:

 { "foo" : "git+ssh://user@hostname:project.git#commit-ish", "bar" : "git+ssh://user@hostname/project.git#commit-ish" } 

这些是我一直在思考的可能的方式,我对更好的东西是开放的,并希望在这些问题上有远见。

更新

我预见到的一个问题是,例如说node版本在子模块被导入/克隆/需要的地方不同。 一个项目可能使用节点4.2.4,另一个可能在0.12.4,0.10.4或5.6.0。 目前为止,我可以看到的这种情况不能通过设置分支或版本标签来解决,还是可以解决?