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

Dea*_*lze 15 angularjs gruntjs yeoman

当我用.创建一个AngularJS项目时

yo angular 
Run Code Online (Sandbox Code Playgroud)

它创建一个node_modules /目录,但将该目录放在.gitignore中.当我在别处克隆项目并运行时

grunt server
Run Code Online (Sandbox Code Playgroud)

我明白了

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

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

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

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

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

谢谢.

Mar*_*oft 39

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

npm install

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


Sha*_*neH 7

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

npm shrinkwrap

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

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