首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的npm包的所有文件都安装在node_modules中?

npm是JavaScript的包管理工具,用于在项目中安装、管理和共享代码模块。当你使用npm安装包时,这些包的文件都会被下载并存储在项目的node_modules目录中。这种设计有以下几个优点:

  1. 隔离性:将每个包的文件都放在自己的目录中可以确保不同的包之间不会发生冲突,避免了不同包之间相同文件的命名冲突问题。
  2. 可移植性:将包的文件放在项目的特定目录中,使得你可以轻松地将整个项目复制、移动到其他机器上,而无需手动安装各个包。
  3. 版本管理:node_modules目录还用于存储项目所依赖的包的不同版本。通过将每个包的文件都放在单独的子目录中,npm可以有效地管理和跟踪项目所使用的每个包的版本。
  4. 依赖解析:npm使用package.json文件来记录项目所依赖的包及其版本信息。通过将包的文件放在node_modules目录中,npm可以根据package.json中的依赖关系自动解析和安装所需的包。

总之,将npm包的所有文件安装在node_modules目录中有助于管理项目的依赖关系、版本控制和移植性。这种设计使得开发者可以更轻松地使用和共享代码模块,提高开发效率。腾讯云提供了云计算相关的产品和服务,如云服务器、对象存储、容器服务等,可供开发者在云上部署和管理自己的应用。你可以访问腾讯云官网(https://cloud.tencent.com/)了解更多详情。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

npm 依赖管理中被忽略那些细节

接下来,本文将针对 npm 你可能忽略细节和大家分享一些经验。 npm 安装机制 A 和 B 同时依赖 C,C 这个会被安装在哪里呢?C 版本相同和版本不同时安装会有什么差异呢?.../node_modules 这层目录包含有我们 package.json 文件所有的依赖,而这些依赖子依赖都安装在了自己 node_modules ,形成类似于下面的依赖树: 这样目录有较为明显好处...: 1)层级结构非常明显,可以清楚在第一层 node_modules 中看到我们安装所有子目录; 2)在已知自己所需名字以及版本号时,可以复制粘贴相应文件node_modules ...为什么会出现 package-lock.json 呢? 为什么会有 package-lock.json 文件呢?这个我们就要先从 package.json 文件说起了。... dependencies 依赖项相同 dependencies :结构和外层 dependencies 结构相同,存储安装在子依赖 node_modules 依赖 需要注意是,并不是所有的子依赖都有

2.5K10

NPM应用

我们在本地项目中,安装模块都在node_modules文件目录下,所以这个文件会很大!!...跑环境:按照package.json依赖清单,把模块安装一遍「指定版本」 $ npm i  把开发和生产依赖都安装一遍 $ npm i --production 只安装生产依赖 容易出现问题:...1项目目录不能用中文和特殊符号命名,否则 $ npm init -y 就会报错 2当前项目目录所有祖先级目录,不要出现node_modules,否则安装模块,可能安装到祖先node_modules... ================= $ npm i xxx -g(--global) 把模块安装在全局 安装在全局 VS 安装在本地 1.安装在全局可以使用命令,但是不能在项目代码中导入,而且多个项目使用相同版本...,可能导致版本冲突 $ npm root -g 查看安装在全局目录 2.安装在本地,不能直接使用命令,但是可以在项目中导入,而且也不用担心版本冲突 npm安装模块比较慢 原因1:安装过程是迭代进行

