【问题标题】:Should node_modules be in User folder or project folders?node_modules 应该在用户文件夹还是项目文件夹中?
【发布时间】:2021-07-16 16:17:43
【问题描述】:

我是一个完全的 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.json 都在Users/MyName 中,这对我来说似乎很乱。 (我没有做任何非标准的安装)。

事情应该是这样的吗?

尝试解决:

我似乎 read,包括 Stackoverflow 上的问题,将模块存储在 Users/MyName/node_modules 可以有效地将它们全局存储,任何应用程序都可以访问,这样项目就不必提交到具有所有依赖项的服务器在拖曳中 - idea being that,在部署应用程序后,然后在其文件夹中运行 npm install,提示它安装所有依赖项。

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

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

【问题讨论】:

  • 您是在项目目录中运行npm init 还是创建package.json?我总是将项目的依赖项存储在所述项目目录下,因为包的版本可能因项目而异。您通常将node_modules 添加到.gitignore,因为它们在源代码管理中不需要 - package.json + package-lock.json 确保您可以在需要时再次安装正确的版本。

标签: node.js module node-modules


【解决方案1】:

这就是我认为正在发生的事情。您在文件夹Users/MyName 中有您的package.json,并且您正在Users/MyName/Projects/Code/myusername/airtable-test 中运行npm install。但问题是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)。

【讨论】:

  • 所以,我应该从Users/MyName 中删除node_modulespackage.jsonpackage_lock.json?当我这样做的时候,我只是发现npm install airtable,当in项目目录时,实际上是自己创建了package.json(不需要npm init),以及package_lock.json和@ 987654340@ 在项目文件夹中。也就是说,它不会用namedescription 之类的字段填充package.json,而只是dependencies。 /// 因此,这里的两个响应建议模块应该存储在每个项目的基础上,而不是全局存储。
  • 我实际上从来没有尝试安装一个 npm 包而不做npm init。这就是我今天学到的东西。是的,node_module 是按项目存储的。您可以全局安装软件包,但不会在您的 package.json 中列出,hanse 将不会成为您的软件包依赖项的一部分。
猜你喜欢
  • 2023-03-13
  • 2021-10-07
  • 1970-01-01
  • 2020-02-18
  • 2015-11-16
  • 2022-09-27
  • 2013-08-10
  • 1970-01-01
相关资源
最近更新 更多