NPM 常用命令(九)

 

目录

1.1 使用语法

1.2 描述

2、npm login

2.1 描述

3、npm logout

3.1 描述

4、npm ls

4.1 使用语法

4.2 描述

5、npm org

5.1 使用语法

5.2 示例:

 6、npm outdated

6.1 使用语法

 6.2 描述

6.3 示例 

7、npm owner

7.1 使用语法

7.2 描述

8、npm pack

8.1 使用语法

 9、npm ping

9.1 使用语法

9.2 描述

10、npm pkg

10.1 使用语法

10.2 描述


该命令可以符号链接包文件夹

1.1 使用语法

npm link [<package-spec>]别名: ln

 

1.2 描述

一般情况下创建链接分为2个步骤:

1、在一个包文件夹中,通过npm link 创建一个全局的符号链接。

2、在其他包文件夹中, 可以通过npm lin package-name 来安装到当前包文件夹中的node_modules 文件中,是通过符号链接进行引用的,不是直接进行安装的。

注意package-name 取自 package.json,而不是目录名称。

例如:

cd D:\2023\link_test\test
npm link 
cd D:\2023\link_test\test1
npm link test

 

创建完符号链接,可以去test1目录下看下包安装情况如下所示:

同时test1目录下的package.json 文件,也没有test包的相关描述,如下图所示:

在node_modules文件夹中,有一个package-lock.json 文件,有安装包的描述,如下所示:

最后当前包在进行npm publish的时候,创建 tarball 时,对应符号链接引号的包也会变成一种正常的状态。

2、npm login

2.1 描述

验证指定注册表中的用户,并将凭据保存到 .npmrc 文件。 如果未指定注册表,将使用默认注册表。

在发布包时,我们先要进行npm登录,命令如下:

npm login

使用同一用户账户多次使用此命令在新机器上进行授权。 在新机器上进行身份验证时,用户名、密码和电子邮件地址都必须与你现有的记录匹配。

如果有双重验证需要账号密码通过之后再进行一次验证,如需要发送新的验证码,或者账号和本机进行绑定,需要输入本机的密码才能进行下去。

3、npm logout

注销npm 账户

3.1 描述

注销命令如下所示:

npm logout

登录到支持基于令牌的身份验证的注册表时,告诉服务器结束此令牌的会话。 这将使令牌在你使用它的任何地方都无效,而不仅仅是当前环境。

当登录到使用用户名和密码身份验证的旧注册表时,这将清除用户配置中的凭据。 在这种情况下,它只会影响当前环境。

如果提供了 --scope,这将找到连接到该范围的注册表的凭据(如果已设置)。

4、npm ls

列出当前已安装的包

4.1 使用语法

npm ls <package-spec>别名: list

4.2 描述

此命令将以树形结构打印到标准输出中已安装的包的所有版本,以及指定 --all 时它们的依赖。

注意: 要获得一个给定包为何包含在树中的 "依赖图" 视图,请使用 npm explainnpm explainnpm explain。

5、npm org

此命令用来管理组织

5.1 使用语法

npm org set orgname username [developer | admin | owner]
npm org rm orgname username
npm org ls orgname [<username>]别名: ogr

5.2 示例:

将新开发者添加到组织:

npm org set my-org @mx-smith

向组织添加新管理员(或将开发者更改为管理员):

npm org set my-org @mx-santos admin

从组织中删除用户:

npm org rm my-org mx-santos

列出组织中的所有用户:

npm org ls my-org

以 JSON 格式列出所有用户:

npm org ls my-org --json

查看用户在组织中的角色:

npm org ls my-org @mx-santos

 6、npm outdated

此命令用来检查过时的包

6.1 使用语法

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

 6.2 描述

此命令将检查注册表以查看当前是否有任何(或特定)已安装的包已过时。

默认情况下,仅显示根项目的直接依赖和配置的工作区的直接依赖。 也可以使用 --all 查找所有过时的元依赖。

在输出中:

  • wanted 是满足 package.json 中指定的 semver 范围的包的最大版本。 如果没有可用的 semver 范围(即你正在运行 npm outdated --global,或者该包未包含在 package.json 中),则 wanted 显示当前安装的版本。
  • latest 是在注册表中标记为最新的包的版本。 在没有特殊配置的情况下运行 npm publish 将发布带有 latest 的 dist-tag 的包。 这可能是也可能不是包的最高版本,或者是最近发布的包版本,这取决于包的开发者如何管理最新的 dist-tag
  • location 是包在物理树中的位置。
  • depended by 显示哪个包依赖于显示的依赖
  • package type(使用 --long / -l 时)告诉你这个包是 dependency 还是 dev/peer/optional 依赖。 未包含在 package.json 中的包始终标记为 dependencies
  • homepage(使用 --long / -l 时)是包的包中包含的 homepage 值
  • 红色表示有更新的版本符合你的 semver 要求,因此你应该立即更新。
  • 黄色表示有高于你的 semver 要求的较新版本(通常是新的主要版本或新的 0.x 次要版本),因此请谨慎操作。

