NPM 常用命令(四)
目录
1、npm diff
1.1 描述
1.2 过滤文件
1.3 配置
diff
diff-name-only
diff-unified
diff-ignore-all-space
diff-no-prefix
diff-src-prefix
diff-dst-prefix
diff-text
global
tag
workspace
workspaces
include-workspace-root
2、npm dist-tag
2.1 常用命令
2.2 描述
2.3 目的
2.4 注意事项
3、npm-docs
3.1 命令
3.2 描述
1、npm diff
1.1 描述
与其对应的 git diff 类似,此命令将打印发布到 npm 注册表的包的文件差异补丁。
-
npm diff --diff=<spec-a> --diff=<spec-b>使用注册表说明符比较两个包版本,例如:
npm diff --diff=pkg@1.0.0 --diff=pkg@^2.0.0。 也可以比较任何包的复刻,例如:npm diff --diff=pkg@1.0.0 --diff=pkg-fork@1.0.0。可以使用任何有效的规范,因此也可以比较目录或 git 存储库,例如:
npm diff --diff=pkg@latest --diff=./packages/pkg这是一个比较注册表中名为
qs的包的两个不同版本的示例npm diff --diff=./myapp/node_modules/qs --diff=./myapp1/node_modules/qs

-
npm diff(在包目录中,无参数):如果包发布到注册表,
npm diff将获取标记为latest的 tarball 版本(可以使用tag选项配置此值)并继续比较该 tarball 中存在的文件内容与本地文件中的当前文件系统。此工作流程为包作者提供了一种方便的方式,可以查看与该包的最新发布版本相比,哪些包跟踪文件已更改。
-
npm diff --diff=<pkg-name>(在包目录中):当使用单个包名(没有版本或标签说明符)作为参数时,
npm diff将以与 npm-outdated 类似的方式工作,并到达注册表以确定名为<pkg-name>的包的当前发布版本将满足其依赖声明的 semver -范围。 一旦知道该特定版本,npm diff将打印差异补丁,将在本地文件系统中找到的<pkg-name>的当前版本与注册表返回的特定版本进行比较。给定当前安装的名为
abbrev的包:npm diff --diff=abbrev这将向注册表请求其最新版本,如果版本号不同,将打印一个比较当前安装的版本与新版本的差异输出。
-
npm diff --diff=<spec-a>(在包目录中):与仅使用单个包名称类似,如果你希望将已安装包的本地版本与
<spec-a>中提供的特定版本/标签/semver-range 进行比较,也可以声明完整的注册表说明符版本。一个例子: 假设
pkg@1.0.0安装在当前的node_modules文件夹中,运行:npm diff --diff=pkg@2.0.0它实际上是
npm diff --diff=pkg@1.0.0 --diff=pkg@2.0.0的别名。 -
npm diff --diff=<semver-a> [--diff=<semver-b>](在包目录中):使用
npm diff和 semver-valid 版本号是比较当前包的不同版本的简写。它需要从一个包目录运行,这样对于一个名为
pkg的包来说,运行npm diff --diff=1.0.0 --diff=1.0.1与运行npm diff --diff=pkg@1.0.0 --diff=pkg@1.0.1是一样的。如果只提供了一个参数
<version-a>,那么当前本地文件系统将与该版本进行比较。这是一个比较当前项目目录的两个特定版本(发布到配置的注册表)的示例:
npm diff --diff=1.0.0 --diff=1.1.0请注意,标签名称不是有效的
--diff参数值,如果你希望与已发布的标签进行比较,则必须使用pkg@tagname语法。
1.2 过滤文件
也可以使用文件名或 glob 模式匹配指定位置参数,以便将差异补丁的结果限制为给定包的文件子集,例如:
npm diff --diff=pkg@2 ./lib/ CHANGELOG.md
在上面的示例中,diff 输出只会打印位于文件夹 ./lib/ 中的文件的内容以及 CHANGELOG.md 文件中更改的代码行。
1.3 配置
diff
- 默认值:
- 类型: 字符串(可以设置多次)
定义要在 npm diff 中比较的参数。
diff-name-only
- 默认值: false
- 类型: 布尔值
使用 npm diff 时仅打印文件名。
diff-unified
- 默认值: 3
- 类型: 数字
要在 npm diff 中打印的上下文行数。
diff-ignore-all-space
- 默认值: false
- 类型: 布尔值
比较 npm diff 中的行时忽略空格。
diff-no-prefix
- 默认值: false
- 类型: 布尔值
不要在 npm diff 输出中显示任何源或目标前缀。
注意: 这会导致 npm diff 忽略 --diff-src-prefix 和 --diff-dst-prefix 配置。
diff-src-prefix
- 默认值: "a/"
- 类型: 字符串
npm diff 输出中使用的源前缀。
diff-dst-prefix
- 默认值: "b/"
- 类型: 字符串
npm diff 输出中使用的目标前缀。
diff-text
- 默认值: false
- 类型: 布尔值
将所有文件视为 npm diff 中的文本。
global
- 默认值: false
- 类型: 布尔值
在 "global" 模式下运行,以便将包安装到 prefix 文件夹而不是当前工作目录。
- 包安装到
{prefix}/lib/node_modules文件夹,而不是当前工作目录。 - bin 文件链接到
{prefix}/bin - 手册页链接到
{prefix}/share/man
tag
- 默认值: "latest"
- 类型: 字符串
如果你让 npm 安装一个包并且没有告诉它一个特定的版本,那么它会安装指定的标签。
如果没有给出显式标记,则还有添加到 npm tag 命令指定的 package@version 的标记。
当被 npm diff 命令使用时,这是用于获取 tarball 的标签,默认情况下将与本地文件进行比较。
workspace
- 默认值:
- 类型: 字符串(可以设置多次)
启用在当前项目的已配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。
workspace 配置的有效值为:
- 工作区名称
- 工作区目录的路径
- 父工作区目录的路径(将导致选择该文件夹中的所有工作区)
为 npm init 命令设置时,可以将其设置为尚不存在的工作区的文件夹,以创建文件夹并将其设置为项目中的全新工作区。
此值不会导出到子进程的环境中。
workspaces
- 默认值: null
- 类型: 空值或布尔值
设置为 true 以在 all 配置的工作区的上下文中运行命令。
显式将此设置为 false 将导致像 install 这样的命令完全忽略工作区。 未明确设置时:
- 在
node_modules树上运行的命令(安装、更新等)会将工作区链接到node_modules文件夹。 - 执行其他操作(测试、执行、发布等)的命令将在根项目上运行,除非在workspace配置中指定了一个或多个工作区。
此值不会导出到子进程的环境中。
include-workspace-root
- 默认值: false
- 类型: 布尔值
为命令启用工作区时包括工作区根。
当为 false 时,通过 workspace 配置指定单个工作区,或通过 workspaces 标志指定所有工作区,将导致 npm 仅在指定的工作区上运行,而不是在根项目上运行。
2、npm dist-tag
2.1 常用命令
npm dist-tag add <package-spec (with version)> [<tag>]
npm dist-tag rm <package-spec> <tag>
npm dist-tag ls [<package-spec>]别名: dist-tags
2.2 描述
在包上添加、删除和枚举分发标签:
-
add: 使用指定的标记标记指定版本的包,如果没有指定,则标记为 --tag 配置。 如果你在 auth-and-writes 上有双重身份验证,那么你需要在命令行中使用
--otp <one-time password>包含一次性密码,或者通过基于你的authtype的第二重流程。 -
rm: 清除封装中不再使用的标签。 如果你在 auth-and-writes 上有双重身份验证,那么你需要在命令行中使用
--otp <one-time password>包含一次性密码,或者通过基于你的authtype的第二重流程 -
ls: 显示包的所有 dist-tags,默认为当前前缀中的包。 如果未指定,则这是默认操作。
安装包时可以使用标记作为对版本的引用,而不是使用特定的版本号:
npm install <name>@<tag>
例如:安装 qs 的tag 为latest

