NPM 常用命令(十二)

目录

1、npm unpublish

1.1 使用语法

1.2 描述

2、npm unstar

2.1 使用语法

3、npm update

3.1 使用语法

3.2 描述

3.3 示例

插入符号依赖

波浪号依赖

低于 1.0.0 的插入符号依赖

 子依赖

 更新全局安装的包

4、npm version

4.1 使用语法

5、npm view

5.1 使用语法

5.2 描述

6、npm whoami

6.1 使用语法

6.2 描述

7、npx

7.1 使用语法

7.2 描述

7.3 npx 与 npm exec


1、npm unpublish

此命令会从npm注册表中删除发布的包

1.1 使用语法

npm unpublish [<package-spec>]

注意: 如果你的目的是鼓励用户升级,或者你不再想维护一个包,请考虑使用 deprecate命令(弃用)。

1.2 描述

这将从注册表中删除包版本,删除其条目并删除 tarball。

如果你没有登录,npm 注册表会返回错误。

如果你不指定版本或删除所有包的版本,则注册表将完全删除根包条目。

即使你取消发布包版本,该特定名称和版本组合也永远无法重复使用。 为了再次发布包,你必须使用新的版本号。 如果你取消发布整个包,则在 24 小时过去之前,你不得发布该包的任何新版本。

2、npm unstar

此命令将从你最喜欢的包中删除一个项目

2.1 使用语法

npm unstar [<package-spec>...]

 与 npm star 相反,它从你最喜欢的包列表中删除一个项目。

3、npm update

此命令可用来更新包

3.1 使用语法

npm update [<pkg>...]别名: up, upgrade, udpate

3.2 描述

此命令会将列出的所有包更新到最新版本(由 tag 配置指定),同时尊重包及其依赖的 semver 约束(如果它们也需要相同的包)。

它还将安装缺少的包。

如果指定了 -g 标志,此命令将更新全局安装的包。

如果未指定包名称,则将更新指定位置(全局或本地)中的所有包。

请注意,默认情况下,npm update 不会更新项目 package.json 中直接依赖的 semver 值,如果你还想更新 package.json 中的值,你可以运行: npm update --save(或将 save=true 选项添加到 配置文件 以使其成为默认行为)。

3.3 示例

对于下面的示例,假设当前包是 app,它依赖于依赖 dep1dep2、.. 等)。 dep1 的已发布版本是:

{"dist-tags": { "latest": "1.2.2" },"versions": ["1.2.2","1.2.1","1.2.0","1.1.2","1.1.1","1.0.0","0.4.1","0.4.0","0.2.0"]
}

插入符号依赖

如果 app 的 package.json 包含:

"dependencies": {"dep1": "^1.1.1"
}
那么 npm update 会安装 dep1@1.2.2,因为 1.2.2 就是 latest,1.2.2 满足 ^1.1.1。

注意:将会安装1.x.x的最后一个版本。

波浪号依赖

但是,如果 app 的 package.json 包含:

"dependencies": {"dep1": "~1.1.1"
}

在这种情况下,运行 npm update 将安装 dep1@1.1.2。 尽管 latest 标签指向 1.2.2,但这个版本不满足 ~1.1.1,相当于 >=1.1.1 <1.2.0。 所以使用满足 ~1.1.1 的最高排序版本,即 1.1.2

注意:将按照1.1.x的最后一个版本进行安装。

低于 1.0.0 的插入符号依赖

假设 app 对低于 1.0.0 的版本有插入符号依赖,例如:

"dependencies": {"dep1": "^0.2.0"
}

npm update 会安装 dep1@0.2.0,因为没有其他版本可以满足 ^0.2.0

如果依赖于 ^0.4.0

"dependencies": {"dep1": "^0.4.0"
}

那么 npm update 会安装 dep1@0.4.1,因为那是满足 ^0.4.0>= 0.4.0 <0.5.0)的最高排序版本

 子依赖

假设你的应用现在也依赖于 dep2

{"name": "my-app","dependencies": {"dep1": "^1.0.0","dep2": "1.0.0"}
}
而 dep2 本身就依赖于 dep1 的这个有限范围
{
"name": "dep2","dependencies": {"dep1": "~1.1.1"}
}

然后 npm update 将安装 dep1@1.1.2,因为这是 dep2 允许的最高版本。 当单个版本可以满足树中多个依赖的 semver 要求时,npm 将优先在树中拥有单个版本的 dep1,而不是两个。 在这种情况下,如果你确实需要你的包来使用更新的版本,你需要使用 npm install

 更新全局安装的包

