当前位置: 首页 > news >正文

NPM 常用命令(一)

目录

1、npm

1.1 简介

1.2 依赖性

1.3 安装方式

2、npm access

2.1 命令描述

2.2 详情

3、npm adduser

3.1 描述

4、npm audit

4.1 简介

4.2 审计签名

4.3 操作示例

4.4 配置

audit-level

dry-run

force

json

package-lock-only

omit

foreground-scripts

ignore-scripts

workspace

workspaces

include-workspace-root


1、npm

在命令行,输入npm命令可以显示npm可以对应命令,如下图所示:

npm

1.1 简介

npm是Node JavaScript平台的包管理器。它将模块放在适当的位置,以便节点可以找到它们,并智能地管理依赖关系冲突。

它是可配置的,以支持各种用例。最常见的是,您使用它来发布、发现、安装和开发节点程序。

运行npm help以获取可用命令的列表。

npm预先配置为使用npm的公共注册表(默认),npm公共注册表的使用是受以下网站提供的使用条款约束。

您可以配置npm使用您喜欢的任何兼容的注册表,甚至运行您自己的注册表。使用其他人的注册表受其使用条款的约束。

1.2 依赖性

如果一个包使用git URL列出了一个依赖项,npm将使用git命令安装该依赖项,如果没有安装,将生成一个错误。

如果npm尝试安装的包之一是本机节点模块,并且需要编译C++代码,则npm将使用node-gyp来完成该任务。对于Unix系统,node-gyp需要Python、make和像GCC这样的构建链。在Windows上,需要Python和Microsoft Visual Studio C++。

1.3 安装方式

npm 有两种安装方式:

  • 本地安装: npm将包安装到当前项目目录中, 默认为当前工作目录。 软件包安装到 ./node_modules
  • 全局模式: npm将包安装到安装前缀中 $npm_config_prefix/lib/node_modules

本地模式是默认模式。 在任何命令上使用-g--global 以全局模式运行。

2、npm access

npm access 可以设置已发布包的访问级别。

常用命令如下:

npm access public [<package>]
npm access restricted [<package>]
npm access grant <read-only|read-write> <scope:team> [<package>]
npm access revoke <scope:team> [<package>]
npm access 2fa-required [<package>]
npm access 2fa-not-required [<package>]
npm access ls-packages [<user>|<scope>|<scope:team>]
npm access ls-collaborators [<package> [<user>]]
npm access edit [<package>]

2.1 命令描述

对于所有子命令,如果没有包名传递给子命令,npm access将对当前工作目录中的包执行操作。

  • public / restricted(已弃用): 将包设置为可公开访问或受限制。
  • grant / revoke(已弃用):添加或删除用户和团队对包具有只读或读写访问权限的功能。
  • 2fa-required / 2fa-not-required(已弃用):配置包是否要求发布它的任何人在其帐户上启用双因素身份验证
  • ls-packages(已弃用):显示用户或团队能够访问的所有包沿着访问级别,只读公共包除外(它不会打印整个注册表列表)
  • ls-collaborators(已弃用):显示包的所有访问权限。将仅显示您至少具有读取访问权限的包的权限。如果<user>传入,则列表将仅过滤到用户碰巧所属的团队。
  • edit (未实现)

2.2 详情

npm访问总是直接在当前注册表上操作,可以使用--registry=从命令行进行其他注册表配置<registry url>。

未作用域的包始终是公共的。

作用域包默认为受限的,但您可以使用npm publish --access=public将其发布为public,或者在初始发布后使用npm access public将其访问权限设置为public。

必须要有设置包访问权限的权限:

1、您是未限定作用域或限定作用域的包的所有者

2、您是拥有范围的团队的成员。

3、您已经被授予了对软件包的读写权限,无论是作为团队成员还是直接作为所有者。

如果您启用了双因素身份验证,则系统会提示您提供第二个因素证明,或者使用--otp=...选项在命令行上指定。

如果您的帐户没有付费,那么尝试发布范围内的软件包将失败,并显示HTTP 402状态码(逻辑上足够),除非您使用--access=public。

团队和团队成员的管理是通过npm tean命令完成的。

3、npm adduser

3.1 描述

在指定的注册表中创建新用户,并将凭据保存到.npmrc文件中。如果未指定注册表,则将使用默认注册表。

当auth-type为legacy时,用户名、密码和电子邮件将从提示中读入。

auth-type

  • Default:“web”
  • Type: "legacy" or "web"

登录时使用什么身份验证策略。请注意,如果给定了otp配置,则该值将始终设置为legacy。

4、npm audit

使用命令如下:

npm audit [fix|signatures]

4.1 简介

