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

为什么本地安装的项目的node_modules文件夹与全局安装的项目存在差异?

本地安装的项目的node_modules文件夹与全局安装的项目存在差异是因为它们分别用于不同的目的和环境。

  1. 本地安装的项目的node_modules文件夹: 本地安装的项目一般是指我们在开发过程中创建的具体项目,它们通常包含了项目所需的依赖库和模块。当我们在项目中使用npm(Node.js的包管理工具)安装依赖时,这些依赖会被下载到项目的根目录下的node_modules文件夹中。每个项目都有自己独立的node_modules文件夹,用于存放该项目所需的依赖。
  2. 优势:
    • 项目隔离性好:每个项目有自己独立的node_modules文件夹,不同项目之间的依赖不会相互干扰,提高了项目的隔离性。
    • 版本控制:将依赖安装在本地项目中,可以更好地控制和管理项目所需的特定版本依赖。
    • 应用场景:
    • 在本地开发中,我们常常需要根据具体项目的需求安装相应的依赖。将依赖安装在本地项目中可以确保每个项目的依赖环境独立、稳定和可重现。
    • 腾讯云相关产品和产品介绍链接地址:
    • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
    • 腾讯云云开发(CloudBase):https://cloud.tencent.com/product/tcb
  • 全局安装的项目: 全局安装的项目是指我们安装的一些全局性的命令行工具或者框架,如vue-cli、create-react-app等。这些工具和框架通常需要在命令行中全局调用,因此它们被安装在全局的node_modules文件夹中。
  • 优势:
    • 全局访问:全局安装的工具和框架可以在命令行中直接调用,无需每次都在特定项目中安装。
    • 全局共享:全局安装的工具和框架可以被多个项目共享使用,避免了重复下载和安装的问题。
    • 应用场景:
    • 在开发过程中,我们常常需要使用一些全局性的命令行工具或者框架,如创建新项目的脚手架工具等。
    • 腾讯云相关产品和产品介绍链接地址:
    • 腾讯云云开发 CLI:https://cloud.tencent.com/document/product/876/46986

综上所述,本地安装的项目的node_modules文件夹与全局安装的项目存在差异是因为它们分别用于不同的目的和环境,本地安装的node_modules文件夹用于存放项目的依赖,而全局安装的node_modules文件夹用于存放全局命令行工具和框架。这种差异性设计可以提高项目的隔离性和依赖管理的灵活性。

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

相关·内容

包管理工具

#包管理工具功能 处理和编写元数据 批量安装或更新所有依赖 添加、更新和删除依赖 运行脚本 发布软件包 进行安全审查 #简史 第一个发布软件包管理器是 npm ,早在 2010 年就已经存在了。...node_modules 不同依赖解析算法,嵌套 VS 扁平化 不同安全问题 不同锁文件格式,有性能影响 在磁盘上存储包不同方式,对磁盘空间有效率影响 对多包(单一代码库)项目的不同支持 不同程度可配置性和灵活性...中存储依赖、自定义脚本、公共和私有包注册等概念都是 npm 引入 #Yarn (v1) Yarn 是 Facebook 宣布谷歌和其他一些公司开发新软件包管理器,主要解决 npm 当时存在一致性...这是通过 node_modules 层实现,使用符号链接创建一个嵌套依赖关系结构,其中文件夹每个包都是到存储硬链接。 这是为什么 pnpm 会在快速和磁盘效率上有大幅提升原因。...依赖管理 #依赖结构 安装依赖时原理: 将依赖包版本区间解析为某个具体版本号 下载对应版本依赖 tar 包到本地离线镜像 将依赖从离线镜像解压到本地缓存 将依赖从缓存拷贝到当前目录 node_modules

2.7K20

从npm发展历程看pnpm高效

