NPM 常用命令(九)

简介: NPM 常用命令(九)

1、npm link

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

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 outdatednpm update 必须获取 Git 存储库进行检查。 这就是为什么当前重新安装 Git 依赖总是会强制进行新的克隆和安装。
  • @angular/animations5.1.1 被标记为 "wanted",但是 "latest" 是 @angular/animations5.2.11,因为 npm 使用 dist-tags 来管理它的 latestnext 发布通道。 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 在安装期间使用的清单之间存在细微(大部分无害)的差异。


相关文章
npm info 命令的用途
npm info 命令的用途
|
3月前
|
JavaScript 前端开发 数据安全/隐私保护
详细介绍NPM的基本使用方法、常用命令和一些实用技巧
详细介绍NPM的基本使用方法、常用命令和一些实用技巧
183 0
|
3月前
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
|
3月前
|
Ubuntu
node、npm 命令升级
node、npm 命令升级
112 0
|
3月前
|
JavaScript
node.js 项目中执行 npm install 命令后看到的 idealTree inflate 的含义
node.js 项目中执行 npm install 命令后看到的 idealTree inflate 的含义
|
3月前
|
JavaScript 前端开发 Shell
NPM 自定义 package.json 中 scripts 命令(& 与 && 的区别,cross-env 的使用)
NPM 自定义 package.json 中 scripts 命令(& 与 && 的区别,cross-env 的使用)
104 0
|
2月前
|
缓存 JavaScript 前端开发
npm命令介绍
npm命令介绍
34 1
|
1月前
|
缓存 JavaScript 前端开发
npm常用命令详解与实践
npm常用命令详解与实践
|
1月前
|
JavaScript
TS,编写TS文件,编写hello.ts文件,cmd下打开终端,输入tsc hello.ts会生成一个hello.js文件,简化命令,npm i -g ts-node,ts-node hello.ts
TS,编写TS文件,编写hello.ts文件,cmd下打开终端,输入tsc hello.ts会生成一个hello.js文件,简化命令,npm i -g ts-node,ts-node hello.ts
|
2月前
|
JavaScript
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘

热门文章

最新文章

推荐镜像

更多