.gitignore和node_modules

我想弄清楚在git中处理node_modules的最好方法。 从我读到的,有两个select:

A.将所有node_modules与我的项目一起保存在git存储库中。 这样,克隆我的项目的人不必安装任何模块。

B.不要在git仓库中保留任何node_modules,即有一个包含“node_modules”的“.gitignore”文件。

但是,在一些项目中,我没有看到这两种select。 例如,在这个node.js项目中 ,没有node_modules,也没有.gitignore文件…

当我叉这个回购,做npm安装 ,该文件夹是由node_modules填充,因为没有.gitignore,git试图提交他们…

我究竟做错了什么?

你没有做错任何事情, npm install会下载并安装package.json中定义的项目的所有依赖关系:

 "dependencies": { "underscore" : ">=1.3.3" }, "devDependencies" : { "mocha" : ">=1.0.0", "canvas" : ">=0.10.0", "cradle" : ">=0.2.0", "should" : ">=0.6.0", "async" : ">=0.1.18" } 

关于这些如何不出现在源代码树中,有许多可能的解释:

  • 一种可能性是它们在全球范围内安装。
  • 另一种可能性是它们实际上是在.gitignore中添加的,但是.gitignore本身永远不会被提交(这是通过在项目的.git/info/exclude文件中添加.gitignore来完成的。

在任何情况下,知道为什么没有.gitignore存在的唯一方法是通过询问项目的所有者:)。

我不是这个节点模块的专家,但有一点是肯定的。 如果没有.gitignore,则不会忽略任何文件。 这显然意味着提交者正在手动处理这些模块。