,后面我们会针对npm发展历史中存在问题 来对比说明,pnpm提出动机,pnpm 优势在哪里,为什么具备这些优势。...npm v1/v2 嵌套依赖 最开始其实没有注重npm包管理,只是简单嵌套依赖,这种方式层级依赖结构清晰 但是随着npm包增多,项目的迭代扩展,重复包越下载越多,造成了空间浪费,导致前端本地项目node_modules...如下图所示,A 依赖C 被提升到了顶层,如果后续有安装包,也依赖C,会去上一级node_modules查找,如果有相同版本包,则不会再去重复下载,直接从上一层拿到需要依赖包C 说明:为什么自己...通过package-lock.json,保障了依赖包安装的确定性兼容性,使得每次安装都会出现相同结果。...pnpm 弊端 调试问题 所有项目引用包都在全局一个地方,如果想对某个包进行调试,其他项目正好引用了,本地运行也会收到影响。

2K40
  • 果断放弃npm切换到pnpm--节约磁盘空间(256G硬盘救星)

    不管是 npm3 还是 yarn 都采用扁平化 node_modules 文件夹方式,以此避免引入层级过深、相同依赖版本重复等问题。 随着公司业务不断壮大,团队支撑项目越来越多。...由于依赖是跟随项目的,导致磁盘空间占用严重。 由于上述原因,开始尝试使用 pnpm 来进行管理。...节约磁盘空间 pnpm 依赖将存储在一个全局内容可寻址仓库中(${os.homedir}/.pnpm-store),具体项目中使用依赖采用硬链接方式,而不是进行复制。...对于每个模块每个版本只保留一个副本。如:本地有10个项目依赖相同 vue 版本,如果使用 npm 或 yarn 时本地磁盘需要有 10 个 vue 副本;而 pnpm 只有1个。...如果你用到了某依赖不同版本,那么只会将有差异文件添加到仓库(公共仓库)。 所有文件都会存储在硬盘上同一位置。

    1.7K10

    果断放弃npm切换到pnpm--节约磁盘空间(256G硬盘救星)

    不管是 npm3 还是 yarn 都采用扁平化 node_modules 文件夹方式,以此避免引入层级过深、相同依赖版本重复等问题。 随着公司业务不断壮大,团队支撑项目越来越多。...由于依赖是跟随项目的,导致磁盘空间占用严重。 由于上述原因,开始尝试使用 pnpm 来进行管理。...节约磁盘空间 pnpm 依赖将存储在一个全局内容可寻址仓库中(${os.homedir}/.pnpm-store),具体项目中使用依赖采用硬链接方式,而不是进行复制。...对于每个模块每个版本只保留一个副本。如:本地有10个项目依赖相同 vue 版本,如果使用 npm 或 yarn 时本地磁盘需要有 10 个 vue 副本;而 pnpm 只有1个。...如果你用到了某依赖不同版本,那么只会将有差异文件添加到仓库(公共仓库)。 所有文件都会存储在硬盘上同一位置。

    3.3K20

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

    这只是最简单例子,实际工程项目中,依赖树不可避免地会有很多层级,很多依赖包,其中会有很多同名但版本不同存在于不同依赖层级,对这些复杂情况, npm 3 都会在安装时遍历整个依赖树,计算出最合理文件夹安装方式...B 在一个月后根据它执行 npm install 所得到 node_modules 结果很可能许多包都存在不同差异,虽然 semver 机制限制使得同一份 package.json 不会得到大版本不同依赖包.../node_modules/.bin/ 目录添加到执行环境 PATH 变量中,因此如果某个命令行包未全局安装,而只安装在了当前项目的 node_modules 中,通过 npm run 一样可以调用该命令...所以这里就引出了一个最佳实践: 将项目依赖命令行工具安装项目依赖文件夹中,然后通过 npm scripts 调用;而非全局安装 举例而言 webpack 作为前端工程标配构建工具,虽然我们都习惯了全局安装并直接使用命令行调用...6.3 node 版本约束 虽然一个项目的团队都共享了相同代码,但每个人开发机器可能安装了不同 node 版本,此外服务器端也可能与本地开发机不一致。

    6.6K160

    带你深入了解NPM——NPM初学者指南

    包基本上是包含您需要代码文件夹,您可以在本地全局安装它。 本地安装 本地安装意味着您实际上将文件下载到项目的文件夹中。在其中,您将找到一个您未创建目录,称为“node_modules”。...全局安装包不会添加到package.json文件中,那么既然不会添加到package.json中,那么为什么安装全局安装呢?...例如,mocha要求您在全局本地安装它,以便拥有一个名为“mocha”CLI工具,并能够在本地项目上运行测试。 全局包在需要添加到PATH环境变量常规路径中创建符号链接(或快捷方式)。...ci:几乎npm install用于自动化环境(例如持续集成过程)相同。此命令比此命令更严格,install并确保安装始终是干净(如果存在,它会自动删除node_modules文件夹)。...如果您不希望每次运行此命令时都安装最新版本,则还可以指定要安装版本(对于自动环境(如CI / CD)尤其有用)。 ls:列出当前项目的所有已安装软件包。您可以列出全局包或本地安装包。

    1.8K20

    npm,pnpm,yarn,npx那些事儿

    npm 引入了文件和元数据字段,将依赖列表存储在 package.json 文件中,并且将下载文件保存到 node_modules 文件夹中。...pnpm 和 npm, yarn管理策略不同,它通过引入内容可寻址存储来提升性能。通过生成嵌套 node_modules 文件夹,每个版本依赖仅仅物理存储一次,节省了大量磁盘空间。...pnpm pnpm 项目的初始状态看起来就像一个 npm 项目一样,也是有 package.json 文件 和 node_modules 文件夹,不同是在 node_modules 文件夹中, 它有自己文件夹目录...此外,对于一些全局命令,如果不存在,它会自动下载安装到一个临时目录,然后使用,不会污染全局空间。 结论 包管理器的当前状态非常好。我们几乎在所有主要包管理器中实现了功能平等。...但是,它们在引擎盖下确实存在很大差异。 pnpm 起初看起来像 npm,因为它们 CLI 用法相似,但管理依赖却大不相同;pnpm 方法带来更好性能和最佳磁盘空间效率。

    1.3K20

    了解可执行NPM包

    中所填写name字段 global local 区别 因为npm link执行特性,会将global+local依赖都进行安装,所以在使用上不太好体现出两者差异,所以我们决定将代码直接拷贝到.../server.js" } } 两者混用会带来问题 这样项目在你本地使用是完全没有问题,但是如果有其他同事需要运行你这个项目,在第一步执行npm start时就会出异常,因为他本地可能并没有安装...,koa模块是没有问题,因为都是存在于这些路径下node_modules,而express则只存在于/node_modules/test-util/node_modules下,全局调用下...# 执行脚本所处位置 └── # 本地项目 ├── node_modules │ └── express └─...所以这也从侧面说明了为什么webpack可以直接在自己文件中引用并不存在于自己模块下依赖。

    1.4K10

    基于pnpm + lerna + typescript最佳项目实践 - 理论篇

    尽管它使安装速度更快,并且具有一些不错新功能,但它使用npm相同平面node_modules结构(自版本 3 起)。扁平化依赖树带来了一系列问题(具体后面会讲) 为什么叫pnpm?...嵌套安装 在 npm@3 之前,node_modules结构是干净、可预测,因为node_modules每个依赖都有自己node_modules文件夹,在package.json中指定了所有依赖...通过前面的讲解,我们知道了pnpm在全局通过Store来存储所有的node_modules依赖,并且在.pnpm/node_modules中存储项目的hard links,通过hard link来链接真实文件资源...语义化版本 前端中包应该遵循语义化版本(也称为“semver”,来源于荷兰语)规范。当你从registry安装package时,它将会使用语义化版本添加到项目的package.json中。...33] lerna version 更改自上次发布以来包版本号 前往[34] lerna bootstrap 将本地包链接在一起并安装剩余包依赖 前往[35] lerna list 列出本地包 前往

    3.5K20

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

    本地安装 npm 包在 Node.js 项目中,npm 包可以以两种方式安装全局安装(global installation)和本地安装(local installation)。...例如,全局安装 typescript 后,可以直接在命令行中输入 tsc 来执行 TypeScript 编译器。本地安装本地安装是指将 npm 包安装项目的 node_modules 目录下。...为什么使用本地安装 npm 包?使用本地安装 npm 包有几个显著优势:项目隔离:每个项目可以有自己依赖包和版本,确保不同项目之间依赖不会冲突。...使用本地安装 npm 包,可以确保流水线中使用工具版本开发环境一致。...因为依赖包是本地安装,CI 流水线不会受到开发者本地环境中可能存在全局影响,从而确保构建一致性和可重复性。总结本地安装 npm 包二进制文件在 Node.js 项目中起着至关重要作用。

    8410

    npm、yarnpnpm详解

    每次安装包时,npm会遍历依赖树并创建相应子目录来存放每个依赖包。 缓存机制:npm有本地缓存机制,用于加快重复安装速度,但它并不像Yarn那样强制一致性全局缓存。...当多个项目共享相同依赖时,这些依赖可能会在每个项目的node_modules目录下单独复制一份。...这种机制通过store(存储)目录集中管理所有的包版本,极大程度上减少了磁盘空间占用。 高效安装卸载:pnpm在安装时能够识别出哪些包已经存在全局存储中,并通过硬链接指向它们,而非复制文件。...install yarn add/install pnpm install 缓存机制 本地缓存每个项目的依赖 共享缓存,保证多个项目依赖版本一致 共享存储层缓存,避免重复下载 安装速度 相对较慢,...尤其在网络不佳时 快于npm,支持并行安装 更快,充分利用磁盘空间和网络资源 磁盘空间占用 每个项目node_modules有完整副本,占用较多空间 同一依赖只在全局缓存一份 利用符号链接进一步减少磁盘占用

    35710

    npm常用命令

    #显示模块详情 npm update #升级当前目录下项目的所有模块 npm update express #升级当前目录下项目的指定模块 npm update -g express #升级全局安装...可以执行两种安装类型: 本地安装 默认情况下,输入命令 npm install 命令时,软件包会安装到当前文件树中 node_modules文件夹下 # npm 还会在当前文件夹存在 package.json...文件 dependencies 属性中添加 less 条目 npm install less 全局安装 使用 -g 标志可以执行全局安装 npm install -g less npm 不会将软件安装本地文件夹下...# 项目的根目录下执行 $ node-modules/.bin/mocha --version npx 就是想解决这个问题,让项目内部安装模块用起来更方便,只要像下面这样调用就行了。...npx mocha --version npx 原理很简单,就是运行时候,会到node_modules/.bin路径和环境变量$PATH里面,检查命令是否存在

    32350

    monorepo--依赖

    比 yarn link 更好机制,因为它只影响工作区树而不是整个系统(yarn link 会在全局/usr/local/bin 中增加相关记录,[见下述](###yarn link) 所有的项目依赖将一起安装...通过将子模块提升到其父项目的node_modules:monorepo/node_modules来在子项目/程序包之间共享模块。...至此,可以从项目的node_modules 访问所有模块,但我们通常会在其本地项目中构建每个程序包,这些模块在其自己 node_modules 下可能不可见。...项目副本 peerDependencies peerDependencies目的是提示宿主环境去安装满足插件peerDependencies所指定依赖包,然后在插件import或者require...所依赖时候,永远都是引用宿主环境统一安装npm包,最终解决插件所依赖包不一致问题。

    2.6K31

    npm 全面介绍

    为什么要使用 NPM npm 是随同 Node.js 一起安装包管理工具,能解决 Node.js 代码部署上很多问题,常见场景有以下几种: 允许用户从 npm 服务器下载别人编写第三方包到本地使用...“本地安装”指的是将一个模块下载到当前项目的 node_modules 子目录,然后只有在项目目录之中,才能调用这个模块。...本地模式和全局模式特点如下: 模式 可通过 require 使用 注册 PATH 本地模式 是 否 全局模式 否 是 # 本地安装 $ npm install # 全局安装...,npm install 会先检查,node_modules 目录之中是否已经存在指定模块。.../node_modules/.bin 创建全局链接 npm 提供了一个有趣命令 npm link,它功能是在本地包和全局包之间创建符号链接。

    1.2K30

    入门Webpack(上)

    写在前面的话 阅读本文之前,先看下面这个webpack配置文件,如果每一你都懂,那本文能带给你收获也许就比较有限,你可以快速浏览或直接跳过;如果你和十天前我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本文...//全局安装 npm install -g webpack //安装到你项目目录 npm install --save-dev webpack 正式使用Webpack前准备 在上述练习文件夹中创建一个...package.json文件已经就绪,我们在本项目安装Webpack作为依赖包 // 安装Webpack npm install --save-dev webpack 回到之前文件夹,并在里面创建两个文件夹...node_modules地址,继续上面的例子,在终端中属于如下命令 //webpack非全局安装情况node_modules/.bin/webpack app/main.js public/bundle.js...现在如果你需要打包文件只需要在终端里你运行webpack(非全局安装需使用node_modules/.bin/webpack)命令就可以了,这条命令会自动参考webpack.config.js文件中配置选项打包你项目

    1.1K90

    NPM 学习笔记整理

    为什么要使用 NPM npm 是随同 Node 一起安装包管理工具,能解决 Node 代码部署上很多问题,常见场景有以下几种: 允许用户从 npm 服务器下载别人编写第三方包到本地使用。...“本地安装”指的是将一个模块下载到当前项目的 node_modules 子目录,然后只有在项目目录之中,才能调用这个模块。...本地模式和全局模式特点如下: 模式 可通过 require 使用 注册 PATH 本地模式 是 否 全局模式 否 是 # 本地安装 $ npm install # 全局安装...,npm install 会先检查,node_modules 目录之中是否已经存在指定模块。.../node_modules/.bin 创建全局链接 npm 提供了一个有趣命令 npm link,它功能是在本地包和全局包之间创建符号链接。

    66000

    npm 和 yarn 你选哪个?

    首先,要了解为什么要做出一个有趣决定,我们需要看一下 javascript 中包管理历史。 npm 出现之前:前端依赖是保存到存储库中并手动下载?...2012-2016:前端项目的依赖项数量成倍增加? 2012-2016:构建和安装前端应用变得越来越慢?...2012-2016:大量(重复)依赖存储在神奇 node_modules嵌套文件夹中 ☢️ 2012-2016:rm -rf node_modules 成为前端开发人员最常用命令。?...♀️ npm 检查要安装依赖安全漏洞 yarn 和 npm 构建时间不再有显差异 2019:tink 开始进入 beta 模式 ?...避免使用 node_modules,而是为项目每个依赖创建一个带有哈希值文件 尚未做好投入生产环境准备 … 哎… ? 如我们所见,yarn 发布后,npm 受到启发(并被迫?)

    1.3K20

    Node基础-CommonJS模块化规范

    [安装全局特点] 1.所有的项目都可以使用这个模块 ->容易导致版本冲突 ->安装全局模块,不能基于CommonJS模块规范调取使用(也就是不能在JS中通过REQUIRE调取使用) [安装本地特点...npm root / -g 查看本地项目或者全局环境下,NPM安装目录 安装全局目录下模块,但部分都会生成一个xxx.cmd文件,只要有这个文件,那么xxx就是一个可执行命令(例如:yarn.cmd...可以,但是需要配置package.json中scripts 1.把模块安装本地,如果是支持命令操作(会在node_modulesbin中生成xxx.cmd命令文件,只不过这个文件无法在全局下执行...(执行脚本)执行 ->执行脚本时候,会到本地node_modulesbin文件加查找,没有的话,在向NPM安装全局目录下查找 3.NODE入门 NODE本身是基于CommonJS模块规范设计.../xxx 再或者 /xxx,这种自己制定路径模式,都是为了导入自定义模块,换句话说,想要导入自定义模块,必须加路径 require('xxx') 首先到当前项目的node_modules

    64220

    前端包管理工具配置

    任何一个项目的构建离不开工具和统一管理标准,在项目开发和维护过程中,我们需要了解安装相应工具和配置文件,以此来有效进行项目的迭代和版本更新,为项目提供基本运行环境。...-D 安装到当前项目 并写入到devDependencies devDependenciesdependencies 区别: devDependencies 是本地开发时用依赖 dependencies...是生产环境依赖 卸载模块 $ npm uninstall express 卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看: $ npm ls 更新模块...并写入到devDependencies devDependenciesdependencies 区别: devDependencies 是本地开发时用依赖 dependencies 是生产环境依赖...安装依赖包 npm install 会将package.json 里面的devDependencies和dependencies下所有包都会下载到项目的node_modules文件夹下(没有的改文件夹会新建一个

    49910
    领券