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

Angularjs 为什么node_modules文件夹没有提交到Git?,angularjs,gruntjs,yeoman,Angularjs,Gruntjs,Yeoman,当我创建一个AngularJS项目时 yo angular 它创建一个节点\模块/目录,但将该目录放在.gitignore中。当我在别处克隆项目并运行 grunt server 我明白了 致命错误:找不到本地grunt 如果您看到此消息,可能是找不到GrunFile,或者 grunt尚未在本地安装到您的项目中。更多 有关安装和配置grunt的信息,请参阅 入门指南: 但是,《入门指南》没有说明如何处理丢失的节点\模块/目录 节点\ u modules/目录故意丢失,因为yeoman将其放在

当我创建一个AngularJS项目时

yo angular 
它创建一个节点\模块/目录,但将该目录放在.gitignore中。当我在别处克隆项目并运行

grunt server
我明白了

致命错误:找不到本地grunt

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

但是,《入门指南》没有说明如何处理丢失的节点\模块/目录

节点\ u modules/目录故意丢失,因为yeoman将其放在了.gitignore中

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


谢谢。

这是正确的行为。
node_模块的内容不应提交给源代码管理。其背后的思想是,它在一个名为的文件中跟踪所有必需的节点依赖关系。此文件应提交给源代码管理。然后在另一台机器上,您可以签出代码并运行

npm安装


这将查看package.json文件并从云中下载所有必需的文件,并将它们全部放入一个新的
节点\u modules
目录。

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

npm包覆面提取

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


由于
yo
正在创建应用程序,因此.gitignore中不应包含IMHO节点\u模块,然而,正如我刚刚粗暴地发现的那样,如果您在Windows上,由于路径长度的原因,您很有可能无法签入该文件夹中的模块……唉。

除了节点模块之外,您的.gitignore文件中还列出了哪些内容?您的GrunFile.js是否因克隆操作而出现?这可能是继Marplesoft解决的问题之后的第二个问题。