git存储库中是否应包含“ node_modules”文件夹


Answers:


175

答案并不像阿尔贝托·扎卡尼(Alberto Zaccagni)所建议的那样容易。如果您开发应用程序(尤其是企业应用程序),则在git repo中包括node_modules是一个可行的选择,并且选择哪种选择取决于您的项目。

因为他非常反对node_modules,所以我将集中讨论它们的参数。

想象一下,您刚刚完成了企业应用程序,并且您将需要支持3-5年。您绝对不希望依赖某人的npm模块,该模块将来可能会消失并且无法再更新您的应用程序。

或者您有无法从Internet访问的私有模块,并且无法在Internet上构建应用程序。或者,由于某些原因,您可能不想依赖最终的npm服务构建。

您可以在Addy Osmani的这篇文章中找到优缺点(尽管它与Bower有关,但情况几乎相同)。最后,我引用Bower主页和Addy的文章中的一段话:

“如果您没有编写要供他人使用的软件包(例如,您正在构建Web应用程序),则应始终将已安装的软件包检入源代码管理中。”


6
我完全同意这一点。我不希望我们的企业构建系统需要 Internet连接才能成功构建,因为它需要下载依赖项,希望该依赖项仍然存在。谢谢。
致命狗狗

9
@Alberto Zaccagni我相信您第一次是对的。如果您确实在构建企业应用程序,则应该使用企业工具。应该使用Artifactory和npm-artifactory来防止互联网上消失的项目。即使在小型项目中,这也比将同一项目的多个副本签入源代码管理更为干净。
Ted Bigham 2014年

10
左手问题之后,我认为跟踪node_modules绝对不是一个坏主意。
莱奥榄

6
没有提到重要方面。如果您的node_modules在VCS下-切换分支为just git checkout foo。如果node_modules不在VCS下–切换分支即处于该状态git checkout foo ; npm install,则无论您当前的NPM版本需要运行什么;)
Ivan Kleshnin

7
最干净的企业解决方案是托管一个内部Intranet可访问的npm存储库,该存储库包含您使用的所有模块版本,并且不使用源代码检入node_modules。您的构建系统将引用您的内部节点存储库。
user2867288 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.