audit命令将项目中配置的依赖项的描述提交到默认注册表,并要求提供已知漏洞的报告。如果发现任何漏洞,则将计算影响和适当的补救措施。如果提供了fix参数,则将对包树应用修正。

如果未发现漏洞,该命令将以0退出代码退出。

请注意,某些漏洞无法自动修复,需要手动干预或审查。还要注意的是,由于npm audit fix在后台运行了一个成熟的npm install,所有适用于安装程序的配置也将适用于npm install --所以像npm audit fix --package-lock-only这样的东西会像预期的那样工作。

默认情况下,如果发现任何漏洞,audit命令将以非零代码退出。在CI环境中,包含--audit-level参数以指定将导致命令失败的最低漏洞级别可能很有用。此选项不过滤报告输出,它只是更改命令的失败阈值。

如果包安全会如下所示:

如果有对应不安全的包,下面这个包严重级别为高级,如下所示:

4.2 审计签名

为了确保从公共npm注册表或任何支持签名的注册表下载的包的完整性,可以使用npm CLI验证下载包的注册表签名。

注册表签名可以使用以下audit命令进行验证:

npm audit signatures

如果遵循以下约定,npm CLI支持任何注册表提供的注册表签名和签名密钥:

1、签名在dist对象内的每个已发布版本的包的提供

例如:lodash v4.17.21

lodash - npm

https://registry.npmjs.org/ + "包名" + 对应版本号,可以查看对应签名。

sig 是使用以下模板生成的: ${package.name}@${package.version}:${package.dist.integrity} 和 keyid 必须匹配以下公共签名密钥之一。