npm install qs@latest

打开安装包,可以看一下tag对应的版本号:

安装依赖时,可以指定首选标记版本:
npm install --tag <tag>
(这也适用于解析和安装依赖的任何其他命令,例如 npm dedupe、npm update 和 npm audit fix。)
除非使用 --tag 选项,否则发布包会将 latest 标记设置为已发布版本。 例如,npm publish --tag=beta。
默认情况下,npm install <pkg>(没有任何 @<version> 或 @<tag> 说明符)安装 latest 标签。
2.3 目的
标签可用于提供别名而不是版本号。
例如,一个项目可能选择有多个开发流并为每个流使用不同的标签,例如,stable、beta、dev、canary。
默认情况下,npm 使用 latest 标签来标识包的当前版本,而 npm install <pkg>(没有任何 @<version> 或 @<tag> 说明符)安装 latest 标签。 通常,项目只使用 latest 标签表示稳定版本,而使用其他标签表示不稳定版本,例如 prereleases。
一些项目使用 next 标签来标识即将发布的版本。
除了 latest,没有任何标签对 npm 本身有任何特殊意义。
2.4 注意事项
该命令以前称为 npm tag,它只创建新标签,因此具有不同的语法。
标签必须与版本号共享一个命名空间,因为它们是在同一个插槽中指定的: npm install <pkg>@<version> 对 npm install <pkg>@<tag>。
可以解释为有效 semver 范围的标签将被拒绝。 例如,v1.4 不能用作标签,因为它被 semver 解释为 >=1.4.0 <1.5.0。 见 npm -g i npm@v1.4 installs from v1.4-next · Issue #6082 · npm/npm · GitHub。
避免标签出现语义问题的最简单方法是使用不以数字或字母 v 开头的标签。
3、npm-docs
3.1 命令
npm docs [<pkgname> [<pkgname> ...]]别名: home
3.2 描述
此命令尝试猜测包文档 URL 的可能位置,然后尝试使用 --browser 配置 参数打开它。 你可以一次传递多个包名称。 如果没有提供包名,它将在当前文件夹中搜索 package.json 并使用 name 属性。
如果package.json中有指定URL,浏览器会自动对应的URL,如果没有提供则直接打开npm注册表中包的页面。
例如:运行 npm docs qs

