NPM 常用命令(五)

news2025/1/12 8:38:17

目录

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 -v

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

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

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 的用户必须是可读写的。

1.4 验证缓存包的校验和

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

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

2、npm edit

2.1 命令

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

2.2 描述

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

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

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

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

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 脚本:

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

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

相关文章

java八股文面试[数据库]——explain

使用 EXPLAIN 关键字可以模拟优化器来执行SQL查询语句&#xff0c;从而知道MySQL是如何处理我们的SQL语句的。分析出查询语句或是表结构的性能瓶颈。 MySQL查询过程 通过explain我们可以获得以下信息&#xff1a; 表的读取顺序 数据读取操作的操作类型 哪些索引可以被使用 …

git快速查看某个文件修改的所有commit

1. git blame file git blame 可以显示历史修改的每一行记录,有时候我们只想了解某个文件一共提交几次commit,只显示commit列表,这种方式显然不满足要求。 2.git log常规使用 (1)显示整个project的所有commit (2)显示某个文件的所有commit 这是git log不添加参数的常规…

条件随机场与概率无向图因子分解参数化形式(一)

文章目录 前言条件随机场中条件概率定义Hammersley–Clifford 定理证明峰回路转条件概率运算总结基本的条件概率公式满足马尔可夫性的条件概率的公式 应用 前言 学习条件随机场时&#xff0c;对于条件随机场的参数化形式很难理解&#xff0c;从联合概率分布的分解角度出发也很…

jmeter 数据库连接配置 JDBC Connection Configuration

jmeter 从数据库获取变量信息 官方文档参考&#xff1a; [jmeter安装路径]/printable_docs/usermanual/component_reference.html#JDBC_Connection_Configuration 引入数据库连接&#xff1a; 将MySQLjar包存放至jemter指定目录&#xff08;/apache-jmeter-3.3/lib&#xff09…

全网独家:编译CentOS6.10系统的openssl-1.1.1多版本并存的rpm安装包

CentOS6.10系统原生的openssl版本太老&#xff0c;1.0.1e&#xff0c;不能满足一些新版本应用软件的要求&#xff0c;但是它又被wget、mysql-libs、python-2.6.6、yum等一众系统包所依赖&#xff0c;不能再做升级。故需考虑在不影响系统原生openssl的情况下&#xff0c;安装较新…

python自动化办公--文件整理脚本详解

今天讲解文件整理脚本的实现过程。这是一个很有用的技能&#xff0c;可以帮助你管理你的电脑上的各种文件。需求如下&#xff1a; 需求内容&#xff1a;给定一个打算整理的文件夹目录&#xff0c;这个脚本可以将该目录下的所有文件都揪出来&#xff0c;并且根据后缀名归类到不同…

DDPG算法

DDPG算法 全称Deep Deterministic Policy Gradient&#xff0c;是对DPG、DQN的继承、发展和改进 对DQN算法&#xff1a;使其能够适用于连续动作空间对DPG算法&#xff1a;使用神经网络来拟合函数 算法介绍 核心&#xff1a;确定性策略梯度理论&#xff0c;在DPG算法中被提出&…

ChartJS使用-环境搭建(vue)

1、介绍 Chartjs简约不简单的JavaScript的图表库。官网https://chart.nodejs.cn/ Chart.js 带有内置的 TypeScript 类型&#xff0c;并与所有流行的 JavaScript 框架 兼容&#xff0c;包括 React 、Vue 、Svelte 和 Angular 。 你可以直接使用 Chart.js 或利用维护良好的封装程…

单片机第三季-第一课:STM32基础

官方网址&#xff1a;STMCU中文官网 STM32系列分类&#xff1a; 型号命名原则&#xff1a; STM32F103系列&#xff1a; 涉及到的几个概念&#xff1a; DMA&#xff1a;Direct Memory Access&#xff0c;直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间&…

机器学习:基于梯度下降算法的逻辑回归实现和原理解析

