首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

NPM基本介绍(一)

是在模块基础上更深一步的抽象,Node.js的类似于C/C++的函数库或者java的类库,它讲某个独立的功能封装起来,用于发布、更新依赖管理的版本控制。...1、扁平化依赖 扁平化依赖 扁平化安装过程 2、模块安装过程 npm v2解析依赖关系 这个版本下安装依赖使用嵌套安装依赖 ?...八、npm缺陷 频繁使用的代码创建了太深的依赖关系树,导致 Windows 上很长的目录路径问题(虽然v3版本使用扁平化算法进行优化。...但是有时候也避免不了) 当被不同的依赖关系需要时,代码会被复制粘贴多次,比较占存储空间 扁平化依赖树的算法相当复杂 不能保证同一份package.json在不同机器上安装着相同的依赖,可能间接导致错误...npm与yarn缓存对比 为什么不使用shrinkwrap(lock) pnpm介绍 三大包管理进行对比

1.5K20

前端包管理工具 npm yarn cnpm npx

这也就是今天要和大家分享的包管理工具 包管理工具npm 概述 npm 全称Node Package Manager node包管理工具,现在已经不仅仅局限于node,在前端项目里我们也使用他来管理依赖...不能发布它main 属性 设置程序的入口 当前的入口文件 注意区别webpack入口文件的概念,不是一个东西。...支持到哪个版本的浏览器,和babel 配置强相关,可暂时先不关心,等之后我们可以专题讨论babel这里的知识 依赖版本管理 npm 版本一般规范为为X.Y.Z X 为主版本号 一般为大版本更新,可能不兼容之前的版本...文件 分析依赖关系,这是因为我们可能依赖其他的,并且多个之间会产生相同依赖的情况; 从registry仓库中下载压缩(如果我们设置了镜像,那么会从镜像服务器下载压缩); 获取到压缩后会对压缩进行缓存...(从npm5开始有的) 将压缩解压到项目的node_modules文件夹中 有package-lock.json文件 检测lock中的版本是否和package.json中一致 不一致,那么会重新构建依赖关系

80420

npm

npm,最终解决插件与所依赖不一致的问题。...Npm查看某个的版本信息 npm view express versions tree -d node_modules/ 查看依赖关系 npm ls 可以看到模块间彼此依赖关系 在package.json...npm2所有项目依赖是嵌套关系,而npm3为了改进嵌套过多、套路过深的情况,会将所有依赖放在第二层依赖中(所有依赖只嵌套一次,彼此平行,也就是平铺的结构) 下面来搬个砖,简单翻译一下: 举个例子:...没关系,执行 npm ls依然可以看到模块间彼此依赖关系: image.png 如果你想查看最浅层的依赖关系,只需要:npm ls --depth=0 image.png 3....NPM 常用场景的组合命令 3.1 npm更新package.json中依赖的版本到最新 安装:npm install npm-check-updates -g、npm install npm-check

1.4K10

什么时候不能在 Node.js 中使用 Lock Files

但是当你在开发要发布到 npm时,应避免使用这类 lock file 。在本文中,我们将讨论为什么要这样。...lock file 描述了整个依赖关系树,它在创建时被解析,包括具有特定版本的嵌套依赖关系。在 npm 名为 package-lock.json ,在 yarn 中名为 yarn.lock。...每个依赖项的依赖项 已解决的软件中用校验和验证软件的完整性 既然 lock file 中已经列出了所有的依赖项,拿为什么还要将它们写在 package.json 中呢?...那么当我们编写要发布到 npm 的库时,为什么不能做同样的事呢?要回答这个问题,首先要讨论发布的工作原理。...摆脱了 package-lock.json 并不意味着无法固定我们所拥有的依赖关系和子依赖关系。我们可以用另一个名为 npm-shrinkwrap.json 的文件。

1.4K30

为什么要使用 package-lock.json

如果 express 在下载该模块并尝试安装依赖项时发布了新版本,则可以下载最新版本。...上面的问题是,如果 4.17.x 版本存在一个错误,则的本地设置将会失败,但是发布商的版本将继续在旧版本上正常运行。 在生产环境中可能会发生同样的事情,并且你不知道为什么它会失败。...如果有人手动更改 package.json(例如,他们删除了一个软件,因为这只是删掉一行),那么下次有人运行 npm install 时,它将更改 package-lock.json 以反映对先前软件的删除...npm update update 将会读取 package.json,用来查找可以更新的所有依赖项。随后它将构造一个新的依赖关系树并更新 package-lock.json。 还记得语义版本控制吗?...你可以用 npm install 安装特定的依赖项。 仅在需要本地依赖关系树时,甚至在本地开发环境中,都可以在所有地方使用 npm ci。 为你依赖关系更新做一个重复的任务,例如每月一次。

1.3K20