未指定URL,例如:npm docs jiang-isarray:

相关文章:
NPM 常用命令(四)
目录 1、npm diff 1.1 描述 1.2 过滤文件 1.3 配置 diff diff-name-only diff-unified diff-ignore-all-space diff-no-prefix diff-src-prefix diff-dst-prefix diff-text global tag workspace workspaces include-workspace-root 2、npm dist-tag 2.1 常…...
Anaconda虚拟环境下导入opencv
文章目录 解决方法测试 解决方法 1、根据自己虚拟环境对于的python版本与电脑对应的位长选择具体的版本,例如python3.9选择cp39,64位电脑选择64 下载地址:资源地址 若是不确定自己虚拟环境对应的python版本,可以输入下列命令&…...
Linux设备驱动程序
一、设备驱动程序简介 图1.1 内核功能的划分 可装载模块 Linux有一个很好的特性:内核提供的特性可在运行时进行扩展。这意味着当系统启动 并运行时,我们可以向内核添加功能( 当然也可以移除功能)。 可在运行时添加到内核中的代码被称为“模块”。Linux内核支持好几…...
mybatis <if>标签判断“0“不生效
原if标签写法 <if test"type 0"><!--内部逻辑--> </if> 这种情况不生效,原因是mybatis是用OGNL表达式来解析的,在OGNL的表达式中,0’会被解析成字符(而我传入的type却是string),java是强类型的,cha…...
企业数据的存储形式与方案选择
企业数据的存储形式 DAS(直接附加存储):企业初期银行规模不大,企业的数据存储需求也比较简单,因此对企业数据存储的要求就是安全保存并可以随时调用。而DAS的之间连接可以解决单台服务器的存储空间扩展,高…...
图像处理简介
目录 基本术语 1 .图像(image) 1.1 像素(Pixel) 1.2 颜色深度(Color Depth) 1.3 分辨率(Resolution) 1.4 像素宽高比(Pixel Aspect Ratio) 1.5 帧率(FPS) 1.6 码率(BR) 1. …...
adb server version (19045) doesn‘t match this client (41); killing.的解决办法
我是因为安装了360手机助手,导致adb版本冲突。卸载之后问题解决 根据这个思路,如果产生"adb server version (19045) doesn’t match this client (41); killing."的错误,检查一下是否有多个版本的adb服务。...
实验室的服务器和本地pycharm怎么做图传
提前说一个 自认为 比较重要的一点: 容器中安装opencv,可以先试试用 apt install libopencv-dev python3-opencv 我感觉在图传的时候用的不是 opencv-python 而是ubuntu的opencv库 所以用 apt install 安装试一下 参考 远程调试 qt.qpa.xcb: coul…...
Vue + Element UI 前端篇(五):国际化实现
Vue Element UI 实现权限管理系统 前端篇(五):国际化实现 国际化支持 1.安装依赖 执行以下命令,安装 i18n 依赖。 yarn add vue-i18n $ yarn add vue-i18n yarn add v1.9.4 warning package-lock.json found. Your project …...
[ROS]虚拟机ubuntu18.04系统里面运行usb_cam
首先安装usb_cam sudo apt-get install ros-melodic-usb-cam 运行: roscore roslaunch usb_cam usb_cam-test.launch 如果一运行报错,首先确认是否存在/dev/video0 可以使用ls /dev/video*查看,如果没有就是没有连接摄像头,…...
常用通讯协议比较
dubbo与http1.0的区别 二进制协议:Dubbo使用自定义的二进制协议,而HTTP 1.0使用文本,发送一条相同的消息,http1.0会有更大的网络开销。 连接复用:Dubbo采用单一的多路复用NIO长链接,每个请求都有一个对应的…...
鼠标键盘管理 ShareMouse for Mac最新
软件“ShareMouse”允许您通过单个鼠标和键盘控制多台计算机: 将鼠标移动到您想要控制的计算机的监视器上,指针会神奇地跳转到该计算机。任何鼠标和键盘输入都会传输到相应的计算机。 与网络KVM类似,ShareMouse通过本地LAN传输鼠标移动和点…...
【ALM工具软件】上海道宁与Perforce为您带来用于整个生命周期的应用程序生命周期管理软件
Helix ALM是 用于整个生命周期的 应用程序生命周期管理的ALM软件 具有专用于 需求管理(Helix RM)、测试用例管理(Helix TCM) 问题管理(Helix IM)的功能模块 Helix ALM提供了 无与伦比的可追溯性 您将…...
Android图形-架构2
目录 引言 组件概述 底层组件: 上层组件: 引言 Android图形架构主要涉及些什么呢? 1)Android 系统级图形架构的基本元素? 2)应用框架和多媒体系统如何使用这些元素? 3)图形数据…...
文字验证码:简单有效的账号安全守卫!
前言 文字验证码不仅是一种简单易懂的验证方式,同时也是保护您的账号安全的重要工具。通过输入正确的文字组合,您可以有效地确认自己的身份,确保只有真正的用户才能访问您的账号。 HTML代码 <script src"https://cdn6.kgcaptcha.…...
Shell 运算符及语法结构
目录 一、Shell运算符 1.1 表达式expr 1.2 运算操作 1.3 操作实例 二、Shell条件判断 2.1 基本语法 2.2 值、权限、类型、多条件判断 三、Shell流程控制 3.1 if 流程语法 3.2 case 流程语法 3.3 for 流程语法 3.4 内部运算符 3.5 while循环流程语法 四、Shell读…...
为什么要建前缀索引?
分析&回答 有一种与索引选择性有关的索引优化策略叫做前缀索引,就是用列的前缀代替整个列作为索引key,当前缀长度合适时,可以做到既使得前缀索引的选择性接近全列索引,同时因为索引key变短而减少了索引文件的大小和维护开销。…...
vite介绍
vite vite是一种新的前端构建工具,vite借助了浏览器对ESM的支持,采用和传统webpack打包完全不一致的unbundle打包机制; vite的快主要体现在两个方面,快速的冷启动和快速的热更新 快速的冷启动:vite只需启动一台静态页…...
2023年软件测试常见面试题
测试花费的成本,要深入在那个环节上,(前提准备上,需求理解上,业务逻辑,排错上,业务名词上理解,通过什么样的方法,有谁能解决这样的问题) 软性热身题 1.自我…...
关于const指针的一个常见误区
关于const,我曾因为其在C和C中的不同,还有一些编译器对未定义的处理不同,搞得晕头转向… 后来有次在阅读《C primer plus》中我终于梳理了有关const的结论。 1.const基础知识 首先要明白const的难点在于修饰指针的时候,对于con…...
OpenClaw配置备份指南:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF模型参数迁移方案
OpenClaw配置备份指南:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF模型参数迁移方案 1. 为什么需要备份OpenClaw配置 上周我的主力开发机突然硬盘故障,导致精心调校三个月的OpenClaw配置全部丢失。最痛心的不是框架重装,而是那些…...
快速上手FNF PsychEngine:3大核心功能完全指南
快速上手FNF PsychEngine:3大核心功能完全指南 【免费下载链接】FNF-PsychEngine Engine originally used on Mind Games mod 项目地址: https://gitcode.com/gh_mirrors/fn/FNF-PsychEngine FNF PsychEngine是一款专为《周五夜放克》(Friday Nig…...
AI Agent开发实战路线图:从入门到企业级应用的4阶段进阶指南
第一阶段|概念入门:从认知到代码 理解 AI Agent 的工作原理与架构。推荐课程:Microsoft《AI Agents for Beginners》、Hugging Face《AI Agents》。核心学习点:感知、决策、行动、反馈循环机制。第二阶段|核心技术&…...
告别静态贴图!用Cesium自定义材质打造会‘呼吸’的3D导航线
告别静态贴图!用Cesium自定义材质打造会“呼吸”的3D导航线 在无人机航线规划或车辆轨迹可视化项目中,传统静态贴图导航线常面临一个尴尬问题:当地图缩放时,箭头密度要么拥挤不堪,要么稀疏失真。这就像给动态场景穿上了…...
Capacitor插件避坑指南:Android/iOS双端自动更新那些踩过的坑
Capacitor跨平台自动更新实战:Android与iOS双端兼容性深度解析 移动应用开发中,自动更新功能是提升用户体验的关键环节。对于使用Capacitor框架的开发者而言,如何优雅处理Android和iOS平台的差异,成为技术实现的核心挑战。本文将…...
告别本地编译卡顿:用CLion+Docker容器实现丝滑的Linux远程C++开发(保姆级教程)
告别本地编译卡顿:用CLionDocker容器实现丝滑的Linux远程C开发(保姆级教程) 在Windows或Mac上开发Linux C项目时,你是否经历过这些困扰:本地交叉编译环境配置复杂、编译速度缓慢、依赖冲突频发,或是开发环境…...
GD32F30x串口DMA+空闲中断接收不定长数据,一个LED控制项目带你搞懂
GD32F30x串口DMA空闲中断实战:从零构建LED智能控制系统 在嵌入式开发中,串口通信就像设备的"嘴巴"和"耳朵",而DMA技术则是解放CPU的"隐形助手"。想象一下这样的场景:你需要通过手机APP远程控制实验…...
centos7安装MySQL8.4手册
目录前言一、首先更新插件,并查看当前系统版本二、安装步骤--在线安装1、创建mysql目录2、安装rpm包3、安装 mysql-community-server4、启动MySQL服务5、查看MySQL状态6、设置开机自启动三、查看默认密码四、登录mysql五、修改密码六、开启远程访问1. 修改 MySQL 配…...
dygraphs核心架构解析:理解Canvas渲染机制与高性能图表实现
dygraphs核心架构解析:理解Canvas渲染机制与高性能图表实现 【免费下载链接】dygraphs Interactive visualizations of time series using JavaScript and the HTML canvas tag 项目地址: https://gitcode.com/gh_mirrors/dy/dygraphs dygraphs是一个基于HTM…...
智能邮件秘书:OpenClaw+Qwen3.5-9B自动分类与回复
智能邮件秘书:OpenClawQwen3.5-9B自动分类与回复 1. 为什么需要自动化邮件处理? 每天早晨打开邮箱时,看到堆积如山的未读邮件总会让人头皮发麻。作为一位经常需要处理客户咨询的技术顾问,我最高纪录是一天收到187封邮件。即使每…...