这里写目录标题 什么是逻辑回归&#xff1f;Sigmoid函数逻辑回归损失函数梯度下降 逻辑回归定义逻辑函数线性组合模型训练决策边界 了解逻辑回归&#xff1a;从原理到实现什么是逻辑回归&#xff1f;逻辑回归的原理逻辑回归的实现逻辑回归的应用代码示例算法可视化 当涉及到二元…

2023.8.1 Redis 的基本介绍

目录 Redis 的介绍 Redis 用作缓存和存储 session 信息 Redis 用作数据库 消息队列 消息队列是什么&#xff1f; Redis 用作消息队列 Redis 的介绍 特点&#xff1a; 内存中存储数据&#xff1a;奠定了 Redis 进行访问和存储时的快可编程性&#xff1a;支持使用 Lua 编写脚…

mp4压缩视频不改变画质?跟我这样压缩视频大小

在当今数字化时代&#xff0c;视频文件变得越来越普遍&#xff0c;然而&#xff0c;这些文件通常都很大&#xff0c;给存储和传输带来了困难&#xff0c;为了解决这个问题&#xff0c;许多人都希望将视频压缩得更小&#xff0c;而又不牺牲画质&#xff0c;下面就来看看具体应该…

前端基础5——UI框架Layui

文章目录 一、基本使用二、管理后台布局2.1 导航栏2.2 主题颜色2.3 字体图标 三、栅格系统四、卡片面板五、面包屑六、按钮七、表单八、上传文件九、数据表格9.1 table模块常用参数9.2 创建表格9.3 表格分页9.4 表格工具栏9.5 表格查询9.5.1 搜索关键字查询9.5.2 选择框查询 9.…

RK3568平台开发系列讲解(音视频篇)H264 的编码结构

🚀返回专栏总目录 文章目录 一、H264 的编码结构1.1、帧类型1.2、GOP1.3、Slice沉淀、分享、成长,让自己和他人都能有所收获!😄 📢视频编码的码流结构其实就是指视频经过编码之后得到的二进制数据是怎么组织的,换句话说,就是编码后的码流我们怎么将一帧帧编码后的图像…

【Cisco Packet Tracer】管理方式,命令,接口trunk,VLAN

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

日200亿次调用,喜马拉雅网关的架构设计

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 最近&#xff0c;尼恩指导一个小伙伴简历&#xff0c;写了一个《API网关项目》&#xff0c;此项目帮这个小伙拿到 字节/阿里/微博/…

【2023最新版】MySQL安装教程

目录 一、MySQL简介 二、MySQL安装 1. 官网 2. 下载 3. 安装 4. 配置环境变量 配置前 配置中 配置后 5. 验证 一、MySQL简介 MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它被广泛用于存储和管理结构化数据。MySQL提供了强大的功…

Scrapy简介-快速开始-项目实战-注意事项-踩坑之路

scrapy项目模板地址&#xff1a;https://github.com/w-x-x-w/Spider-Project Scrapy简介 Scrapy是什么&#xff1f; Scrapy是一个健壮的爬虫框架&#xff0c;可以从网站中提取需要的数据。是一个快速、简单、并且可扩展的方法。Scrapy使用了异步网络框架来处理网络通讯&…

[管理与领导-75]:IT基层管理者 - 辅助技能 - 4- 乌卡时代(VUCA )的职业规划

目录 一、什么是职业规划的主要内容 二、乌卡时代的职业规划特点 2.1 时代特点 2.2 个人能力要求 三、乌卡时代如何做好职业规划 一、什么是职业规划的主要内容 职业规划是一个有目标和有策略的过程&#xff0c;通过此过程&#xff0c;个人能够发展和管理自己的职业生涯。…

GPDB-内核原理-如何指定发送数据目的地

GPDB-内核原理-如何指定发送数据目的地 GPDB是一个分布式数据库&#xff0c;数据存放在各个segment上。Master用于接收用户请求&#xff0c;并将执行计划发送到各个segment上去执行。各个segment将数据发送个master汇总并返回用户。当进行join&#xff0c;join条件不是分布键时…