为什么node_modules文件夹没有提交给Git?

时间:2013-10-11 23:12:43

标签: angularjs gruntjs yeoman

当我使用

创建AngularJS项目时
yo angular 

它创建一个node_modules /目录,但将该目录放在.gitignore中。当我在其他地方克隆项目并运行

grunt server

我得到了

  

致命错误:无法找到当地的咕噜声。

     

如果您看到此消息,则找不到Gruntfile或   grunt尚未在本地安装到您的项目中。更多   有关安装和配置grunt的信息,请参阅   入门指南:

入门指南没有说明如何处理丢失的node_modules /目录。

node_modules /目录故意丢失,因为yeoman把它放在.gitignore中。

在这种情况下,使用Yeoman和Grunt的正确方法是什么? 是否有更好的Yeoman和Grunt文档?

感谢。

2 个答案:

答案 0 :(得分:36)

这是正确的行为。 node_modules的内容并不意味着提交源代码控制。 npm背后的想法是它跟踪名为package.json的文件中所有必需的节点依赖项。此文件应提交给源代码管理。然后在另一台机器上,您可以查看代码并运行

npm install

这将查看package.json文件并从云中下载所有必需的文件,并将它们全部放入新的node_modules目录中。

答案 1 :(得分:6)

如果您对该主题进行了足够的搜索,您最终会遇到以下article,其中指出如果您正在构建一个应该签入依赖项的应用程序。依赖于package.json会导致模块作者发布更新时出现问题,更好的解决方案是使用

npm shrinkwrap

创建一个锁定依赖项和依赖项依赖项的文件,但即使这样也很脆弱,因为模块作者可以使用不同的代码重新发布相同的版本。

由于yo angular正在创建一个应用程序IMHO node_modules不应该包含在.gitignore中,但是我只是粗暴地发现,如果你在Windows上,那么你很有可能无法登记模块。该文件夹由于路径长度...叹息。