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

NPM依赖包版本号~和^的区别及最佳实践

你会发现很多项目的依赖包版本号前面会加上~,或者是^,以Angular2为例: ? 那么~和^的作用和区别是什么呢?...~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0...当然你可以指定特定的版本号,直接写1.2.3,前面什么前缀都没有,这样固然没问题,但是如果依赖包发布新版本修复了一些小bug,那么需要手动修改package.json文件;~和^则可以解决这个问题。...使用^1.5.7造成的,1.6版本的包与现有代码不兼容。...所以建议使用~来标记版本号,这样可以保证项目不会出现大的问题,也能保证包中的小bug可以得到修复。

1.2K20

手把手教你用ggsci包绘制不同杂志风格的图形

各位科研芝士的小伙伴,今天给大家分享可视化专题学术期刊配色的绘制,我们的目标是学会Nature Publishing Group,American Association for the Advancement...论文图片风格的绘制,比如Nature杂志的出版的图片风格如下: ?...看到这两张图是不是突然觉得有一种眼前一亮的感觉,欲画此图,必装其包,今天的主角便是ggsci包 01 安装加载ggsci包,直接install和library即可 ?...02 加载demo数据和需要的工具包ggplot2,gridExtra,demo数据是diamonds数据集。 本质上讲ggsci只是ggplot2的拓展包而已 ,所以必须要加载ggplot2 ?...03 绘制一个散点图 首先采用ggplot2绘制一个散点图,可以看到x轴为table,y轴为price,用cut来映射颜色: ? 原始图形如下: ?

