【问题标题】:Understanding npm and Node.js install location for modules了解模块的 npm 和 Node.js 安装位置
【发布时间】:2013-05-29 16:25:28
【问题描述】:

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

现在项目已经过了“玩弄”阶段,我想正确设置项目文件夹。所以,我的问题是,模块应该安装在~/ProjectA/node_modules 并因此成为版本控制项目文件的一部分,还是应该继续位于开发人员机器的特定位置......或者它真的不重要全部?

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

【问题讨论】:

标签: node.js npm


【解决方案1】:

我认为这里的“最佳实践”是将依赖项保留在项目文件夹中。
到目前为止,我见过的几乎所有 Node 项目(我是一名 Node 开发人员,现在大约有 8 个月的时间)都是这样做的。

您不需要对依赖项进行版本控制。这就是我管理 Node 项目的方式:

  1. 将版本锁定在package.json 文件中,以便每个人都获得相同的工作版本,在您的项目根目录中使用npm shrinkwrap 命令。
  2. node_modules文件夹添加到您的VCS忽略文件中(我使用git,所以我的是.gitignore
  3. 开心点,大功告成!

【讨论】:

  • 为了确保每个人都拥有完全相同版本的依赖项,您应该使用 npm shrinkwrap npmjs.org/doc/shrinkwrap.html
  • 所以听起来我在正确的轨道上。从版本控制中简单地排除node_modules 似乎是合乎逻辑的,但我不清楚我如何管理每个人的包。看起来它是通过package.json 文件或npm shrinkwrap 命令,这是缺少的链接。感谢您的帮助!
猜你喜欢
  • 2017-04-25
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 2016-02-21
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
相关资源
最近更新 更多