15

当我创建一个AngularJS项目时

yo angular 

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

grunt server

我明白了

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

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

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

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

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

谢谢。

4

2 回答 2

38

That is the correct behaviour. The contents of node_modules is not meant to be committed to source control. The idea behind npm is that it tracks all required node dependencies in a file called package.json. This file should be committed to source control. Then on a different machine, you can check out the code and run

npm install

This looks at the package.json file and downloads all required files from the cloud and puts them all into a new node_modules directory.

于 2013-10-12T04:25:59.610 回答
7

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

npm shrinkwrap

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

由于yo angular正在创建应用程序恕我直言,node_modules 不应包含在 .gitignore 中,但是我只是粗鲁地发现,如果您使用的是 Windows,则很有可能由于路径长度而无法签入该文件夹中的模块.. 。叹。

于 2014-01-16T19:09:12.287 回答