2013-06-03 59 views
11

我一直在使用Node.js和npm几个星期,并取得了巨大成功,并开始质疑安装本地模块的最佳实践。我明白Global vs Local argument,但是,我的问题更多地与本地安装的位置有关。假设我有一个位于~/ProjectA/的项目,该项目由多个开发人员进行版本控制和处理。当最初使用Node.js和npm进行播放时,我并不知道默认的本地安装路径,只是将必要的模块安装在默认终端中,导致安装路径为~/node_modules。这最终要做的是要求所有其他开发项目的开发人员在自己的机器上安装模块以运行该应用程序。看到其中一些开发者在哪里跑npm install我仍然非常惊讶它在他们的机器上工作(我猜它与how Node.js and require() looks for modules有关),但不用说,它工作。了解模块的npm和Node.js安装位置

既然这个项目已经过去了“围观”阶段,我想正确设置项目文件夹。所以,我的问题是,如果模块安装在~/ProjectA/node_modules并因此成为受版本控制的项目文件的一部分,或者它应该继续位于开发人员计算机的特定位置......还是它根本不重要?

我只是在寻找一个关于这一个的“最佳实践”指导,以及其他人在设置项目时做什么。

+0

阅读https://npmjs.org/doc/developers.html。你的应用有一个'package.json'吗? –

回答

9

我认为这里的“最佳实践”是保持项目文件夹中的依赖关系。
到目前为止,我所见过的几乎所有的Node项目(我现在是一个Node开发人员,现在已经有8个月左右的时间了)。

您不需要版本控制依赖关系。这就是我如何管理我的节点项目:

  1. 保持锁定在package.json文件版本,所以每个人都得到了相同的工作版本,在您的项目根使用npm shrinkwrap命令。
  2. 添加node_modules文件夹到您的VCS忽略文件(我用git的,所以我的是.gitignore
  3. 要快乐,你就大功告成了!
+6

为了确保每个人都有完全相同的版本,你应该使用'npm shrinkwrap' https://npmjs.org/doc/shrinkwrap.html –

+0

添加到答案,谢谢 – gustavohenke

+1

因此,这听起来像我在正确的轨道上。从版本控制中简单地排除“node_modules”似乎是合乎逻辑的,但我不清楚我如何管理每个人的软件包。它看起来像是通过''package.json''文件或''npm shrinkwrap''命令并且这是缺少的链接。谢谢您的帮助! – Sanuden