6.3 示例 

需要注意的几点:

  • @angular/animations 需要 ^5,这会阻止 npm 安装超出 semver 范围的 @angular/animations16
  • Git 依赖总是会被重新安装,因为它们是如何指定的。 安装的 committish 可能满足依赖说明符(如果它是不可变的,例如提交 SHA),也可能不满足,因此 npm outdated 和 npm update 必须获取 Git 存储库进行检查。 这就是为什么当前重新安装 Git 依赖总是会强制进行新的克隆和安装。
  • @angular/animations5.1.1 被标记为 "wanted",但是 "latest" 是 @angular/animations5.2.11,因为 npm 使用 dist-tags 来管理它的 latest 和 next 发布通道。 npm update 将安装最新版本,但 npm install npm(没有 semver 范围)将安装标记为 latest 的任何内容。
  • @angular/common 等包已经过时了。 从头开始重新安装 node_modules 或运行 npm update 将使其符合规范。

7、npm owner

该命令用来管理包所有者

7.1 使用语法

npm owner add <user> <package-spec>
npm owner rm <user> <package-spec>
npm owner ls <package-spec>别名: author

7.2 描述

管理已发布包的所有权。

  • ls: 列出所有有权修改包和推送新版本的用户。 当你需要知道向谁寻求帮助时非常方便。
  • add: 添加一个新用户作为包的维护者。 此用户可以修改元数据、发布新版本和添加其他所有者。
  • rm: 从包所有者列表中删除用户。 这立即撤销了他们的特权。

请注意,只有一级访问权限。 要么你可以修改一个包,要么你不能。 未来的版本可能包含更细粒度的访问级别,但目前尚未实现。

如果你使用 auth-and-writes启用了双重身份验证,那么在更改所有权时你将需要通过第二个因素流程,或者在 --otp 的命令行中包含一个 otp。

8、npm pack

从包创建 tarball

8.1 使用语法

npm pack <package-spec>

当前目录下,会生成一个对应的压缩包:

 9、npm ping

该命令可以用来Ping npm 注册表

9.1 使用语法

npm ping

9.2 描述

ping 配置或给定的 npm 注册表并验证身份验证。 如果它有效,它将输出如下内容:

否则你会得到一个错误:

npm notice PING http://foo.com/
npm ERR! code E404
npm ERR! 404 Not Found - GET http://www.foo.com/-/ping?write=true

10、npm pkg

此命令可用管理你的 package.json

10.1 使用语法

npm pkg set <key>=<value> [<key>=<value> ...]
npm pkg get [<key> [<key> ...]]
npm pkg delete <key> [<key> ...]
npm pkg set [<array>[<index>].<key>=<value> ...]
npm pkg set [<array>[].<key>=<value> ...]
npm pkg fix

10.2 描述

自动管理 package.json 文件的命令。 npm pkg 提供 3 个不同的子命令,允许你修改或检索 package.json 中给定对象键的值。

检索和设置字段的语法是在 package.json 中找到的嵌套对象属性的点分隔表示,它与 npm view 中用于从注册表清单中检索信息的表示法相同,你可以在下面找到有关如何使用它的更多示例.

返回值始终采用 json 格式。

 npm pkg get <field>

检索在 package.json 文件中定义的值 key

例如,为了检索当前包的名称,你可以运行:

npm pkg get name

​编辑

        也可以一次检索多个值:

你可以通过用句点分隔子字段来查看子字段。 要检索测试 script 值的值,你将运行以下命令:

npm pkg get scripts.start

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

npm pkg get contributors.email

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

npm pkg get contributors[0].email

对于复杂字段,你还可以在方括号中命名属性以专门选择子字段。 这对导出对象特别有用:

npm pkg get "exports[.].require"

npm pkg set <field>=<value>

根据 field 值在 package.json 中设置 value。 保存到 package.json 文件时,使用在 npm install 和其他涉及 package.json 文件的 cli 命令期间使用的相同规则集,确保尊重现有缩进并可能在将值保存到文件之前应用一些验证。

