NPM 常用命令(五)

这篇具有很好参考价值的文章主要介绍了NPM 常用命令(五)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、npm doctor

1.1 命令

1.2 描述

npm ping

npm -v

node -v

npm config get registry

which git

1.3 权限检查

1.4 验证缓存包的校验和

2、npm edit

2.1 命令

2.2 描述

2.3 配置

editor

3、npm exec

3.1 命令

3.2 描述

npx 与 npm exec

3.3 配置

package

call

workspace

workspaces

include-workspace-root

3.4 示例


1、npm doctor

1.1 命令

npm doctor [ping] [registry] [versions] [environment] [permissions] [cache]

1.2 描述

npm doctor 运行一组检查以确保你的 npm 安装具有管理 JavaScript 包所需的内容。 npm 主要是一个独立的工具,但它确实有一些必须满足的基本要求:

  • Node.js 和 git 必须可由 npm 执行。
  • 主 npm 注册表 registry.npmjs.com 或其他使用注册表 API 的服务可用。
  • npm 使用的目录 node_modules(本地和全局)存在并且可以由当前用户写入。
  • npm 缓存存在,并且其中的压缩包tarball没有损坏。

如果所有这些都不能正常工作,npm 可能无法正常工作。 很多问题往往是由于 npm 代码库之外的东西造成的,所以 npm doctor 确认 npm 安装处于良好状态。

此外,除此之外,由于使用旧版本的 npm,也有非常多的问题报告。 由于 npm 在不断改进,运行 npm@latest 比旧版本更好。

npm doctor 验证你的环境中的以下项目,如果有任何建议的更改,它将显示它们。 默认情况下,npm 运行所有这些检查。 你可以通过将检查指定为额外参数来限制运行哪些检查。

npm ping

默认情况下,npm 从主 npm 注册表 registry.npmjs.org 安装。 npm doctor 命中注册表中的一个特殊 ping 端点。 这也可以用 npm ping 检查。 如果此检查失败,你可能正在使用需要配置的代理。

此检查针对你配置的任何注册表进行(你可以通过运行 npm config get registry 查看它的内容),如果你使用的私有注册表不支持主注册表支持的 /whoami 端点,则此检查可能会失败。

我们可以通过这个测试一下连接注册表的情况:

NPM 常用命令(五),Node.js,npm,前端,node.js

npm -v

虽然 Node.js 可能与特定版本的 npm 打包在一起,但 CLI 团队的政策是,我们建议所有用户尽可能运行 npm@latest。 由于 CLI 由一小部分贡献者维护,因此只有一条开发线的资源,因此 npm 自己的长期支持版本通常只接收关键的安全和回归修复。 该团队认为,最新测试的 npm 版本几乎总是可能是 npm 中功能最多且无缺陷的版本。

所以在很多情况下,我们最好把npm更新到最新的版本,否则在安装依赖的时候,会报错。

NPM 常用命令(五),Node.js,npm,前端,node.js

node -v

对于大多数用户来说,在大多数情况下,最好的 Node 版本将是最新的长期支持 (LTS) 版本。 那些想要访问新的 ECMAscript 功能或对 Node 标准库进行前沿更改的人可能正在运行更新的版本,并且由于企业变更控制策略,有些人可能需要运行旧版本的 Node。 没关系! 但总的来说,npm 团队建议大多数用户运行 Node.js LTS。

npm config get registry

你可能正在为你的项目或公司从私有包注册表安装。 那太棒了! 其他人可能会关注教程或 StackOverflow 问题,以解决你可能遇到的问题。 有时,这可能需要更改你指向的注册表。 npm doctor 的这一部分只是让你,也许是帮助你获得支持的人,知道你没有使用默认注册表。

which git

虽然它在 README 中有记录,但 npm 需要安装 Git 来完成它所做的许多事情可能并不明显。 另外,在某些情况下 – 特别是在 Windows 上 – 你可能以无法通过 PATH 访问 Git 的方式设置 Git,以便 npm 可以找到它。 此检查确保 Git 可用。

1.3 权限检查

  • 你的缓存必须可由运行 npm 的用户读写。
  • 全局包二进制文件必须可由运行 npm 的用户写入。
  • 你的本地 node_modules 路径,如果你使用项目目录运行 npm doctor,则运行 npm 的用户必须是可读写的。

