.gitignore和node_modules

时间:2013-06-12 15:44:11

标签: node.js github gitignore node-modules

我试图找出在git中处理node_modules的最佳方法。根据我的阅读,有两种选择:

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

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

但是,在某些项目中,我没有看到这两个选项中的任何一个。例如,在this node.js project中,没有node_modules,也没有.gitignore文件......

当我分叉这个仓库并执行 npm install 时,该文件夹中填充了node_modules,由于没有.gitignore,git会尝试提交它们...

我做错了什么?

2 个答案:

答案 0 :(得分:8)

您没有做错任何事,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存在的唯一方法是询问项目的所有者:)。

答案 1 :(得分:2)

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