用于从包中检索值的相同语法也可用于定义新属性或覆盖现有属性,以下是如何使用点分隔语法编辑 package.json 文件的一些示例。

在你的 package.json 中定义一个名为 mynewcommand 的新 bin,它指向一个文件 cli.js

npm pkg set bin.mynewcommand=cli.js

一次设置多个字段也是可能的:

npm pkg set description='Awesome package' engines.node='>=10'

也可以添加到数组值,例如添加新的贡献者条目:

npm pkg set contributors[0].name='Foo' contributors[0].email='foo@bar.ca'

你还可以使用特殊的空括号表示法将项目附加到数组的末尾:

npm pkg set contributors[].name='Foo' contributors[].name='Bar'

在将值保存到 package.json 文件之前,也可以将值解析为 json,例如为了设置 "private": true 属性:

npm pkg set private=true --json

它还可以将值保存为数字:

npm pkg set tap.timeout=60 --json

npm pkg delete <key>

从你的 package.json 中删除一个 key

用于从包中设置值的相同语法也可用于删除现有值。 例如,为了删除名为 build 的脚本:

npm pkg delete scripts.build
  • npm pkg fix

    自动更正 package.json 中的常见错误。 npm 已经在 publish 期间执行了此操作,这会导致 package.json 文件的内容与 npm 在安装期间使用的清单之间存在细微(大部分无害)的差异。

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

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

相关文章

ipv6跟ipv4如何通讯

IPv6的128位地址通常写成8组&#xff0c;每组为四个十六进制数的形式。比如:AD80:0000:0000:0000:ABAA:0000:00C2:0002 是一个合法的IPv6地址。这个地址比较长&#xff0c;看起来不方便也不易于书写。零压缩法可以用来缩减其长度。如果几个连续段位的值都是0&#xff0c;那么这…

免费 AI 代码生成器 Amazon CodeWhisperer 初体验

文章作者&#xff1a;浪里行舟 简介 随着 ChatGPT 的到来&#xff0c;不由让很多程序员感到恐慌。虽然我们阻止不了 AI 时代到来&#xff0c;但是我们可以跟随 AI 的脚步&#xff0c;近期我发现了一个神仙 AI 代码生产工具 CodeWhisperer &#xff0c;它是一项基于机器学习的服…

众佰诚:抖音开网店新手怎么做才能做起来

抖音作为国内最热门的短视频平台&#xff0c;其商业价值也日渐凸显。许多商家和个体经营者开始在抖音上开设网店&#xff0c;以此为新的销售渠道。那么&#xff0c;对于新手来说&#xff0c;如何才能在抖音上成功运营网店呢? 首先&#xff0c;明确经营定位。每个电商平台都有其…

小谈设计模式(16)—抽象工厂模式

小谈设计模式&#xff08;16&#xff09;—抽象工厂模式 专栏介绍专栏地址专栏介绍 抽象工厂模式结构抽象工厂&#xff08;AbstractFactory&#xff09;具体工厂&#xff08;ConcreteFactory&#xff09;抽象产品&#xff08;AbstractProduct&#xff09;具体产品&#xff08;C…

FPGA project : fifo_sum

实验目标&#xff1a; col(列) 4 &#xff1b;line(行) 5。相邻三行&#xff0c;按列求和。输出新的数据流。 实现方法&#xff1a; 通过rs232通信协议&#xff0c;输入数据流。第一行存进fifo1&#xff0c;第二行存进fifo2.当输入第三行第一个数据的时候&#xff0c;从fif…

Verilog HDL阻塞赋值和非阻塞赋值笔记

1. module test( input wire clk, input wire b, output reg a, output reg c ); always(posedge clk) begin ab; ca; end endmodule 上面的代码在vivado中综合后的电路为&#xff1a; 2. module test( input wire clk, input wire b, outp…

offer突击训练营,给你一个offer的保障,求职跳槽的看过来!

大家好&#xff0c;我是枫哥&#xff0c;&#x1f31f;阿里云技术专家、&#x1f4dd;资深面试官、&#x1f339;Java跳蚤网课堂创始人。拥有多年一线研发经验&#xff0c;曾就职过科大讯飞、美团网、平安等公司。 目前组建的团队&#xff0c;专注Java技术分享&#xff0c…

互联网Java工程师面试题·Memcached篇·第一弹

目录 1、Memcached 是什么&#xff0c;有什么作用&#xff1f; 1.1 memcached 服务在企业集群架构中有哪些应用场景&#xff1f; 1.1.1 作为数据库的前端缓存应用 1.1.2 作业集群的 session 会话共享存储 2、Memcached 服务分布式集群如何实现&#xff1f; 3、Memcach…