{"keys":[{"expires":null,"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","keytype":"ecdsa-sha2-nistp256","scheme":"ecdsa-sha2-nistp256",    
"key":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg=="}]
}
  • expires: null 或简化的扩展 ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ
  • keydid: 公钥的 sha256 指纹
  • keytype: npm CLI 当前仅支持 ecdsa-sha2-nistp256
  • scheme: npm CLI 当前仅支持 ecdsa-sha2-nistp256
  • key: base64 编码的公钥

4.3 操作示例

扫描你的项目是否存在漏洞,并自动为易受攻击的依赖安装任何兼容更新:

npm audit fix

在不修改 node_modules 的情况下运行 audit fix,但仍然更新 pkglock:

npm audit fix --package-lock-only

跳过更新 devDependencies

npm audit fix --only=prod

让 audit fix 对顶层依赖安装 SemVer 主要更新,而不仅仅是与 SemVer 兼容的更新:

npm audit fix --force

进行试运行以了解 audit fix 将做什么,并以 JSON 格式输出安装信息:

npm audit fix --dry-run --json

获取 JSON 格式的详细审计报告:

npm audit --json

仅当结果包含中等或更高级别的漏洞时,审核才会失败:

npm audit --audit-level=moderate

4.4 配置

audit-level

  • 默认值: null
  • 类型: 空、"info"、"low"、"moderate"、"high"、"critical" 或 "none"

npm audit 以非零退出代码退出的最低漏洞级别。

dry-run

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

表示你不希望 npm 进行任何更改,并且它应该只报告它会做的事情。 这可以传递到任何修改本地安装的命令中,例如 installupdatededupeuninstall 以及 pack 和 publish

注意: 其他网络相关命令不支持此功能,例如 dist-tagsowner 等。

force

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

删除了针对不幸的副作用、常见错误、不必要的性能下降和恶意输入的各种保护。

  • 允许在全局安装中破坏非 npm 文件。
  • 允许 npm version 命令在不干净的 git 存储库上工作。
  • 允许使用 npm cache clean 删除缓存文件夹。
  • 允许安装具有 engines 声明需要不同版本的 npm 的包。
  • 允许安装具有 engines 声明需要不同版本 node 的包,即使启用了 --engine-strict
  • 允许 npm audit fix 安装超出你声明的依赖范围的模块(包括 SemVer 的主要更改)。
  • 允许取消发布已发布包的所有版本。
  • 允许在根项目中安装冲突的 peerDependencies。
  • 在 npm init 时隐式设置 --yes
  • 允许破坏 npm pkg 中的现有值
  • 允许取消发布整个包(不仅仅是单个版本)。

如果你对自己想要做什么没有明确的想法,强烈建议你不要使用此选项!

json

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

是否输出 JSON 数据,而不是正常输出。

  • 在 npm pkg set 中,它可以使用 JSON.parse() 解析集合值,然后再将它们保存到你的 package.json

并非所有 npm 命令都支持。

package-lock-only

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

如果设置为 true,当前操作将只使用 package-lock.json,忽略 node_modules

对于 update,这意味着只会更新 package-lock.json,而不是检查 node_modules 并下载依赖。

对于 list,这意味着输出将基于 package-lock.json 描述的树,而不是 node_modules 的内容。

omit

  • 默认值: 'dev' 如果 NODE_ENV 环境变量设置为 'production',否则为空。
  • 类型: "dev"、"optional"、"peer"(可多次设置)

要从磁盘上的安装树中省略的依赖类型。

请注意,这些依赖仍会被解析并添加到 package-lock.json 或 npm-shrinkwrap.json 文件中。 它们只是没有物理安装在磁盘上。

如果一个包类型同时出现在 --include 和 --omit 列表中,那么它将被包括在内。

如果生成的省略列表包含 'dev',则 NODE_ENV 环境变量将针对所有生命周期脚本设置为 'production'

foreground-scripts

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

在前台进程中运行已安装包的所有构建脚本(即 preinstallinstall 和 postinstall)脚本,与主 npm 进程共享标准输入、输出和错误。

请注意,这通常会使安装运行速度变慢,并且噪音更大,但对调试很有用。

ignore-scripts

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

如果为 true,npm 不会运行 package.json 文件中指定的脚本。

请注意,如果设置了 ignore-scripts,则明确旨在运行特定脚本的命令(例如 npm startnpm stopnpm restartnpm test 和 npm run-script)仍将运行其预期的脚本,但它们不会运行任何前置或后置脚本。

workspace

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

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

workspace 配置的有效值为:

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

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

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

workspaces

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

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

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

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

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

include-workspace-root

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

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

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

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

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

设置文件时: 协议依赖将作为常规依赖打包和安装,而不是创建符号链接。 此选项对工作区没有影响。

相关文章:

NPM 常用命令(一)

目录 1、npm 1.1 简介 1.2 依赖性 1.3 安装方式 2、npm access 2.1 命令描述 2.2 详情 3、npm adduser 3.1 描述 4、npm audit 4.1 简介 4.2 审计签名 4.3 操作示例 4.4 配置 audit-level dry-run force json package-lock-only omit foreground-scripts …...

【ES6】Promise推荐用法

一般来说&#xff0c;不要在then()方法里面定义 Reject 状态的回调函数&#xff08;即then的第二个参数&#xff09;&#xff0c;总是使用catch方法。 // bad promise.then(function(data) {// success}, function(err) {// error});// good promise.then(function(data) { //…...

【JavaScript】版本判断

用于客户端和服务端进行版本更新判断使用&#xff0c;如有BUG&#xff0c;还望指出 效果 console.log(isAllowUpdate(1,2.0.0), // trueisAllowUpdate(2.0,2.0.0), // falseisAllowUpdate(2.0,2.0.1), // trueisAllowUpdate(2.1.1,2.1.2), // trueisAllowUpdate(2.1.3,2.1.2),…...

Nano编辑器安装使用指南

关于nano Nano编辑器是一个命令行文本编辑器&#xff0c;具有简单易用的界面和一些基本功能。 Nano小巧友好&#xff0c;提供许多额外的特性&#xff0c;例如交互式的查找和替换、定位到指定的行列、自动缩进、特性切换、国际化支持、文件名标记完成等。 Nano是为了代替闭源的…...

Java版电子招投标管理系统源码-电子招投标认证服务平台-权威认证

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及…...

Java String类(1)

String类的重要性 我们之前在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能使用字符数组或者字符指针&#xff0c;可以使用标准库提供的字符串系列函数完成大部分操作&#xff0c;但是这种将数据和操作数据的方法分离开的方式不符合面向对象的思想&…...

渗透测试漏洞原理之---【CSRF跨站请求伪造】

文章目录 1、CSRF概述1.1、基本原理1.1.1、基本概念1.1.2、关键点1.1.3、目标 1.2、CSRF场景1.2.1、银行支付转账1.2.2构造虚假网站1.2.3、场景建模 1.3、CSRF类别1.3.1、POST方式 1.4、CSRF验证1.4.1、CSRF PoC Generator 2、CSRF攻防2.1、CSRF实战2.1.1、与XSS 漏洞相结合 2.…...

带量采购药品数据查询集采分析平台(建议收藏!)

药品集采常态化下对不同中标企业的影响不尽相同&#xff0c;对于市场份额较大且拥有多款重要药品的大型企业来说&#xff0c;集采能够保持其市场份额&#xff0c;尽管被集采的药品可能会面临销售下降的局面&#xff0c;但该企业还有其他产品可以填补&#xff0c;整体影响不大。…...

概念解析 | 无线感知的新篇章:异构网络感知的原理与挑战

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:异构网络感知。 无线感知的新篇章:异构网络感知的原理与挑战 Interference Management in HetNets 在当今的无线通信领域,我们面临着一个重大的挑战:如何在有限的频谱资源…...

【大数据模型】让chatgpt为开发增速(开发专用提示词)

汝之观览&#xff0c;吾之幸也&#xff01;本文主要聊聊怎样才能更好的使用提示词&#xff0c;给开发提速&#xff0c;大大缩减我们的开发时间&#xff0c;比如在开发中使用生成表结构脚本的提示词&#xff0c;生成代码的提示词等等。 一、准备 本文主要根据Claude进行演示&am…...

读书笔记-《ON JAVA 中文版》-摘要23[第二十章 泛型-2]

文章目录 第二十章 泛型5. 泛型擦除5.1 泛型擦除5.2 迁移兼容性5.3 擦除的问题5.4 边界处的动作 6. 补偿擦除7. 边界8. 通配符8.1 通配符8.2 逆变 9. 问题10. 动态类型安全11. 泛型异常 第二十章 泛型 普通的类和方法只能使用特定的类型&#xff1a;基本数据类型或类类型。如果…...

【爬虫】5.6 Selenium等待HTML元素

目录 任务目标 创建Ajax网站 创建服务器程序 Selenium XX 等待 1. Selenium强制等待 2. Selenium隐性等待 3. Selenium循环等待 4. Selenium显示等待 等待方法 任务目标 在浏览器加载网页的过程中&#xff0c;网页的有些元素时常会有延迟的现象&#xff0c;在HTML元素…...

0102阿里云配置3台ECS服务器-大数据学习

文章目录 1 前言1 配置VPC和子网2 创建安全组3 创建云服务器ECS3.1 规划配置3.2 配置 4 xshell连接服务器5 配置基础环境5.1 主机名映射5.2 ssh免密登录5.3 jdk 6 问题集6.1 Permission denied (publickey,gssapi-keyex,gssapi-with-mic).6.2 用tar解压文件出现错误Not found i…...

android 输入法demo

背景&#xff1a; 一个简单的android输入法demo&#xff0c;支持输入png、gif&#xff0c;jpeg、webp等格式。 此示例演示如何编写一个应用程序&#xff0c;该应用程序接受使用 Commit Content API 从键盘发送的丰富内容&#xff08;例如图像&#xff09;。 用户通常希望通过表…...

【经验分享】Markdown中如何显示空格和回车

Markdown中如何显示空格和回车 空格 利用html中的空格实体引用&#xff1a; eg&#xff1a; 这是一些 额外的空格。回车&#xff1a; 方法一&#xff1a;在你想要回车的地方连续按两次回车键 方法二&#xff1a;使用<br>标签 eg&#xff1a; 我想显示<br>…...

深入篇【C++】set和map(multiset/multimap)特性总结与使用

深入篇【C】set和map(multiset/multimap&#xff09;特性总结与使用 一.set/multiset总结二.map/multiset总结三.set/map应用 一.set/multiset总结 set是按照一定次序存储元素的容器在set中&#xff0c;元素的value也标识它(value就是key&#xff0c;类型为T)&#xff0c;并且每…...

OpenAI推出ChatGPT企业版,提供更高安全和隐私保障

&#x1f989; AI新闻 &#x1f680; OpenAI推出ChatGPT企业版&#xff0c;提供更高安全和隐私保障 摘要&#xff1a;OpenAI发布了面向企业用户的ChatGPT企业版&#xff0c;用户可以无限制地访问强大的GPT-4模型&#xff0c;进行更深入的数据分析&#xff0c;并且拥有完全控制…...

Linux虚拟机磁盘扩容

Linux虚拟机磁盘扩容 问题起源 在使用linux系统开发时遇到文件无法创建的问题&#xff0c;根据提示发现是磁盘空间不足。 使用df -h查看具体磁盘使用情况。 针对这个问题&#xff0c;有两种解决方案&#xff1a; 使用du -sh ./*可以查看当前工作目录下各文件的占用空间大小…...

【Go 基础篇】Go语言结构体实例的创建详解

在Go语言中&#xff0c;结构体是一种强大的数据类型&#xff0c;允许我们定义自己的复杂数据结构。通过结构体&#xff0c;我们可以将不同类型的数据字段组合成一个单一的实例&#xff0c;从而更好地组织和管理数据。然而&#xff0c;在创建结构体实例时&#xff0c;有一些注意…...

服务器上使用screen的学习记录

服务器上使用screen 训练模型的时候&#xff0c;花费时间是很长的&#xff0c;不可能一直挂在桌面上。所以就想到用screen了。 记录一下简单的操作指令。 创建screen screen -S roof # 新建一个名字为name的窗口&#xff0c;并进入到该窗口中进入后打开环境&#xff0c;运…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...