npm几个实用命令

news/2025/12/8 20:28:14/文章来源:https://www.cnblogs.com/xwwin/p/19321390

前言

最近接到公司安全团队的项目风险表格,列出了当前前端项目的一些安全风险,大概有190多项,第一个大坨是XSS的,第二大坨就是npm包需要升级的,看了下,需要升级的大概有55个包,最近在做这些包升级的时候发现了NPM以前很少用,但是确很实用的几个命令,特记录分享

实用命令

npm install package@version

此命令相对其它要介绍的几个命令应该是使用率算高的,它的功能就是指定安装特定的版本
先来看一下package.json版本规则符号对比表:

符号 示例 允许的版本范围 核心场景
无符号 1.4.2 1.4.2 版本敏感,禁止任何更新
^(插入号) ^1.4.2 1.4.2 → 1.9.9(主版本不变) 日常依赖,自动更功能/修复
~(波浪号) ~1.4.2 1.4.2 → 1.4.9(仅修订号更新) 保守更新,仅接受 bug 修复
>/< >=1.4.2 <3.0.0 1.4.2 → 2.9.9 精确控制版本区间
*(星号) 1.* 1.0.0 → 1.999.999 无版本依赖(极少用)
!(感叹号) >=1.4.0 !1.4.2 1.4.0、1.4.1、1.4.3+(排除 1.4.2) 禁止有问题的版本

如果你使用普通的npm install package,那它在package.json里写入的版本规则是第二项,如项目有lock文件的时候问题不大,但是没有的时候,你执行npm i,它会在可允许的范围内主动更新版本,如果你使用npm install package@version,那写入package.json的版本规则会是第一种,此次安全团队给出了要更新到的指定版本,所以在此处我选择的通过npm install package@version来实现安装指定版本并锁死版本号
使用示例:

npm install sass@1.94.2

npm ls package [--depth=0]

此命令用于查看你当前项目安装的package版本是多少,它会列出安装的所有的版本,此处我们以vue包为例,执行如下命令

npm ls vue

控制台会看到如下输出结果:

image

从上图我们还看到部分包后还带有deduped的灰色字,这个的意思是“去重” 的意思,是 de-duplicated 的缩写,代表这个包是 “重复依赖被合并后,复用了已安装的版本”,核心是 npm 优化依赖树的一种机制,当项目中多个依赖同时需要同一个包(且版本兼容)时,npm 会自动把重复的包合并到依赖树的更上层(比如根目录的 node_modules),避免重复安装。此时在 npm ls 中,被合并的重复包就会标注 deduped,表示 “这个包没单独装,而是复用了其他地方已有的版本”
上面命令还有一个可选参数就是--depth,控制依赖树的显示层级,避免默认npm ls输出过于冗长,用的不多,看二个例子:

  • npm ls vue --depth=0 只显示项目直接依赖(不显示子依赖)
  • npm ls vue --depth=1 显示直接依赖 + 一级子依赖

npm explain package

精准解释某个包被安装的原因(谁依赖它、依赖版本范围、安装路径),解决「明明没手动安装,却出现在node_modules」的困惑,个人感觉这个命令和上面ls有一点相似,都可以查看当前包安装了什么版本,哪一个版本被安装是因为哪一个依赖,我们还是以vue包来例

npm explain vue

在命令行看到如下结果:

image1

npm view package [version[s]]

此命令就是查看package包线上可用的版本,分带versiont和不带version,version又有分带不带s,

  • 不带version,从npm官方仓库(或当前配置的镜像源)中查询vue包的公开信息
  • 带version,并且带s就是列出所有可用历史版本
  • 带version,不带s就是当前最新的稳定可用版本
    此处我们还是以vue包为例:
npm view vue

控制台输出如下:

image2

此命令还可以指定版本号,使用方式是npm view vue@version,就是查看指定版本的公开信息,这个命令给我的感觉就是在命令行中打开vue包的npm简版详情页

npm view vue versions

控制台会看到如下输出结果:

image3

如果不带s,控制台输出如下:

image4

npm view package[@version] dependencies [--json]

此命令就是上面npm view的另一种用法,它可以查看当前包当指版本的生产依赖和开发依赖,为什么单提出来说了,因为这个是我这一次用的最多的命令,因为安全团队给的需要你做升级的包里,它并不是当前项目的直接依赖,很多都是二级或者三级依赖,如果你要升三级依赖,那你就得去查看祖先级包哪一个版本可以让你这个依赖升级,单提出来的另一个原因是它还有一个在线web工具
此处我们还是以vue包为例:

npm view vue dependencies --json

命令行输出如下:

image5

它有在线版本:https://npmgraph.js.org/
使用体验如下:

image6

一开始我是使用上在命令行查看的,后面发现这个在线的工具后,就使用的都是这个在线的工具了,顺便说个题外话,如果同样的功能可以通过cli来用,也可以通过GUI来用,你通常会选择哪一个来用了?当然,我是后者,你了?

小结

对于做前端开发的我们基本每天都有在用NPM命令,但是还是有很多好用的功能是没有发现的,所以我一直都很敬畏技术,就像我写个人简历我觉得我自己掌握了的技术我敢用的二个字就是熟练,从来不敢用精通,因为精通一个东西真的不是那么容易的
个人的知识和能力是有限度,你在使用npm的时候有没有发现其它的一些好用的但是使用不太高频的功能,期待你的留言分享,一起学习一起进步

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

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

相关文章

产品研发管理 : 构建世界一流的产品研发管理体系