NPM 常用命令(五),Node.js,npm,前端,node.js

1.4 验证缓存包的校验和

发布 npm 包时,发布过程会生成一个校验和,npm 在安装时使用该校验和来验证包在传输过程中没有损坏。 npm doctor 使用这些校验和来验证本地缓存中的包 tarball(你可以使用 npm config get cache 查看该缓存的位置)。 如果你的缓存中有损坏的包,你可能应该运行 npm cache clean -f 并重置缓存。

例如以下qs包,有对应的校验和,tarball,签名等信息。

NPM 常用命令(五),Node.js,npm,前端,node.js

2、npm edit

2.1 命令

npm edit <pkg>[/<subpkg>...]

2.2 描述

在当前项目中选择一个依赖并在默认编辑器中打开包文件夹(或你配置为 npm editor 配置的任何内容 - 参见 npm-config。)

在它被编辑之后,包被重新构建,以便获取编译包中的任何更改。

例如,你可以执行 npm install qs将连接安装到你的包中,然后执行 npm edit qs对本地安装的副本进行一些更改。

NPM 常用命令(五),Node.js,npm,前端,node.js

这相当于打开了一个空的文件,填写内容或者直接关闭会进行重新构建,感觉有些鸡肋!!!

NPM 常用命令(五),Node.js,npm,前端,node.js

2.3 配置

editor

  • 默认值: EDITOR 或 VISUAL 环境变量,或 Windows 上的 '%SYSTEMROOT%\notepad.exe',或 Unix 系统上的 'vi'
  • 类型: 字符串

3、npm exec

3.1 命令

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

别名: x

3.2 描述

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

在没有位置参数或 --call 的情况下运行,这允许你在与 package.json 脚本运行相同的 shell 环境中交互地运行命令。 当标准输入是 TTY 时,CI 环境中不支持交互模式,以防止挂起。

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

如果本地项目依赖中不存在任何请求的包,则会打印提示,可以通过提供 --yes 或 --no 来取消提示。 当标准输入不是 TTY 或检测到 CI 环境时,假定为 --yes。 请求的包被安装到 npm 缓存中的一个文件夹中,该文件夹被添加到执行过程中的 PATH 环境变量中。

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

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

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

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

npx 与 npm exec

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

例如:

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

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

$ foo bar --package=@npmcli/foo

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

$ 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

3.3 配置

package

  • 默认值:
  • 类型: 字符串(可以设置多次)

为 npm exec
 安装的一个或多个包。

call

  • 默认值: ""
  • 类型: 字符串

npm execnpx 的可选配套选项,允许指定自定义命令与已安装的包一起运行。

npm exec --package yo --package generator-node --call "yo node"

workspace

  • 默认值:
  • 类型: 字符串(可以设置多次)

启用在当前项目的已配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。

workspace 配置的有效值为:

  • 工作区名称
  • 工作区目录的路径
  • 父工作区目录的路径(将导致选择该文件夹中的所有工作区)

为 npm init 命令设置时,可以将其设置为尚不存在的工作区的文件夹,以创建文件夹并将其设置为项目中的全新工作区。

此值不会导出到子进程的环境中。

workspaces

  • 默认值: null
  • 类型: 空值或布尔值

设置为 true 以在所有配置的工作区的上下文中运行命令。

显式将此设置为 false 将导致像 install 这样的命令完全忽略工作区。 未明确设置时:

  • 在 node_modules 树上运行的命令(安装、更新等)会将工作区链接到 node_modules 文件夹。 - 执行其他操作(测试、执行、发布等)的命令将在根项目上运行,除非在 workspace 配置中指定了一个或多个工作区。

此值不会导出到子进程的环境中。

include-workspace-root

  • 默认值: false
  • 类型: 布尔值

为命令启用工作区时包括工作区根。

当为 false 时,通过 workspace 配置指定单个工作区,或通过 workspaces 标志指定所有工作区,将导致 npm 仅在指定的工作区上运行,而不是在根项目上运行。

3.4 示例

npm x --package=jiang-isarray
npx --package=jiang-isarray

在当前项目的上下文中运行任意 shell 脚本:

NPM 常用命令(五),Node.js,npm,前端,node.js文章来源地址https://www.toymoban.com/news/detail-700636.html

