首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“node_modules”文件夹的用途是什么?

“node_modules”文件夹的用途是什么?
EN

Stack Overflow用户
提问于 2020-08-07 02:16:25
回答 2查看 39.6K关注 0票数 31

node_modules文件夹到底是什么?它是用来做什么的?

我知道当我们用npm下载任何库时,库会转到node_modules文件夹。我也知道,当我们要上传它(例如,到GitHub )时,我们必须忽略node_modules文件夹,因为它占用了很大的空间。通过文件package.json,我们可以使用npm i下载所有依赖项。

假设我想将我的应用程序/网站部署到某个服务器/主机,我是否也必须将node_modules文件夹上传到服务器?

还有另一件事。通常,我从网站下载我的jQuery引导文件,并将内容复制到我项目内的css/js文件夹中,但这次我尝试了使用npm,所有东西都转到了node_modules文件夹中,我使用的是科多瓦。执行命令cordova build时,既不会生成jQuery,也不会生成引导带文件。

这些是我的问题:

  • 如果我想主持我的项目,我真的必须上传node_modules文件夹吗?
  • 当它是Cordova或离子型时,我是否也必须将node_modules文件夹复制到www文件夹?
  • 如果是这样的话,使用npm下载库有什么意义?这真的是这样吗?哪一个更好?去网站,下载文件,粘贴到www中,还是通过npm下载?
EN

回答 2

Stack Overflow用户

发布于 2020-08-07 03:03:22

node_modules文件夹的用途是什么?

您可以将node_modules文件夹看作是项目所依赖的外部模块的缓存。当您从npm install中下载它们并将它们复制到node_modules文件夹中时,Node.js会被训练在导入它们时在那里查找它们(没有特定路径)。我将其称为缓存,因为只要重新安装所有依赖模块(应该在项目文件夹中列出),就可以随时从头开始完全重新创建node_modules文件夹。

但是我知道当我们要将它上传到github时,我们必须忽略node_modules文件夹,因为它占用了很大的空间。

这是因为没有理由在您自己的GitHub项目中存储所有依赖模块的副本。您所使用的确切版本是已知的,并存储在您的package.jsonpackage-lock.json中,因此在任何时候您或其他使用项目的人都可以下载您的代码,然后从它们的原始源(甚至包括您正在使用的相同版本)获取所有其他依赖模块。因此,没有任何理由在您自己的项目中存储所有这些依赖模块的单独副本。这将是浪费,并将复杂升级到更新版本的所有这些依赖的模块。

这就是我的问题,如果我想主持我的项目,我真的需要上传node_modules吗?

如果项目在本地计算机上运行,并且现在希望将其移动到宿主位置,最好重新安装宿主计算机上的所有依赖模块,而不是从开发机器复制它们。这是因为在主机(可能是与开发机器不同的平台或操作系统)上安装它们的过程可能会对特定的宿主环境使用一些不同的安装过程。

票数 31
EN

Stack Overflow用户

发布于 2022-02-18 10:36:52

What exactly is the node_modules folder and what is it for?

它只是一个由npm创建的目录,以及通过package.json在本地安装的每个包的跟踪方法。如果您尝试删除node_module文件夹并运行应用程序,您将得到Error:Cannot find module 'some-module/methods'。这基本上意味着您的机器会抱怨您正在使用某些模块,但是机器无法找到它。

我个人不建议直接编辑node_modules文件夹,如果您想探索它的功能的话。理想情况下,您应该分叉回购编辑,编译和执行,然后再把它推回你的回购。通常,当使用node_modules时,编辑npm install可以覆盖所有更改,因此,由于无法将node_modules添加到github中,因此没有人能够克隆您的回购文件。

。。。

假设我想将我的应用程序/网站部署到某个服务器/主机,我是否也必须将node_modules文件夹上传到服务器?

强烈建议您避免手动将node_modules文件夹上载到服务器。这样做可以消除版本依赖关系。为了重新迭代我的观点,node_modules只是一个由npm install轻松创建的外部目录。如果要将应用程序部署到另一台服务器,则可以轻松地将node_modules单独安装。因此,将除node_modules文件夹之外的所有文件移动到服务器,并在执行应用程序之前运行npm install

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63294260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档