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



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

事情应该是这样吗?

尝试解决:

我似乎读到,包括从 Stackoverflow 上的问题中读到,在Users/MyName/node_modules上存储模块实际上是全局存储它们,任何应用程序都可以访问,并且项目不必提交到拖曳所有依赖项的服务器 - 这个想法是,在部署应用程序后,您可以在其文件夹中运行npm install, 提示它安装所有依赖项。

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

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

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

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

溶液

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

最新更新