当前位置: 首页 > 知识库问答 >
问题:

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

严心水
2023-03-14

node_modules文件夹到底是什么,有什么用途?

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

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

还有一件事。通常,我从网站下载jQuery和Bootstrap文件,并将内容复制到项目内的css/js文件夹中,但这次我尝试使用npm,所有内容都转到文件夹node_modules,我正在使用Cordova。当我执行命令cordova build时,既不会生成jQuery文件,也不会生成Bootstrap文件。

这就是我的问题:

    < li >如果我想托管我的项目,我真的也必须上传node_modules文件夹吗? < li >当它是Cordova或Ionic时,我是否还必须将node_modules文件夹复制到www文件夹? < li >如果是,使用npm下载库有什么意义?真的是这样做的吗?哪个更好?上网站,下载文件,贴在www里面,还是通过npm下载?

共有2个答案

何涵忍
2023-03-14

node_modules文件夹到底是什么,它的用途是什么?

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

就我个人而言,如果你要探索node_modules文件夹的功能,我不建议你直接编辑它。理想情况下,你应该在把它推回你的存储库之前,先分叉存储库进行编辑、编译和执行。通常编辑node_modules可以覆盖使用npm install时的所有更改,因此,没有人能够克隆你的存储库,因为你不能把node_modules添加到github中。

. . .

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

强烈建议您避免手动将< code>node_modules文件夹上传到服务器。这样做会杀死你的版本依赖。重申一下我的观点,< code>node_modules只是一个外部目录,可以通过< code>npm install轻松创建。如果您要将应用程序部署到另一台服务器上,可以很容易地单独安装< code>node_modules。因此,将除< code>node_modules文件夹之外的所有文件移动到服务器,并在执行应用程序之前运行< code>npm install。

谢昊乾
2023-03-14

node_modules文件夹的用途是什么?

您可以将node_modules文件夹视为项目所依赖的外部模块的缓存。当您npm安装它们时,它们将从web下载并复制到node_modules文件夹和node中。js经过培训,可以在导入时在那里查找它们(没有特定路径)。我将其称为缓存,因为node_modules文件夹可以通过重新安装所有相关模块(应该列在项目文件夹中)随时从头开始完全重新创建。

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

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

这就是我的问题,如果我想托管我的项目,我真的也必须上传node_modules吗?

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

 类似资料:
  • 问题内容: 今天,一位同事向我解释了如何创建nodejs项目,我注意到在./node_modules中有一个名为.bin的不可见文件夹。我必须说,我在添加到项目“ bootcamp”和“ bower”工具后才发现了这一点。.bin的目的是什么?它是做什么用的? 问题答案: 这是节点模块中的二进制文件(可执行文件)所在的文件夹。 NPM网站指出: 可执行文件在全局模式下,可执行文件在Unix上链接到

  • 我正在看一个教程,以dockerize我的django应用程序。我不明白为什么我们使用作为DockerFile中的环境变量。 你能帮忙吗?

  • [大家好!每次我运行命令时,它都会创建node_modules文件夹,但该文件夹被排除在外!我也有一些警告,你可以看到,但我认为npm安装是成功的。 npm警告已弃用minimatch@2.0.10:请更新至minimatch 3.0。2或更高版本以避免RegExp DoS问题 npm警告已弃用minimatch@0.2.14:请更新至minimatch 3.0。2或更高版本以避免RegExp D

  • 我有一个包含多个其他项目的项目: null 都包含文件夹。我想让git忽略该文件夹,不管它从根文件夹开始的位置。加点这样的东西。Gitignore:

  • 问题内容: 我有一个有效的node_modules文件夹,并且尝试了package.json的许多排列,它们应该创建相同的结果并创建极其接近的结果,但是我的项目无法构建。我不知道如何解决这个问题。 我使用和手动添加了匹配的版本,并使用winMerge尝试查找差异。 我现有的node_modules文件夹可以工作,但是如果我重建它,它会失败。我机智的结束了。 编辑 并 问题答案: 您可以尝试使用sh

  • 问题内容: 它有一些奇怪的关键字。请解释文件的一般用途。 问题答案: 控制调用java或javac时可能带有启动标志的JVM。 长版: 让我们从评论开始 因此,我们有一个传递给java / javac的’JVM’列表。我们需要弄清楚此文件上下文中的JVM。 让我们走一条简单的线: 和实验 因此,似乎ERROR标志表示不支持的配置。 让我们继续 并执行 似乎“ WARN”将把我们发送到默认的JVM,