当我使用
创建AngularJS项目时yo angular
它创建一个node_modules /目录,但将该目录放在.gitignore中。当我在其他地方克隆项目并运行
时grunt server
我得到了
致命错误:无法找到当地的咕噜声。
如果您看到此消息,则找不到Gruntfile或 grunt尚未在本地安装到您的项目中。更多 有关安装和配置grunt的信息,请参阅 入门指南:
入门指南没有说明如何处理丢失的node_modules /目录。
node_modules /目录故意丢失,因为yeoman把它放在.gitignore中。
在这种情况下,使用Yeoman和Grunt的正确方法是什么? 是否有更好的Yeoman和Grunt文档?
感谢。
答案 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上,那么你很有可能无法登记模块。该文件夹由于路径长度...叹息。