16110
  • 从 vue-cli 源码发现了27行读取 json 文件有趣 npm

    同时之前看到了vue-cli 源码 里有 read-pkg 这个。源码仅27行,非常值得我们学习。 阅读本文,你将学到: 1. 如何学习调试源码 2....环境准备 3.1 克隆 # 推荐克隆项目,保证与文章同步 git clone https://github.com/lxchuan12/read-pkg-analysis.git # npm i -...用最新VSCode 打开项目,找到 package.json scripts 属性 test 命令。鼠标停留在test命令上,会出现 运行命令 和 调试命令 选项,选择 调试命令 即可。...等等 read-pkg 源码[23] 整体而言相对比较简单,但是也有很多可以学习深挖学习知识点。 作为一个 npm ,拥有完善测试用例。...学 Node.js 可以多找找简单 npm 学习。比直接看官方文档有趣多了。不懂就去查官方文档。查多了,自然常用就熟练了。

    3.9K10

    开发遇到过 NPM 疑惑解答

    为什么有的命令写在package.jsonscript中就可以执行,但是通过命令行直接执行就不行? 为什么需要package-lock.json文件?...package-lock.json文件作用就是锁定当前依赖安装结构,与node_modules中下所有树状结构一一对应。...(不是所有都有,当子依赖依赖版本与根目录node_modules依赖冲突时,才会有) 通过分析上面的package-lock.json文件,也许会有一个问题。...为什么有的可以被安装在根目录node_modules,有的却只能安装在自己包下面的node_modules?这就涉及到npm安装机制。...C依赖了D@2,安装D@2时,因为npm不允许同层存在两个名字相同,这样就与跟目录node_modulesD@1冲突,所以会把D@2安装在C自己node_modules

    1.5K10

    Node.js安装与基本使用

    jquery 方式2:安装指定以及指定版本 npm install @ 需要资源,将下载到当前项目的node_modules文件夹下                ...1.5.2基于package.json安装 步骤一:初始化项目,自动创建package.json文件 npm init -y 步骤二:下载资源,并保存到package.json文件 npm...package-lock.json文件记录着整个项目所有组件依赖树。...也就是保存node_modules所有信息(版本,下载地址 等)                 1.5.4常见参数 参数以及省略写法 描述 -global=-g 全局安装,安装后位于系统预设目录下...                1.6.3全局安装 npm install -g 全局安装在一个特定文件夹下                 1.6.4全局卸载 npm

    1.1K40

    从 node 到 python

    一 包管理 · pipenv npm 是 node.js 官方绑定包管理工具,而 python 对应是 pip 。...但是,使用 npm 若不指定 -g 参数全局安装,则默认都安装在当前项目的 node_modules 下,这种依赖包管理按项目隔离区分方式其实是非常方便。...但是 pip 坑爹是并没有类似于 node_modules 依赖统一入口,除非 pip install 时通过 --target 参数手动指定安装目录,另外记录依赖信息 requirements.txt...其他依赖也是通过 install 命令安装,所有信息都将会记录在 Pipfile 和 Pipfile.lock 文件,类似于 package.json 和 package-lock.json 。...本文内容就是这么多了,写下这篇文章时候,还在从杭州到武汉回家火车上,身处于恶心泡面味和烦人小孩啼哭声夹杂环境。虽长路漫漫,愿心亦能坚定如初。

    1.1K10

    精读《pnpm》

    而带来这些优势点子,全在官网上这张图上: 所有 npm 都安装在全局目录 ~/.pnpm-store/v3/files 下,同一版本仅存储一份内容,甚至不同版本也仅存储 diff 内容。...每个项目的 node_modules 下有 .pnpm 目录以打平结构管理每个版本源码内容,以硬链接方式指向 pnpm-store 文件地址。...每个项目 node_modules 下安装结构为树状,符合 node 就近查找规则,以软链接方式将内容指向 node_modules/.pnpm 。...为什么是三层,而不是两层或者四层呢?...正因为这三层寻址设计,使得第一层可以仅包含 package.json 定义,使 node_modules 不可能寻址到未定义在 package.json ,自然就解决了幻影依赖问题。

    91820

    Npm原理】Npm 执行命令环境变量

    下面我们分四个步骤来详细总结一下 npm 命令行存放位置 npm 命令添加过程 npm 命令执行过程 项目本地安装是否必要 npm 命令行包存放位置 npm所有可供调用命令行包 存放在 项目根目录...而 window 下 npm run 调用也是这个 cmd 文件 npm 命令添加过程 npm 在 执行 install 时,会分析每个依赖 package.json bin 字段,并将包含命令安装到.../node_modules/.bin 目录 我们 现在来添加一下自己,来测试一下 在 自己创建 package.json ,给 bin对象 添加一个键值对 配置格式 如下: 命令名称:入口执行文件...执行 npm install file:./npm-install-test 为什么这么做,可以参考另一篇文章 【npm】简化本地文件引用路径 ?.../node_modules/.bin/ 目录添加到执行环境 PATH 变量 如果有些命令没有全局安装,只安装在了 当前项目的 node_modules 那么使用 npm run 一样可以调用命令

    4.4K20

    NPM基本介绍(一)

    ,所以我们这里就什么理解自定义模块查找方式路径生成规则,为什么require(名)就能够将这个require进来使用。...npm install发生了什么 官方安装文档 3、全局安装和局部安装 按照位置来区分: 全局安装是安装在:/c/Users/用户名/AppData/Roaming/npm/node_modules 局部安装是安装在...(缓存目录) 解压压缩到当前项目的node_modules目录 运行npm install首先会判断项目文件node_modules中有没有对应模块,没有直接去远程下载,然后保存在缓存,将缓存压缩解压至对应项目的...package.json文件,可以添加-y | --yes 参数则默认所有配置为默认yes npm root -g:查看全局安装地址 npm run:列出项目所有脚本命令参数, npm uninstall...npm与yarn缓存对比 为什么不使用shrinkwrap(lock) pnpm介绍 三大包管理进行对比

    1.6K20

    2018 年了,你还是只会 npm install 吗?

    3. npm install 如何工作 —— node_modules 目录结构 npm install 执行完毕后,我们可以在 node_modules 中看到所有依赖。...而每一个都有自己依赖,每个自己依赖都安装在了自己 node_modules 。依赖关系层层递进,构成了一整个依赖树,这个依赖树与文件系统文件结构树刚好层层对应。...——在我们示例中就有这个问题,webpack 和 nconf 都依赖 async 这个,所以在文件系统,webpack 和 nconf node_modules 子目录中都安装了相同 async.../node_modules/.bin/ 目录添加到执行环境 PATH 变量,因此如果某个命令行包未全局安装,而只安装在了当前项目的 node_modules ,通过 npm run 一样可以调用该命令...正如上一节所说,npm run 命令在执行时会把 ./node_modules/.bin 加入到 PATH ,使我们可直接调用所有提供了命令行调用接口依赖

    6.6K160

    lerna最佳实践

    package node_modules ,只有依赖版本号一致时候才会提升到顶层,而 lerna 会进到每个 package 执行 yarn/npm install,因此会在每个 package...这类一般都是一些开发依赖,比如将 ts 代码转换成 es5 代码或者一些代码校验工具等。通过这种方式安装依赖装在根目录下 node_modules 。...给所有的 package 都安装依赖 比如如果想给每个 package 都安装一个 lodash ,就可以使用 yarn workspace add lodash 给每个 package 都安装 lodash...,表示暂存区,lint-staged 表示只检查暂存区文件。...lerna puplish lerna publish 时候会做以下操作: 找出从上一个版本发布以来有过变更 package 提示开发者确定要发布版本号 将所有更新过 package package.json

    1.9K20

    使用NPM

    然后 npm install express安装 会出现node_modules文件夹 ? node_modules文件夹就是所有安装位置。...他是一个文件,他可以记住所有安装信息,包括名称、版本信息。 如果我们迁移项目,我们就能够知道安装了什么。...因为node_modules目录中文件比较大,而且不放在版本控制(github等),也不是源码一部分,我们只要知道node_modules里安装一些名字就可以了,根本不需要这个目录内容。...package.json就是记录所有安装信息文件。 生成方法 运行npm init初始化一个项目。...如果直接在命令行里输入http-server,那么会访问到/usr/local/bin这个路径里http-server文件 如果只安装在了局部项目里,想用的话就去当前目录下去找http-server

    1.1K30

    一文全面了解pnpm、yarn、cnpm、npx、npm使用(强烈建议收藏)

    可靠:使用详细但简洁锁定文件格式和确定性安装操作算法,Yarn能够保证在一个系统上运行任何安装在另一个系统上将完全相同。 安全:在执行代码之前,Yarn使用校验和来验证每个安装完整性。...所有文件都会存储在硬盘上某一位置。当软件包被被安装时,文件会硬链接到这一位置,而不会占用额外磁盘空间。这允许你跨项目地共享同一版本依赖。...默认情况下,任何新软件都安装为生产依赖项。...从 node_modules 和项目的 package.json 删除相关 packages。...精华文章 新一代包管理工具 pnpm 使用心得 https://zhuanlan.zhihu.com/p/546400909 关于现代包管理器深度思考——为什么现在更推荐 pnpm 而不是 npm

    4.5K30

    使用 pnpm 构建 Monorepo 项目

    在 root package.json deps 是所有子 package 共用。...pnpm 相比 yarn,npm,yarn PnP 安装更快速,对依赖管理更偏平,对磁盘占用也有优势。 具体可以参考这篇文章: 为什么现在更推荐 pnpm 而不是 npm/yarn?...为什么要使用 monorepo 使用 monorepo 可以把原本一个项目的多个模块拆分成多个 packages,在 packages 之间相互引用,也可以单独发布成,极大地解决了项目之间代码无法重用痛点...sh 1pnpm install react react-dom -w COPY 注意这里使用 -w 表示把装在 root 下,该会放置在 /node_modules 下。...当然也可以把把安装在所有 packages ,使用 -r 代替 -w。你必须使用其中一个参数。

    3.8K10

    Vue学习笔记之NodejsNPM使用

    0x00 NPM是什么 ? ? 简单说,npm就是JavaScript包管理工具。类似Java语法maven,gradle,pythonpip。 0x01 NPM安装 傻瓜式安装。...为了避免环境变量出现额外问题,winodows用户将nodejs统一安装在c盘,mac电脑直接安装。...ok,到目前为止,我们软件都安装好了。 既然我们知道npm它能够管理我们,也就是我们所谓模块。 那么,比如在之前我们使用到jquery框架,bootstrap框架。...都可以使用npm去下载了。 0x02 NPM安装 我们在桌面上创建一个文件夹/01-studyNpm。 注意:千万不要起名成:node、npm这样文件夹,以免与系统软件产生不必要冲突。...执行以上命令,便可以安装对应到执行命令的当前目录,并创建一个node_modules文件夹,然后把需要安装安装包下载到里面。 打开package.json文件会发现: ?

    91040

    最高性能包管理器-pnpm

    pnpm 默认创建了一个非平铺 node_modules,因此代码无法访问任意 npm 和 yarn 包管理机制 npm@3 之前 采用是一种嵌套安装方式。...幻影依赖指的是 node_modules 依赖包在没有 package.json 声明情况下使用了其他依赖 依赖结构不确定性。这里为什么是 D@2.0.0 提升,而不是 D@10.0?...node_modules node_modules 只有直接依赖,而没有间接依赖。...Store pnpm在全局通过Store来存储所有node_modules 依赖,并且在 .pnpm 存储项目的hard links 在使用 pnpm 对项目安装依赖时候,如果某个依赖在 sotre...pnpm/bar@1.0.0/node_modules/bar@1.0.0 又通过硬链接指向 Store bar@1.0.0 依赖foo@1.0.0 会安装在跟自己同一级,这里设计,理解是根据

    1.7K20

    如何使用 npm 执行本地安装 npm 二进制文件

    全局安装:当你使用 npm install -g package-name 命令时,这个会被安装到你全局 node_modules 目录,并且它二进制文件会被放置到全局 bin 目录。...当你执行 npm install package-name(不带 -g 参数)时,会被安装到当前项目的 node_modules 目录,而对应二进制文件会被放置到 node_modules/.bin...你可以在这些脚本中直接调用安装在项目中 npm 二进制文件,而无需指定完整路径。...为什么使用本地安装 npm ?使用本地安装 npm 有几个显著优势:项目隔离:每个项目可以有自己依赖和版本,确保不同项目之间依赖不会冲突。...这在开发多个项目时非常重要,因为不同项目可能需要不同版本同一。版本一致性:通过本地安装,你可以确保团队所有成员使用相同版本依赖。这有助于避免由于依赖版本不一致而导致问题。

    8410

    2015年至今,包管理器与node_modules都发生了什么?

    node_modules对做web领域开发前端同学们可能都不陌生,不知道大家在平时有没有遇到过npm依赖地狱问题,或者是想看看node_modules代码时被复杂目录结构劝退情况。...module_C 其实很容易理解,只有直接依赖于项目的才会放在node_modules直接目录。...node_modules module_D module_B module_C module_D 此时在npmv3版本,module_D ^2.0.0被安装在了父级目录...所以从目前来看,pnpm符号链接认为似乎是最合理方式,通过一个引用符号,指向具体依赖,那么为什么npm v3或者yarn当时没有选择采用这样方式呢? 难道因为windows路径字符限制?...当包管理器创建node_modules时,会从缓存复制一大堆文件,这是安装慢主要原因。

    20640
    领券