理解npm和Node.js模块安装位置

11
我已经使用Node.js和npm几周了,取得了很大的成功,开始质疑安装本地模块的最佳实践。我理解全局vs本地参数,但是我的问题更多地与放置本地安装的位置有关。假设我有一个位于~/ProjectA/的项目,该项目受版本控制,并由多个开发人员共同工作。当最初尝试使用Node.js和npm时,我不知道默认的本地安装路径,只是在默认终端中安装了必要的模块,结果导致安装路径为~/node_modules。这样做的结果是,所有其他开发人员都需要在自己的机器上安装模块才能运行应用程序。看到其他一些开发人员运行npm install的位置,我仍然感到惊讶,它们居然在他们的机器上工作了(我猜这与Node.js和require()如何查找模块有关),但不管怎样,它确实起作用了。
现在项目已经超过“玩弄”阶段,我想正确设置项目文件夹。所以,我的问题是,模块是否应该安装在~/ProjectA/node_modules中,因此成为版本控制的项目文件的一部分,还是继续位于开发人员特定位置...或者根本没有关系吗?
我只是想寻求一些关于最佳实践的指导,以及其他人在设置项目时做什么。

阅读 https://npmjs.org/doc/developers.html。你的应用程序有 package.json 吗? - Colonel Panic
1个回答

9
我认为在这里的“最佳实践”是将依赖项保持在项目文件夹中。 迄今为止,我看到的几乎所有Node项目(我是一个有8个月经验的Node开发者)都这么做。
您不需要对依赖项进行版本控制。我在管理我的Node项目时采用以下方法: 1. 在package.json文件中锁定版本,以便每个人都获得相同的工作版本;或者在项目根目录中使用npm shrinkwrap命令。 2. 将node_modules文件夹添加到您的VCS忽略文件中(我使用git,所以我的是.gitignore) 3. 快乐愉悦,一切都搞定啦!

6
为了确保每个人都使用完全相同的依赖版本,您应该使用 npm shrinkwrap。https://npmjs.org/doc/shrinkwrap.html - Colonel Panic
1
看来我走在正确的轨道上。从版本控制中简单地排除“node_modules”似乎是合乎逻辑的,但我不清楚如何管理每个人的包。它看起来是通过“package.json”文件或“npm shrinkwrap”命令进行管理,这就是缺少的环节。感谢您的帮助! - Sanuden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接