2.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用PackageDNA检测不同编程语言的软件包安全性

    关于PackageDNA PackageDNA是一款功能强大的代码安全检测工具。在很多场景中,我们往往会在自己的代码或项目中使用其他的软件包。...而该工具可以帮助广大开发人员、研究人员和组织分析采用不同编程语言开发的软件包安全,并提供相关软件包的安全信息,使我们能够提前知道此软件库是否符合安全开发流程。...PackageDNA可以帮助我们检测目标软件包中可能的后门、嵌入的恶意代码、输入错误分析、版本历史记录和CVE漏洞等信息。...不安装外部模块PackageDNA也能继续执行,但我们建议广大用户安装这些模块,以便工具执行完整的分析。...最新版本) [2] 分析包(所有版本) [3] 分析本地包 [4] 信息收集 [5] 上传文件并分析所有包 [6] 列出之前分析过的包 [7] 工具配置 [X] 退出 [*] -----

    52110

    快过年了,用五种不同的JS特效带你看烟花(包邮送元宇宙图书)

    今天给大家带来几个好看的基于 HTML+CSS+JS 的烟花特效 雪花 、 樱花 、 浪漫贺卡 以及 圣诞树 我前段时间刚做过,感兴趣的也可以看看我前几期的博客: 雪花:https://haiyong.blog.csdn.net...haiyong.blog.csdn.net/article/details/122008942 圣诞树和贺卡:https://haiyong.blog.csdn.net/article/details/122024043 目录 五种不同的...JS烟花特 一、简单大气的烟花 二、在农村看到的烟花 三、可点击的烟花 四、3D旋转烟花 五、可拖动视角的自定义烟花 评论区抽粉丝送书啦 ✨ 完整源码下载 五种不同的JS烟花特效 一、简单大气的烟花...演示地址:http://haiyong.site/fireworks1 HTML代码: 这里的HTML代码很简短 </div...演示地址:http://haiyong.site/fireworks2(需要使用电脑打开,没做响应式手机端打开一片黑,或者可以看看后面的烟花) HTML代码: 这里的HTML代码还是一样的简短

    1.9K41

    Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图「建议收藏」

    一般单我们在 pom.xml 添加了依赖包或是插件的时候,发现标注 4 的依赖区中没有看到最新写的依赖的话,可以尝试点击此按钮进行项目的重新载入。...第九个按钮:Show Dependencies 显示项目依赖的结构图,可以方便我们直观项目的依赖包情况。这个功能有些具体的操作下面会专门进行讲解。...如上图标注 5 所示,为常见的 Java Web 在 Maven 下的一个项目结构。 大致了解过后,看怎么查看所有jar包的依赖关系。 2017.2.6版本之后,这个图标的样子变啦。...点完之后就会有下图 可以看到,这个maven项目的所有jar包依赖关系,一览无余。 为什么我的这个jar包依赖这么少呢,因为我这个项目只是简单示范了一下springmvc框架的使用。...,spring-webmvc是依赖于spring-web的,所以,他是会自动的去添加这个jar包的。

    13.4K50

    你不知道的npm

    变更不同的版本号,代表不同的意义: 主版本号(major):软件做了不兼容的变更(breaking change 重大变更) 次版本号(minor):添加功能或者废弃功能,向下兼容 补丁版本号(patch...嵌套结构 在 npm 的早期版本中,npm 处理依赖的方式简单粗暴,以递归的方式,严格按照 package.json 结构以及子依赖包的 package.json 结构将依赖安装到他们各自的 node_modules...从上图这种情况,我们不难得出嵌套结构拥有以下缺点: 在不同层级的依赖中,可能引用了同一个模块,导致大量冗余 嵌套层级过深可能导致不可预知的问题 扁平结构 为了解决以上问题,npm 在 3.x 版本做了一次较大更新...其将早期的嵌套结构改为扁平结构。 安装模块时,不管其是直接依赖还是子依赖的依赖,优先将其安装在 node_modules 根目录。...dependencies: 依赖包node_modules中依赖的包,与顶层的dependencies一样的结构 这里注意,并不是所有的子依赖都有 dependencies 属性,只有子依赖的依赖和当前已安装在根目录的

    1.4K50

    前端工程化 - 剖析npm的包管理机制(完整版)

    NPM如何管理依赖包版本? npm install 原理分析 一、剖析 package.json ? 在 Node.js 中,模块是一个库或框架,也是一个 Node.js 项目。...在介绍整个依赖系统之前,必须要了解 npm如何管理依赖包的版本,本章将介绍 npm包 的版本发布规范、如何管理各种依赖包的版本以及一些关于包版本的最佳实践。 ?...但是,试想一下,如果你依赖的模块非常之多,你的 node_modules 将非常庞大,嵌套层级非常之深: ? 在不同层级的依赖中,可能引用了同一个模块,导致大量冗余。...其将早期的嵌套结构改为扁平结构: 安装模块时,不管其是直接依赖还是子依赖的依赖,优先将其安装在 node_modules 根目录。...npm 远程仓库下载包 校验包的完整性 校验不通过: 校验通过: 构建依赖树时,不管其是直接依赖还是子依赖的依赖,优先将其放置在 node_modules 根目录。

    3K93

    从 UNMET PEER DEPENDENCY 中理解依赖版本管理

    其实这正是模块分析工具的需求痛点,项目下的某个包,往往会在依赖树的不同节点,存在多种版本。在深究原因之前,我们需要了解平时常见的版本号规则,以及npm在install的时候是如何进行依赖管理的。...依赖版本管理规则 我们开发者在发布自己的npm包时,当然是力求功能稳定,往往会在package.json的dependencies字段对相关依赖设定不同程度的约束: "dependencies": {...当主版本号为 0 的情况,会被认为是一个不稳定版本,情况与上面不同: 主版本号和次版本号都为 0: ^0.0.z、~0.0.z 都被当作固定版本,安装依赖时均不会发生变化。...发布包的时候,我们也需要严格按SemVer规范来指定版本号,可以用semver这个npm包来帮助我们对版本号做一些比较。...npm install时会将dependencies中位置靠前的包中的依赖,提升到上一级,这是为了解决 npm 3.x 版本之前嵌套结构造成的模块冗余问题,当父级目录的lodash能够满足C包、D包等依赖的

    5.2K20

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

    例如:一个项目App直接依赖了A(version: 1.0)和C(version: 1.0),A和C都依赖了不同版本的B,其中A依赖B 1.0,C依赖B 2.0,可以通过下图清晰的看到npm2和npm3...+结构差异: image.png 包B 1.0被提升到了顶层,这里需要注意的是,多个版本的包只能有一个被提升上来,其余版本的包会嵌套安装到各自的依赖当中(类似npm2的结构)。...而在npm和yarn中,如何一个依赖被多个项目使用,会发生多次下载和安装! 如果是 npm 或 yarn,那么这个依赖在多个项目中使用,在每次安装的时候都会被重新下载一次。...有 peer 依赖的包的结构更加复杂[8]一些,但思路是一样的:使用软链与平铺目录来构建一个嵌套结构。...lerna 将在lerna version期间运行npm 生命周期脚本[16]: 侦测更改的包,选择版本号进行覆盖。 在根目录运行preversion。

    3.6K20

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

    为简单起见,我们假设应用目录为 app, 用两个流行的包 webpack, nconf 作为依赖包做示例说明。...而每一个包都有自己的依赖包,每个包自己的依赖都安装在了自己的 node_modules 中。依赖关系层层递进,构成了一整个依赖树,这个依赖树与文件系统中的文件结构树刚好层层对应。...如果是 A{B,C}, B{C,D@1}, C{D@2} 的依赖关系,得到的安装后结构是: A +-- B +-- C `-- D@2 +-- D@1 这里是因为,对于 npm 来说同名但不同版本的包是两个独立的包...4.2 依赖版本升级 问题来了,在安装完一个依赖包之后有新版本发布了,如何使用 npm 进行版本升级呢?...虽然 semver 约定了小版本号应当保持向下兼容(相同大版本号下的小版本号)兼容,但万一有不熟悉不遵循此约定的包发布者,发布了不兼容的包,此时就可能出现因依赖环境不同导致的 bug。

    6.6K160

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

    npm install后都会有一个package-lock.json,作用是什么? 1、锁定安装时的包的版本号,需要上传到git,保证大家的依赖包一致。...2、package-lock.json 是在 `npm install`时候生成一份文件,用来记录当前状态下实际安装的各个npm package的具体来源和版本号。 3、它有什么用呢?...因为npm是一个用于管理package之间依赖关系的管理器,它允许开发者在pacakge.json中间标出自己项目对npm各库包的依赖。...大多数情况这种向新兼容依赖下载最新库包的时候都没有问题,可是因为npm是开源世界,各库包的版本语义可能并不相同,有的库包开发者并不遵守严格这一原则:相同大版本号的同一个库包,其接口符合兼容要求。...这时候用户就很头疼了:在完全相同的一个nodejs的代码库,在不同时间或者不同npm下载源之下,下到的各依赖库包版本可能有所不同,因此其依赖库包行为特征也不同有时候甚至完全不兼容。

    3.3K50

    Electron安装过程深入解析(读完此文解决Electron安装失败导致的无法启动,无法打包的问题)

    , 请求上述地址(我用的是npm淘宝源)将得到一个json响应, json中包含了electron的所有版本的版本信息, 如果安装时我们没有为electron指定版本号,将安装最新的版本。...Electron包依赖的一个npm包, 由于自npm 3.x以来,npm把包管理方式从嵌套结构切换到了扁平结构,所以@electron/get位于当前工程的node_modules目录的根目录下。...拓展:在npm 3.x以前,npm的包管理方式是嵌套结构的, 也就是说一个工程安装的依赖包位于当前工程根目录下的node_modules目录中, 假设其中一个依赖包又依赖了其他npm包,我们假设这个依赖包叫做...并且不同层级的依赖中可能引用了同一个依赖包, 这种结构也没办法复用这个依赖包,而且这种情况非常常见,造成了大量的冗余、浪费。...node_modules目录下已经存在了相同版本的某个依赖包, 那么就会跳过安装过程,直接让工程使用这个已安装的依赖包,只有在版本不同的情况下, 才会在这个包的node_modules目录下安装新的依赖包

    9.6K60

    包管理工具

    node_modules 不同的依赖解析算法,嵌套 VS 扁平化 不同的安全问题 不同的锁文件格式,有性能影响 在磁盘上存储包的不同方式,对磁盘空间有效率影响 对多包(单一代码库)项目的不同支持 不同程度的可配置性和灵活性...确定性 不管安装顺序如何,相同的依赖关系将在每台机器上以相同的方式安装 网络性能 Yarn 有效地对请求进行排队处理,避免发起的请求如瀑布般倾泻,以便最大限度地利用网络资源 相同的软件包 从 npm 安装软件包并保持相同的包管理流程...这是通过 node_modules 层实现的,使用符号链接创建一个嵌套的依赖关系结构,其中文件夹中的每个包都是到存储的硬链接。 这是为什么 pnpm 会在快速和磁盘效率上有大幅提升的原因。...#它是如何工作的? 官网介绍 如果依赖于依赖项的不同版本,则只有不同的文件才会添加到存储区。...依赖管理 #依赖结构 安装依赖时的原理: 将依赖包的版本区间解析为某个具体的版本号 下载对应版本依赖的 tar 包到本地离线镜像 将依赖从离线镜像解压到本地缓存 将依赖从缓存拷贝到当前目录的 node_modules

    2.7K20

    102.精读《Monorepo 的优势》

    精读 总的来说,虽然拆分子仓库、拆分子 NPM 包(For web)是进行项目隔离的天然方案,但当仓库内容出现关联时,没有任何一种调试方式比源码放在一起更高效。...在前端开发环境中,多 Git Repo,多 Npm 则是这个理想的阻力,它们导致复用要关心版本号,调试需要 Npm Link。...对于共用的包通过 Npm 安装,如果不能接受调试编译后的代码,或每次 npm link 一下,就没有办法调试依赖的子包。...依赖关系复杂 独立仓库间组件版本号的维护需要手动操作,因为源代码不在一起,所以没有办法整体分析依赖,自动化管理版本号的依赖。...不利于团队协作 一个大项目可能会用到数百个二方包,不同二方包的维护频率不同,权限不同,仓库位置也不同,主仓库对它们的依赖方式也不同。

    60710

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

    我们平时用的npm install命令既会安装dependencies中的包,也会安装devDependencies中的包。...主要有以下几个原因: 使用者的npm版本有可能不同,不同的npm版本有着不同的安装算法 自上次安装之后,有些符合semver-range的包已经有新的版本发布。...requires: 对应子依赖的依赖,与依赖包的package.json中dependencies的依赖项相同 dependencies:结构与外层结构相同,存在于包自己的node_modules中的依赖...(不是所有的包都有,当子依赖的依赖版本与根目录的node_modules中的依赖冲突时,才会有) 通过分析上面的package-lock.json文件,也许会有一个问题。...npm从3.x开始,采用了扁平化的方式来安装node_modules。在安装时,npm会遍历整个依赖树,不管是项目的直接依赖还是子依赖的依赖,都会优先安装在根目录的node_modules中。

    1.5K10

    深入浅出 npm & yarn & pnpm 包管理机制

    嵌套的 node_modules 结构 npm 在早期采用的是嵌套的 node_modules 结构,直接依赖会平铺在 node_modules 下,子依赖嵌套在直接依赖的 node_modules 中...扁平的 node_modules 结构 为了将嵌套的依赖尽量打平,避免过深的依赖树和包冗余,npm v3 将子依赖「提升」(hoist),采用扁平的 node_modules 结构,子依赖会尽量平铺安装在主依赖项所在的目录中...而 C 依赖的 B@2.0 因为版本号原因还是嵌套在 C 的 node_modules 下。 这样不会造成大量包的重复安装,依赖的层级也不会太深,解决了依赖地狱问题,但也形成了新的问题。...即使是不同的安装顺序,相同的依赖关系在任何的环境和容器中,都能得到稳定的 node_modules 目录结构,保证了依赖安装的确定性。 所以 yarn 在出现时被定义为快速、安全、可靠的依赖管理。...总结 目前还没有完美的依赖管理方案,可以看到在依赖管理的发展过程中,出现了: 不同的 node_modules 结构,有嵌套,扁平,甚至没有 node_modules,不同的结构也伴随着兼容与安全问题。

    1.4K31

    剖析 npm、yarn 与 pnpm 依赖管理逻辑

    来自团队 匡凌熙 同学的内部分享 我们在项目开发的过程中会引用到各种不同的库,各种库又依赖了其他不同的库,这些依赖应该如何进行管理,今天这篇文章主要聊的就是这个事情。...: 生成的依赖嵌套非常深 相同版本的依赖大量冗余 npm3/yarn的依赖管理 npm3对于npm2的情况进行了优化,那么如何进行优化呢?...其实我们最直观的思路就是将树打平,将依赖扁平化,不就能解决嵌套过深和依赖冗余的问题。...所以这种依赖关系就导致了下面两个问题: 我们项目本身的node_modules结构不够直观 依赖不安全,我们可以使用依赖文件中并没有声明的npm包 其实第一点的问题并不是很大,主要是第二点可能会导致一些奇怪的问题...,由模块名@版本号形式的文件夹扁平化存储(解决依赖重复安装)。

    1.3K20

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

    接下来,本文将针对 npm 中的你可能忽略的细节和大家分享一些经验。 npm 安装机制 A 和 B 同时依赖 C,C 这个包会被安装在哪里呢?C 的版本相同和版本不同时安装会有什么差异呢?...执行 npm install 后,npm 根据 dependencies 和 devDependencies 属性中指定的包来确定第一层依赖,npm 2 会根据第一层依赖的子依赖,递归安装各个包到子依赖的...npm 3 对于同一依赖的不同版本会怎么处理呢?...中的版本 resolved :包具体的安装来源 integrity :包 hash 值,验证已安装的软件包是否被改动过、是否已失效 requires :对应子依赖的依赖,与子依赖的 package.json...optionalDependencies 对象中,但是 optionalDependencies 会覆盖 dependencies 中的同名依赖包,所以不要把一个包同时写进两个对象中。

    2.6K10
    领券