npm update -g 将对每个全局安装的 outdated 包应用 update 操作 - 也就是说,具有与 wanted 不同的版本。

注意: 全局安装的包被视为安装时指定了插入符号 semver 范围。 因此,如果你需要更新到 latest,你可能需要运行 npm install -g [<pkg>...]

注意: 如果包已升级到比 latest 更新的版本,它将被降级。

4、npm version

此命令可用来查看npm版本相关信息。

4.1 使用语法

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]别名: verison

5、npm view

此命令可以查看查看注册表信息。

5.1 使用语法

npm view [<package-spec>] [<field>[.subfield]...]别名: info, show, v

5.2 描述

此命令显示有关包的数据并将其打印到标准输出。

例如,要从注册表中查看有关 jquery 包的信息,你可以运行:

npm view jquery

 

如果未指定,则默认版本为 "latest"

可以在包描述符之后指定字段名称。 例如,要显示 0.3.5 版本的 ronn 包的依赖,你可以执行以下操作:

npm view ronn@0.3.5 dependencies

你可以通过用句点分隔子字段来查看子字段。 要查看最新版本 jquery的 git 存储库 URL,你将运行以下命令:

npm view jquery repository.url

 这使得使用一些 shell 脚本可以轻松查看有关依赖的信息。 例如,要查看 ronn 所依赖的 opts 版本的所有数据,可以这样写:

npm view opts@$(npm view ronn dependencies.opts)

对于数组字段,请求非数字字段将返回列表中对象的所有值。 例如,要获取 express 包的所有贡献者电子邮件地址,你可以运行:

npm view express contributors.email

你还可以在方括号中使用数字索引来专门选择数组字段中的项目。 要获取列表中第一个贡献者的电子邮件地址,你可以运行:

npm view express contributors[0].email

如果你要查询的字段值是对象的属性,你应该运行:

npm view express time'[4.8.0]'

可以指定多个字段,并且将一个接一个地打印。 例如,要获取所有贡献者名称和电子邮件地址,你可以这样做:

npm view express contributors.name contributors.email
"Person" 字段如果显示为对象,则显示为字符串。 因此,例如,这将以缩短的字符串格式显示 npm 贡献者的列表。
npm view npm contributors

如果提供了版本范围,则将为包的每个匹配版本打印数据。 这将显示每个匹配的 yui3 版本需要哪个版本的 jsdom

npm view yui3@'>0.5.4' dependencies.jsdom

要显示 connect 包版本历史,你可以这样做:

npm view connect versions

6、npm whoami

此命令用于显示 npm 用户名

6.1 使用语法

npm whoami

6.2 描述

显示当前登录用户的 npm 用户名。

如果登录到提供基于令牌的身份验证的注册表,则连接到 /-/whoami 注册表端点以查找与令牌关联的用户名,并打印到标准输出。

如果登录到使用基本身份验证的注册表,则只需打印身份验证字符串的 username 部分。

7、npx

此命令用于从本地或远程 npm 包运行命令

7.1 使用语法

npx -- <pkg>[@<version>] [args...]
npx --package=<pkg>[@<version>] -- <cmd> [args...]
npx -c '<cmd> [args...]'
npx --package=foo -c '<cmd> [args...]'

7.2 描述

此命令允许你在与通过 npm run 运行类似的上下文中从 npm 包(本地安装或远程获取)运行任意命令。

--package 选项指定的任何包都将在执行命令的 PATH 中提供,以及任何本地安装的包可执行文件。 --package 选项可以指定多次,以在所有指定包都可用的环境中执行提供的命令。

如果本地项目依赖中不存在任何请求的包,则将它们安装到 npm 缓存中的文件夹中,该文件夹在执行过程中添加到 PATH 环境变量中。 打印一个提示(可以通过提供 --yes 或 --no 来抑制)。

不带说明符的包名称将与本地项目中存在的任何版本匹配。 仅当具有与本地依赖完全相同的名称和版本时,带有说明符的包名称才会被视为匹配。

如果未提供 -c 或 --call 选项,则使用位置参数生成命令字符串。 如果未提供 --package 选项,则 npm 将尝试根据以下启发式方法从作为第一个位置参数提供的包说明符中确定可执行文件名称:

  • 如果包在 package.json 的 bin 字段中有一个条目,或者如果所有条目都是同一命令的别名,则将使用该命令。
  • 如果包有多个 bin 条目,其中一个与 name 字段的无范围部分匹配,则将使用该命令。
  • 如果这不会导致恰好一个选项(或者因为没有 bin 条目,或者它们都不匹配包的 name),那么 npm exec 会以错误退出。

