node_modules 应该在用户文件夹还是项目文件夹中?

Should node_modules be in User folder or project folders?

我是一个 Javascript 新手,旨在为开发很好地配置我的 Mac。 NPM 已安装。

我注意到文件夹 node_modules 存在于我的 Users/MyName 目录中。

认为 这是前几天安装 Node/NPM 或特别是 运行 npm install airtable 的结果,我在Users/MyName.

的时间

当我 npm uninstall airtable 时,它会从 nodule_modules 中删除 airtable 及其依赖文件夹,留下以下内容:@typespackage-lock.json(隐藏)。

如果我从那里 cd 到新的项目特定目录 Users/MyName/Projects/Code/myusername/airtable-test 和 运行 npm install airtable,我预计这些包可能会安装在该文件夹中。但是,它们再次安装在 Users/MyName/node_modules.

在这两种情况下,.package-lock.json(非隐藏)和 package.jsonUsers/MyName 中,这对我来说似乎很混乱。 (我没有在安装中做任何非标准的事情)。

事情应该是这样吗?

尝试解决:

我似乎 read, including from questions on Whosebug, that storing modules at Users/MyName/node_modules is effectively storing them globally, accessible to any app, and such that projects don't have to get committed to server with all dependencies in tow - the idea being that,在你部署你的应用程序后,你然后 运行 npm install 在它的文件夹中,提示它安装所有依赖项。

这样对吗?我应该考虑将所有依赖模块存储在项目文件夹中,还是在项目文件夹之上和之外?

(如果这个问题的答案是基于意见的,我不知道)。

这是我认为正在发生的事情。您的 package.json 在文件夹 Users/MyName 中,并且 运行 npm install 在 Users/MyName/Projects/Code/myusername/airtable-test 中。但问题是您在文件夹 Users/MyName/Projects/Code/myusername/airtable-test 中没有 package.json 文件。所以 npm 在目录中向上查找 package.json 并在 Users/MyName 中找到它,因此它正在那里安装包。

发生这种情况是因为 npm 识别项目的方式是查找 package.json。如果它没有在当前目录中找到它,那么它假定您必须在项目的某个子目录中并开始在文件夹层次结构中向上搜索以找到 package.json.

解决方案

在文件夹Users/MyName/Projects/Code/myusername/airtable-test中做npm init。这会将文件夹初始化为 npm 包(通过创建 package.json)。