针对大部分客户分不清R&D 中R( 技术开发) 和D( 产品开发) 的区别,面临着研发周期长,需求不清晰,公司越做越大,却越来越不赚钱,越来越缺少核心竞争能力,研发人员越来越多,越来越难管理等问题。中国的大部分技…

iOS 知识点 - 多线程总结(GCD/Operation/Swift Concurrency/线程安全/线程通信)

前景回顾 简单回顾四个概念:进程 vs 线程进程:是操作系统资源分配的最小单位每个 App 通常就是一个进程,进程之间相互隔离,拥有各自的虚拟内存空间、文件描述符、沙盒目录。线程:是 CPU 任务调度的最小单位每个进…

前端实现页面截图及截图内容包含跨域图片时的处理

项目中遇到需要实现指定位置的截图,采取使用依赖 html2canvas 实现。 参考:https://html2canvas.hertzen.com/ 一、实现步骤: 1、下载依赖或者使用官方js文件链接,本文使用的js链接; 2、代码 style .screen-box {…

2025.12.8

今天练习了前后端的连接一起的增删改查

(最新)2025实测!这11款免费降AI率工具,哪款能救你论文?

(最新)2025实测!这11款免费降AI率工具,哪款能救你论文?一篇AI率高达92%的论文摘要,经过专业工具处理后竟能降至个位数,而某些免费工具却可能把它改得“面目全非”。选择正确的降AI工具,关乎你的论文命运。 凌晨…

LLM应用剖析: 小红书AI图文生成器-红墨

本文介绍了小红书的一键图文生成平台,并提供了系统的基本执行流程及原理。同时分享了本人基于本地部署后,生成的图文效果,眼过千遍不如手过一遍,实践方能出真知。1. 背景花了近一周时间,深入研究了Github近几天比…

openSIS 8.0 SQL注入漏洞技术分析与利用

本文详细分析了openSIS社区版8.0中存在的SQL注入漏洞(CVE-2021-40617),提供了完整的漏洞利用证明和复现步骤,涉及通过ForgotPassUserName.php参数注入的具体攻击向量。漏洞标题: openSIS Community Edition 8.0 - …

【把Linux“聊”明白】进程的概念与状态 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

17.Mybatis之代理对象的执行

1.调用 Mapper 方法时,所有请求都会转发到 MapperProxy.invoke(),这是整个流程的入口: public class MapperProxy<T> implements InvocationHandler, Serializable {private final SqlSession sqlSession;pri…

哥大与某机构共建AI研究中心,五年投资500万美元

文章宣布了某机构与哥伦比亚大学工程学院合作,在纽约创立人工智能技术中心。该中心将获得500万美元的五年期资助,用于支持博士生奖学金、跨学科研究项目以及公开研讨会,旨在推动人工智能技术的前沿创新与应用普及。…

中国电子学会全国机器人技术等级考试(一级)2019年12月 - 详解

中国电子学会全国机器人技术等级考试(一级)2019年12月 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Co…

道1:“知识型英语”和“本能型英语”都要学

两种记忆系统: ……陈述性记忆:事实and概念,存储关于……的知识 ……程序性记忆:技能and习惯,存储如何做的知识 两种英语(都要学): ……知识型英语:知识记忆模式,多静态输入。核心策略:理解加记忆、语法当公…

IDEA源码阅读神器-Diagram专业的工具

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 软件开发者指南 Chapter7

读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 软件开发者指南 Chapter7目录前言Chapter 7: System Boot and Configuration 系统引导和配置7.1 Boot Process Overview 引导过程概述7.2 Bo…

2025年苗木批发基地供应商口碑榜:前十强深度解析,丝棉木/金森女贞/青叶复叶槭/红叶李/国槐/白蜡/无刺枸骨球苗木批发基地供应商排行榜单

随着城乡绿化建设标准提升与生态修复项目持续推进,苗木产业作为基础支撑环节,其供应商的综合实力与市场口碑愈发受到行业关注。一个可靠的苗木批发基地,不仅需要具备丰富的产品矩阵,更需在种植规范化、品质稳定性及…

2025 年优质服装批发市场推荐:精准适配需求,解锁高效采批新体验

中国服装协会《2024-2025 中国服装行业发展报告》显示,服装采购商年均采批频次提升 23%,但货源同质化、物流低效、线上线下断层等问题仍制约采批效率。红遍天旗下三大专业市场 ——apM 时代国际、红遍天 CENTRE、Ava…

MySQL 性能实测:Docker 容器 vs 裸机部署,差距到底有多大?

本文通过多组对照实验,深入测试 MySQL 在 Docker 容器和裸机环境下的性能差异,揭示影响性能的真正因素。测试背景 网上关于 "Docker 部署数据库会有性能损耗" 的说法众说纷纭。为了搞清楚真相,我在阿里云…

详细介绍:【二叉搜索树】:程序的“决策树”,排序数据的基石

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

thinkphp6 request /i /s等转换

在ThinkPHP框架中,`$this->request->post(type/s, )`里的`/s`是一个参数过滤和类型转换的标识。 具体含义:- `/s` 表示将获取到的参数转换为字符串类型(string)。 如果不加`/s`,默认情况下ThinkPHP会根据参…

An Explainable KG-RAG-Based Approach to Evidence-Based Fake News Detection Using LLMs

方法主张类型分类:采用微调后的 DeBERTaV3-large 模型,识别输入主张的类型,具体包括 “立场声明”“事件 / 属性主张”“因果主张”“数值主张”“引文验证” 五类。示例检索:运用 BM25 算法,从训练集中检索与输入…