我是一个完全的Javascript新手,旨在很好地配置我的Mac以进行开发。 已安装 NPM。
我注意到文件夹node_modules
存在于我的Users/MyName
目录中。
我认为这是前几天安装了 Node/NPM 或专门运行npm install airtable
的结果,我当时在Users/MyName
年就是这样做的。
当我npm uninstall airtable
时,它会从nodule_modules
中删除airtable
及其依赖项文件夹,留下以下内容:@types
和package-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 init
Users/MyName/Projects/Code/myusername/airtable-test
.这会将文件夹初始化为 npm 包(通过创建 package.json)。