前端包管理工具与配置项

包管理工具 包管理工具顾名思义就是统一管理这些轮子的软件或者工具,它以多种方式自动处理项目依赖关系、提供了命令行工具(CLI)、支持跟踪依赖项和版本等功能,除此之外还可以安装、卸载、更新和升级,配置项目设置...简单的说: 就像一个大仓库,仓库里雇佣了很多机器人,你只需要往仓库里丢东西即可,仓库里的机器人会自动给我们进行依赖分类,如果需要一些个性化的服务,那么我们进行配置一下就可以了,就可以按所配置的方式进行工作...将所有第三方依赖放在 node_modules 这个文件目录下,我们在增加,删除,升级依赖也只是更新这个文件下的相关依赖。...是生产环境的依赖项 卸载模块 $ npm uninstall express 卸载后,你可以到 /node_modules/ 目录下查看是否还存在,或者使用以下命令查看: $ npm ls 更新模块...list grunt npm 卸载 $ npm uninstall 名 查看卸载的是否存在 npm ls npm 更新 npm update npm 搜索 npm search npm

39510

很多人上来就删除的package-lock.json,还有这么多你不知道的!

首先要从最近接连出现两起有关 npm 安装 package.json 中依赖,由于依赖版本更新 bug 造成项目出错问题说起。...这个是由于插件的依赖更新出现的问题,直接去锁定当前插件没有作用,不会对它的依赖包产生约束(依赖还是会去下载最新版本的)。的临时解决办法是尝试将版本回退到后一个版本并锁定。...可以发现与 npm install 不同的是: yarn.lock 中所有依赖描述都是扁平化的,即没有依赖描述的嵌套关系; 在 yarn.lock 中, 相同名称版本号不同的依赖,如果 semver...所以这就是为什么之前你用 npm 安装产生了 package-lock.json,后面的人用 cnpm 来安装,可能会跟你安装的依赖不一致。...注意:仅能锁定当前依赖版本,不能控制整棵依赖树版本。 npm+npm-shrinkwrap.json。 npm+package-lock.json。 yarn+yarn-lock.json。

3.5K50

【转载】package-lock.json的作用

因为npm是一个用于管理package之间依赖关系的管理器,它允许开发者在pacakge.json中间标出自己项目对npm各库依赖。...4、package.json缺点   原来package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次npm install都是拉取的该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖的...5、安装依赖出问题的解决方式不同:   那如果我们安装时的有bug,后面需要更新怎么办? 以前:在以前可能就是直接改package.json里面的版本,然后再npm install了。...例如: 假如我已经安装了Verdaccio 4.1.4这个版本,从git更新了package.json和package-lock.json,npm install能覆盖掉node_modules里面的依赖吗...其实也有这个疑问,所以做了测试,在直接更新package.json和package-loc.json这两个文件后,npm install是可以直接覆盖掉原先的版本的,所以在协作开发时,这两个文件如果有更新

3.3K50

yarn的安装和使用:Yarn 快速上手指南