到了这里,关于NPM 常用命令(五)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安装了node.js,但是npm命令不可用的解决方案

    今天想创建一个vue项目,发现npm命令用不了了 第一步:检查是否安装了node.js 第二步:检查node.js的安装路径是否添加到了Path环境变量 右键单击【此电脑】,在显示的菜单里点击【属性】,此时会打开系统设置窗口,点击如下位置的【高级系统设置】,在弹出的系统属性小窗

    2024年02月11日
    浏览(74)
  • 前端笔记10——Win7下node.js和npm版本兼容性问题解决。

    新版本node.js不支持WIN7。 Win7的电脑只能支持到Node v13.14.0。 可能之前装了新版本的node,删了重装后,导致运行npm命令老是提醒信息,说是不支持node版本。 npm does not support Node.js v13.14.0 可是显示版本正常 解决方法: 卸载node之后,在把npm和npm cache两个文件夹删掉。 删干净后再

    2024年02月15日
    浏览(62)
  • NPM命令运行报错:npm v10.2.4 is known not to run on Node.js v14.21.1

    网上看过很多人说使用 npm install -g npm@xxx 解决 , 不知道遇到的情况是否一样,npm命令都用不了还使用npm命令安装去解决问题,怎么想的? 我遇到的是linux系统的npm版本与node版本不一致的问题,导致出现这个问题,最终解决方式是: 1.使用 find -name  npm,找到npm的安装路径,并

    2024年02月02日
    浏览(80)
  • Node js 升级更新后 npm用不了 npm npm does not support Node.js 或者node版本太低

    一开始是出现node版本太低,然后升级了node发现升级后npm不支持,发现是node的版本需要与npm对应,而npm没法跨级升,下面教大家解决办法: 一、检查你的nodejs和npm的版本能否对应得上 (注:如果npm版本查询显示空也可以用下面的方法) 这里附上 npm和node版本对照官网 : 以往的

    2024年02月02日
    浏览(54)
  • npm 创建 node.js 项目

    package.json重要说明 package.json是创建任何node.js项目必须要有的一个文件。 因为在package.json文件中,有详细的项目描述, 包括: (1)项目名称:name (2)版本:version (3)依赖文件:dependencies 等等.. 1. 创建node.js项目步骤 (1) 创建package.json文件 (2) 运行npm install 创建node_modules这个文件夹

    2024年02月11日
    浏览(53)
  • Win安装Node.js Npm

    1、在使用之前,先类掌握3个东西,明白它们是用来干什么的: npm: nodejs 下的包管理器。 webpack: 它主要用途是通过CommonJS 的语法把所有浏览器端需要发布的静态资源作相应的准备,比如资源的合并和打包。 vue-cli: 用户生成Vue工程模板。(帮你快速开始一个vue的项目,也就是

    2024年02月08日
    浏览(112)
  • Node.js与npm版本比对

    我们在项目开发过程中,经常会遇到公司一些老的前端工程项目,而我们当前的node及npm版本都是相对比较新的了。 在运行以前工程时,会遇到相关环境不匹配的问题,那么 就需要对现有的node及npm版本进行降级,所以就需要找到对应的node与npm版本比对表格。 下面是从官网找

    2024年02月08日
    浏览(55)
  • Ubuntu下安装Node.js;npm

    Ubuntu下安装Node.js curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs Ubuntu下安装npm sudo apt-get install npm Ubuntu下指定版本升级npm sudo npm install npm@8.15.0 -g Ubuntu下升级node 安装n模块:sudo npm install -g n 指定node版本:sudo n v18.0.0(版本号) 所有的升级版本操作都要关

    2024年02月14日
    浏览(60)
  • npm启动,node.js版本过高

    “dev_t”: “set NODE_OPTIONS=”–openssl-legacy-provider\\\" npm run devn\\\"

    2024年02月12日
    浏览(54)
  • windows安装npm(Node.js)教程

    在使用之前,先了解下基础定义: npm:  nodejs 下的包管理器。 webpack: 它主要用途是通过CommonJS 的语法把所有浏览器端需要发布的静态资源作相应的准备,比如资源的合并和打包。 vue-cli: 用户生成Vue工程模板。(帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基

    2024年02月12日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包