【Blender实景合成】会跳舞的神里绫华

效果预览 本文将介绍Blender用于实景合成的工作流程。 先看效果&#xff1a; 神里绫华爬上了我的办公桌 模型和动作资源准备 角色模型 本次主要使用的是原神游戏中&#xff0c;神里绫华的角色模型&#xff0c;该模型米哈游在模之屋网站上进行开源。 下载地址&#xff1a;ht…

1500*B. Zero Array(贪心数学找规律)

Problem - 1201B - Codeforces 解析&#xff1a; 因为每次减少2&#xff0c;如果总和为奇数肯定无法实现。 特例&#xff0c;如果某个数大于其他所有数的总和&#xff0c;同样无法实现。 其他均可实现。 #include<bits/stdc.h> using namespace std; #define int long l…

六、vpp 流表+负载均衡

草稿&#xff01;&#xff01;&#xff01; vpp node其实就是三个部分 1、plugin init 2、set command 3、function 实现功能&#xff0c;比如这里的流表 今天我们再用VPP实现一个流表的功能 一、流表 1.1流表----plugin init VLIB_REGISTER_NODE 注册流表节点 // 注册流…

在CSV文件读取时id读取之后成了‘锘縤d‘,该怎么修改

问题描述 准备用python实现一个小想法&#xff0c;里边数据可能会有点多&#xff0c;也为了代码能成块展示&#xff0c;所以打算写一个读取文件的函数。此时考虑到python中可以直接将CSV格式文件读取成字典的形式&#xff0c;所以尝试了一下。但是中间出现了错误&#xff0c;第…

软件测试|Python自动化测试实现的思路

Python自动化测试常用于Web应用、移动应用、桌面应用等的测试 Python自动化实现思路通常分为以下几步&#xff1a; 1. 确定自动化测试的范围和目标&#xff1a; 首先需要明确需要进行自动化测试的范围和目标&#xff0c;包括测试场景、测试用例、测试数据等。 2. 选择自动化…

详解IDEA git 版本回滚

作者简介 目录 1.git分区 2.未commit&#xff0c;进行回滚 3.commit未push&#xff0c;进行回滚 3.1.undo commit 3.2.reset 4.已commit&push&#xff0c;进行回滚 1.git分区 git的版本回滚其实就是回滚不同的分区&#xff0c;所以在聊git回滚之前我们有必要简单了解…

开源即时通讯IM框架 MobileIMSDK v6.4 发布

一、更新内容简介 本次更新为次要版本更新&#xff0c;进行了若干优化&#xff08;更新历史详见&#xff1a;码云 Release Notes、Github Release Notes&#xff09;。MobileIMSDK 可能是市面上唯一同时支持 UDPTCPWebSocket 三种协议的同类开源IM框架。 二、MobileIMSDK简介…

基于风驱动优化的BP神经网络(分类应用) - 附代码

基于风驱动优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于风驱动优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.风驱动优化BP神经网络3.1 BP神经网络参数设置3.2 风驱动算法应用 4.测试结果&#x…

递归

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;汉诺塔 &#x1f449;&…

java 将字符串转为Base64格式与将Base64内容解析出来

首先要引入依赖包 import java.nio.charset.StandardCharsets; import java.util.Base64;然后对应一下两个代码 将字符串转为Base64 Base64.getEncoder().encodeToString(需要转换的字符串.getBytes(StandardCharsets.UTF_8));将 Base64 字符串解析成原来的内容 byte[] deco…

每日一题 901. 股票价格跨度(中等,单调栈)

理解题目&#xff0c;对于第 i 天&#xff0c;要求的是前 i - 1 天所满足条件的跨度 思路&#xff1a; 暴力搜索的方式是&#xff0c;对于每一个第 i 天都遍历搜索 i - 1&#xff0c; i - 2&#xff0c;…&#xff0c;直到第 j 天大于当前价格优化&#xff0c;考虑哪里进行了…

论文总结:3D Talking Face With Personalized Pose Dynamics

论文解决的问题:大多数现有的3D人脸生成方法只能生成静态头部姿势的3D面部,只有少数几篇文章关注头部姿势的生成,但这些文章也忽略了个体属性。 解决方法:框架由两个独立模块组成:PoseGAN和PGFace。给定输入音频,PoseGAN首先为3D头部生成一个头部姿势序列,然后PGFace利用…