本文囊括了大量与Node.js、npm、包管理、项目依赖等词。 引言 大家好,是猫头虎博主,今天带领大家学习的是一个对任何现代Web开发者来说都不可或缺的工具——Yarn。...Yarn是一个高效、安全且快速的JavaScript包管理工具,它能帮助开发者在项目中管理复杂的依赖关系。那么,我们为什么要学习Yarn,以及它是如何在开发中发挥作用的呢?让我们一起深入探索。...正文 Yarn介绍 Yarn是Facebook于2016年推出的一个新的JavaScript包管理器,旨在解决npm在处理大量时速度慢和依赖管理混乱的问题。...添加依赖 yarn add [package_name] 将一个新的添加到您的项目依赖中。 更新依赖 yarn upgrade [package_name] 更新项目中的某个。...package] 更新依赖 yarn upgrade [package] npm update [package] 移除依赖 yarn remove [package] npm uninstall [package

72810

开发中遇到过的 NPM 疑惑解答

name & version 如果想要发布一个npm,name和version属性是必须的。他们两个组合会形成一个唯一的标识来表名当前。以后每更新一次,version就需要进行相应的更改。...有作用域的名字可以以.或者_开头,没有作用域限制的不可 不能含有大写字母 不能含有非URL安全的字符 version字段 版本号需要符合semver(语义化版本号)规则,具体版本格式为:主版本号.次版本号...每当npm install执行的时候,npm都会产生或者更新package-lock.json文件。...为什么有的可以被安装在根目录的node_modules中,有的却只能安装在自己包下面的node_modules中?这就涉及到npm的安装机制。...默认情况下,只会列出项目中顶层依赖的过时信息。如果想要更深层的查看,可以加上depth参数,如npm-outdated \--depth=1 以下是在的项目中执行npm-outdated的部分结果。

1.4K10

npm 常用配置

-g ls 显示全局安装的 npm i/install --save xxx 安装信息将加入到dependencies(生产阶段的依赖npm i/install --save-dev xxx 安装信息将加入到...devDependencies(开发阶段的依赖),所以开发阶段一般使用它 npm i --save-exact xxx 精确安装版本,package.json里的依赖的value是具体的版本号,前边没有符号... 查看依赖关系 npm view moduleName repository.url 查看的源文件地址 npm view moduleName engines 查看依赖的node版本 npm...outdated 检测显示过时的 npm update 更新 npm uninstall 卸载 npm init 在项目中引导创建一个package.json文件 缩写选项: Shorthands...这层抽象所建立的插件生态带来了很多问题: 额外的抽象,带来了额外的学习成本; 插件依赖作者,无论是插件质量、设计合理性、文档、更新及时性等严重依赖作者自身的水平与投入; 为什么 npm scripts

1.6K30

pnpm 是凭什么对 npm 和 yarn 降维打击的

大家最近是不是经常听到 pnpm,也一样。今天研究了一下它的机制,确实厉害,对 yarn 和 npm 可以说是降维打击。 那具体好在哪里呢?我们一起来看一下。...node_modules 的: 当然也有的还是有 node_modules 的,比如这样: 为什么还有嵌套呢?...但是这样是有隐患的,因为没有显式依赖,万一有一天别的依赖这个包了,那你的代码也就不能跑了,因为你依赖这个,但是现在不会被安装了。 这就是幽灵依赖的问题。...pnpm 回想下 npm3 和 yarn 为什么要做 node_modules 扁平化?不就是因为同样的依赖会复制多次,并且路径过长在 windows 下有问题么?...展开 .pnpm 看一下: 所有的依赖都在这里铺平了,都是从全局 store 硬连接过来的,然后之间的依赖关系是通过软链接组织的。

67010

基于 Yarn WorkSpace + Lerna + OrangeCI 搭建 Typescript Monorepo 项目实践

名词解释: Orange CI:腾讯内部开源的持续集成服务,类似于 Travis CI,一旦代码有变更,就自动运行构建和发布,并输出结果,是实现自动更新版本号及发布npm的基础。...yarn why  命令,能提示为什么安装一个 package,还有什么 package 是依赖该 package,这就方便我们方便理清 monorepo 的依赖关系。...这里就涉及到项目构建的执行顺序问题,实际上是要求项目以一种拓扑排序的规则进行构建,这里我们有两种解决方案: 使用lerna run构建所有 package,并依靠lerna通过查看每个 package 的依赖关系以正确的顺序构建软件...所以当 package 的依赖没发布到 npm 前,npm install 该 package 时,npm 就会报错。...--yes:运行 lerna version、lerna publish 将跳过所有确认提示 临时发布 npm 当开发者开发基础库时,需要在业务测试该 package,但不能以 release 的版本号发布

3.7K42

Node入门教程(7)第五章:node 模块化(下) npm与yarn详解

参考一个express框架的的配置文件: // 以下,并不是完整的,截取了部分内容。...$ npm install gulp --global # 简写 $ npm i -g gulp # 安装成功后,我们就可以随时随地都可以运行gulp命令了 $ gulp -v 更新安装 更新本地的安装...那为什么Facebook再造一个重复的轮子呢? 在yarn之前的npm版本的问题:(当然部分问题已经修复) npm 安装(packages)的速度不够快,是顺序下载,不是并行。...不管安装顺序如何,相同的依赖关系将在每台机器上以相同的方式安装。 将依赖的不同版本归结为单个版本,以避免创建多个副本。 重试机制确保单个请求失败并不会导致整个安装失败。...] yarn add [package]@[version] yarn add [package]@[tag] # 对应npm npm install [package] 更新一个依赖 yarn upgrade

1K60

一场升级 React-Router 带来的‘血案’

那么首先思考一下:为什么会出现本地和线上不一致的情况发生? 线上和本地不一致,那么这种情况下,第一个应该想到的就是,是不是线上的依赖和本地的有区别。...那么又引出了一个新的问题,小明压根儿没有更新过项目依赖,那么为什么会造成依赖的差别呢?...这个本质上和 npm 安装机制有关系,也就是比如你的项目依赖了 x.x.x 版本的 a 模块,那么部署上线后项目中就一定安装 x.x.x 版本的 a 吗?...npm 版本安装机制 ^ 在package.json中代表什么意思,原来在 package.json 中 ^ 会匹配最新的大版本依赖。...依赖版本对应关系 符号 例子 范围 说明 ^会匹配最新的大版本依赖 ^1.2.3 >=1.2.3 <2.0.0、 表示安装1.x.x的最新版本(不低于1.2.3,包括1.3.0),但是不安装2.x.x

1.4K30
领券