要运行指定二进制文件以外的二进制文件,请指定一个或多个 --package 选项,这将阻止 npm 从第一个命令参数推断包。

7.3 npx 与 npm exec

通过 npx 二进制文件运行时,必须在任何位置参数之前设置所有标志和选项。 通过 npm exec 运行时,可以使用双连字符 -- 标志来禁止 npm 解析应发送到执行命令的开关和选项。

例如:

npx foo@latest bar --package=@npmcli/foo

在这种情况下,npm 将解析 foo 包名,并运行以下命令:

foo bar --package=@npmcli/foo

由于 --package 选项位于位置参数之后,因此它被视为已执行命令的参数。

相比之下,由于 npm 的参数解析逻辑,运行这个命令是不同的:

$ npm exec foo@latest bar --package=@npmcli/foo

在这种情况下,npm 会先解析 --package 选项,解析 @npmcli/foo 包。 然后,它将在该上下文中执行以下命令:

foo@latest bar

建议使用双连字符来明确告诉 npm 停止解析命令行选项和开关。 因此,以下命令等同于上面的 npx 命令:

npm exec -- foo@latest bar --package=@npmcli/foo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/107092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Raven2靶机渗透

1. 信息收集 1.1 主机探测 sudo arp-scan -l1.2 端口扫描 nmap -p- -A 192.168.16.185开放了80端口&#xff0c;尝试登录网址查看信息&#xff0c;通过浏览器插件找出指纹 1.3 目录扫描 访问登录界面&#xff0c;发现remember Me怀疑是shiro界面 登录/vendor/界面&#xff0…

「深入探究Web页面生命周期:DOMContentLoaded、load、beforeunload和unload事件」

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. DOMContentLoaded 1.1 属性 1.2 A…

【aloam】ubuntu20.04 配置 aloam 环境,编译过程报错及成功解决方法

为什么写这篇博客 ALOAM是slamer的必经之路&#xff0c;official提供的基础环境推荐ubuntu16.04或者18.04&#xff0c;而我用20.04已经有一段时间了&#xff0c;不方便换&#xff0c;但由于其他原因也不得不去配置。过程中出现了几个问题&#xff0c;在这里也就20分钟&#xf…

04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤

创建Maven版的Web工程 使用命令生成Web工程 使用mvn archetype:generate命令生成Web工程时&#xff0c;需要使用一个专门生成Web工程骨架的archetype(参照官网看到它的用法) -D表示后面要附加命令的参数&#xff0c;字母D和后面的参数是紧挨着的&#xff0c;中间没有任何其它…

记一次Redis Cluster Pipeline导致的死锁问题

作者&#xff1a;vivo 互联网服务器团队- Li Gang 本文介绍了一次排查Dubbo线程池耗尽问题的过程。通过查看Dubbo线程状态、分析Jedis连接池获取连接的源码、排查死锁条件等方面&#xff0c;最终确认是因为使用了cluster pipeline模式且没有设置超时时间导致死锁问题。 一、背…

掌握 Scikit-Learn: Python 中的机器学习库入门

机器学习 第二课 Sklearn 入门 概述机器学习与 Python 的完美结合Scikit-Learn 的核心组件与结构安装与配置验证安装 数据表示与预处理特征矩阵和目标向量数据处理 估计器模型的选择思考问题的本质研究数据的分布判断任务的复杂性分类问题回归问题 监督学习分类算法回归算法 无…

常见的8个JMeter压测问题

为什么在JMeter中执行压力测试时&#xff0c;出现连接异常或连接重置错误&#xff1f; 答案&#xff1a;连接异常或连接重置错误通常是由于服务器在处理请求时出现问题引起的。这可能是由于服务器过载、网络故障或配置错误等原因导致的。 解决方法&#xff1a; 确定服务器的负载…

智能警用装备管理系统-科技赋能警务

警用物资装备管理系统&#xff08;智装备DW-S304&#xff09;是依托互云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对警用装备进行统一管理、分析的信息化、智能化、规范化的系统。 &#xff08;1&#xff09;感知智能化 装备感知是整个方案的基础&#xff0c;本方…

基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)三

1.简介 1.1 2D测量技术 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造&#xff1a;在工业制造过程中&#xff0c;精确测量是确保产品质量和一致性的关键。基于单目相机的2D测量技术可以用于检测和测量零件尺寸、位置、形状等参数&#xff0c;进而实…

