【问题标题】:Why is the node_modules folder not committed to Git?为什么 node_modules 文件夹没有提交给 Git?
【发布时间】:2013-10-20 03:38:54
【问题描述】:

当我用

创建一个 AngularJS 项目时
yo angular 

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

grunt server

我明白了

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

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

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

故意遗漏了node_modules/目录,因为yeoman把它放在了.gitignore中。

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

谢谢。

【问题讨论】:

  • 您的 .gitignore 文件中列出了除了 node_modules 之外的哪些内容?你的 Gruntfile.js 是否被 clone 动作带入?这可能是 Marplesoft 解决的问题之后的第二个问题。

标签: angularjs gruntjs yeoman


【解决方案1】:

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

npm shrinkwrap

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

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

【讨论】:

    【解决方案2】:

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

    npm install

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

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 2015-04-13
      • 2016-09-13
      • 2017-03-19
      • 2018-08-05
      • 1970-01-01
      • 2015-05-24
      • 2019-04-29
      • 1970-01-01
      相关资源
      最近更新 更多