.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,则不会忽略任何文件。 这显然意味着提交者正在手动处理这些模块。