PyTorch入门教学——使用PyCharm创建一个PyTorch项目

首先需要创建好PyTorch的虚拟环境&#xff0c;步骤&#xff1a;PyTorch入门教学——简介与环境配置-CSDN博客打开PyCharm&#xff0c;新建项目&#xff0c;选择项目的存放位置。选择先前配置的解释器&#xff0c;也就是虚拟环境中的解释器。&#xff08;记住创建的虚拟环境所在…

年龄越大,越要小心逢九年

老话有云&#xff1a;年龄逢九&#xff0c;灾祸频有。在我国的许多农村地区&#xff0c;至今还流传着这么句话&#xff0c;这句话的大概意思是说&#xff1a;每个人命理年龄逢九&#xff0c;就会有个坎&#xff0c;年龄越大&#xff0c;坎就越厉害&#xff0c;所以&#xff0c;…

【Linux】线程安全问题①——如何实现资源访问互斥(附图解与代码实现)

线程安全主要分为两个方面&#xff0c;分别是资源访问互斥与线程同步&#xff08;线程协同配合&#xff09; 本篇博客&#xff0c;我们主要来讲解资源访问互斥这一方面 目录 为什么要实现资源访问互斥&#xff1f; 实现资源访问互斥&#xff08;原子访问&#xff09;的经典…

Nginx正向代理配置(http)

前言 在工作中我们经常使用nginx进行反向代理,今天介绍下怎么进行正向代理,支持http请求,暂不支持https 首先先介绍下正向代理和反向代理。 正向代理 在客户端&#xff08;浏览器&#xff09;配置代理服务器&#xff0c;通过代理服务器进行互联网访问。 反向代理 客户端只…

ThinkPHP5小语种学习平台

有需要请加文章底部Q哦 可远程调试 ThinkPHP5小语种学习平台 一 介绍 此小语种学习平台基于ThinkPHP5框架开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。平台角色分为学生&#xff0c;教师和管理员三种。学生注册登录后可观看学习视频&#xff0c;收藏视频&#xf…

关于图像分割SDK的一些基础认识

随着科技的不断发展&#xff0c;图像分割SDK已经成为了一个备受关注的话题。而在众多图像分割SDK中&#xff0c;美摄图像分割SDK以其独特的功能和优势脱颖而出。本文将从美摄图像分割SDK的企业价值和互联网娱乐方面&#xff0c;介绍其宣传文章的具体写作规范。 在企业价值方面&…

从一到无穷大 #18 时序数据库运营SLI思考

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 公有云时序数据库SLA 运营商产品每服务周期服务可用率不低于99.9%衡量服务不可用数据指标从采…

202、RabbitMQ 之 使用 fanout 类型的Exchange 实现 Pub-Sub 消息模型---fanout类型就是广播类型

目录 ★ 使用 fanout 类型的Exchange 实现 Pub-Sub 消息模型代码演示&#xff1a;生产者&#xff1a;producer消费者&#xff1a;Consumer01消费者&#xff1a;Consumer02测试结果 完整代码ConnectionUtilPublisherConsumer01Consumer02pom.xml ★ 使用 fanout 类型的Exchange …

[Swift]同一个工程管理多个Target

1.准备 先创建一个测试工程“ADemo”&#xff0c;右键其Target选择Duplicate&#xff0c;再复制一个Target为“ADemo2”。 再选择TARGETS下方的“”&#xff0c;添加一个APP到项目中&#xff0c;这个命名为“BDemo”。 2、管理多个Target 可以对三个target分别导入不同的框…

iWall:支持自定义的Mac动态壁纸软件

iWall Mac是一款动态壁纸软件&#xff0c;它可以使用任何格式的漂亮视频&#xff08;无须转换&#xff09;、图片、动画、Flash、gif、swf、程序、网页、网站做为您的动态壁纸、动态桌面&#xff0c;并且可以进行交互。 这款软件功能多、使用简单、体积小巧、不占用资源、运行…

微信小程序引入阿里巴巴iconfont图标并使用

介绍 在小程序里&#xff0c;使用阿里巴巴的图标&#xff0c;如下所示: 使用方式 搜索自己需要的图标&#xff0c;然后将需要用到的图标加入购物车&#xff0c;如下图所示&#xff1a; 去右上角&#xff0c;点击购物车按钮&#xff1b;这里第一次使用&#xff0c;会有三个提…