NPM 常用命令(一)

news2024/9/21 2:34:53

目录

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
  • 类型: 布尔值

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

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

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

相关文章

更改SVG矢量图片的颜色

问题:我从网上找的svg图片,颜色一直是黑色的,和下边的用户管理模块、卷题管理等模块的图标对不起来,看起来很怪。 办法: 1.直接在你的编程软件中 ctrl + alt +F,全局搜索“组织管理” 找到组织管理对应的文件,然后双击点进去 2.找到icon 这里对应的icon的属性值就是矢…

代理IP的需求量为什么越来越大?如何选择适合您的全球代理IP?

在当今信息爆炸的时代&#xff0c;代理IP已成为大数据领域一项必不可少的工具。越来越多的企业和个人使用代理IP来进行互联网业务&#xff0c;这导致代理IP的需求量不断增加。这是因为代理IP不仅可以帮助用户进行网络爬虫和数据采集&#xff0c;还能够保护个人隐私和网络安全&a…

如何产生潜在客户:增加公司的销售额

图片来源于&#xff1a;SaleSmartly官网 数字营销拥有大量资源可以帮助您增加业务收入。您可以实施多种有关如何产生潜在客户的策略。这是买家旅程中的重要一步&#xff0c;您可以识别潜在客户并定义需要做什么来帮助他们决定购买您的产品或服务。 毫无疑问&#xff0c;征服潜在…

uniapp授权小程序隐私弹窗效果demo(整理)

<template> <view class"dealBox"><view class"txtBox padding10"><!-- 查看协议 -->在您使用施工现场五星计划小程序之前&#xff0c;请仔细阅读<text class"goToPrivacy" click"handleOpenPrivacyContract&qu…

常用激活函数整理

最近一边应付工作&#xff0c;一边在补足人工智能的一些基础知识&#xff0c;这个方向虽然新兴&#xff0c;但已是卷帙浩繁&#xff0c;有时不知从何入手&#xff0c;幸亏有个适合基础薄弱的人士学习的网站&#xff0c;每天学习一点&#xff0c;积跬步以至千里吧。有像我一样学…

产品经理进行用户分层 常见的4大方法

用户分层对产品开发非常重要&#xff0c;通过对用户进行分层&#xff0c;我们可以更好地理解不同用户群体的需求、行为和偏好&#xff0c;从而更精准定位和设计产品&#xff0c;有利于提高市场竞争力。 如果不进行用户分层可能导致产品经理不了解用户需求&#xff0c;无法提供个…

ODrive解析移植(一)—— 国产替代方案(VScode版移植)

目录 一、ODrive简介1.1、 github下载 二、ODrive官方版本的问题三、国产化方案3.1、版本0.5.1与0.5.6的区别3.2、移植说明3.2.0、修改“tup.config.default”文件名为“tup.config”&#xff0c;打开屏蔽“v3.6-56V”&#xff0c;3.2.1、修改死区时间&#xff0c;3.2.2、修改采…

2023年您需要虚拟助手的 5个迹象

您的企业今年有以收入为中心的战略目标要实现。然而&#xff0c;新的增长往往伴随着您现有员工的新责任。工作负载增加。团队达到最大容量。超负荷的员工表现出倦怠的迹象。在这些时候&#xff0c;企业主通常会意识到雇用虚拟助理 &#xff08;VA&#xff09; 提供支持的好处。…

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

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

一套成熟在用的Spring Cloud工程项目数字化管理云平台源码

技术架构&#xff1a; 微服务JavaSpring Cloud VueUniApp MySql 开发语言&#xff1a;Java 开发工具&#xff1a;Idea 前端框架&#xff1a;Vue 后端框架&#xff1a;Spring Cloud 数 据 库&#xff1a;MySql 移 动 端&#xff1a;UniApp 系统端口&#xff1a;PC端&…

虚引用真的不影响对象的生命周期吗?99%的人都错了

Java的四大引用&#xff0c;大家都很熟悉吧&#xff1a; 强应用&#xff1a;正常代码中的引用。一个对象能通过强应用访问到&#xff0c;那它就永远不会被回收软引用&#xff1a;比强引用弱一级的引用&#xff0c;内存不足时引用指向的对象会被回收弱引用&#xff1a;比软引用…

现货白银投资快速入门的方法

虽然在现货白银投资之中有很多&#xff0c;所谓的速成班都是不靠谱的&#xff0c;他们一般都是营销的噱头&#xff0c;但是会普通投资者来说&#xff0c;通过一些方法的训练&#xff0c;可以实现快速入门。所谓的快速入门&#xff0c;就是能够在市场中掌握一定的投资方法&#…

手机建模自定义方法,你会用了吗?

易模App借助影像即可完成三维建模&#xff0c;除了在各个建模模式中直接拍摄采集数据&#xff0c;还用开放了宽容度更高的建模方法——自定义建模。 自定义方法可以使用在【人脸模式】【人像模式】【主体模式】【场景模式】中&#xff0c;上传满足建模条件的视频或照片组即可实…

小编亲测八款Ai工具,建议收藏,最后一个你懂的

随着AI大模型不断更新迭代&#xff0c;AI应用也呈现出爆炸式的增长趋势&#xff0c;而利用人工智能工具提高工作效率&#xff0c;已经成为今年来越来越受欢迎的工作方式。除了大名鼎鼎的chatgpt之外&#xff0c;小编在体验了超多各种类型、各种功能的AI工具后&#xff0c;给大家…

count(1)、count(*)和count(列名)及官网解释

最近面试并且看网上的资料说count(1)和count(*)参差不同&#xff0c;就查看了官网&#xff0c;特别记录一下。 共同点&#xff1a;都是用来统计我们的表中的行数不同点&#xff1a; 执行效果上来说&#xff1a;count(1)和count(*)都不会忽略列值为null的行数&#xff0c;而cou…

smartbi token回调获取登录凭证漏洞(二)

2023年8月8日Smartbi官方又修复了一处权限绕过漏洞。该漏洞是上一个特定场景下设置Token回调地址漏洞的绕过&#xff0c;未经授权的攻击者可利用该漏洞&#xff0c;获取管理员token&#xff0c;完全接管管理员权限。 于是研究了下相关补丁并进行分析。 0x01 分析过程 阅读相关…

一篇文章帮你拯救70%的购物车放弃率

想象一下&#xff0c;您倾注所有的心血到您的在线业务中&#xff0c;却面临着令人痛苦的购物车放弃率。这可能会让你痛苦不堪&#xff0c;错失了销售和收入的机会。 此外&#xff0c;你忠实的顾客可能会叛逃去使用竞争对手的产品&#xff0c;雪上加霜。通过再次在广告上支付客…

教程i.MX8MPlus开发板SPI转CAN操作

飞凌嵌入式OKMX8MP-C核心板有两路原生CAN总线&#xff0c;但用户在开发产品时可能需要用到更多的CAN&#xff0c;这该如何解决呢&#xff1f;今天小编将为大家介绍一种SPI转CAN的方法&#xff0c;供各位工程师小伙伴参考。 说明 OKMX8MP-C核心板有两路原生的SPI总线&#xff0c…

如何让看书变听书?

听书神器 安卓 页面简单&#xff0c;易操作&#xff0c;全网小说随便听 各种声音帮你读你喜欢听的小说&#xff0c;带你进入主人公世界 支持网页版小说、本地小说、图片&#xff0c;都能读给你听 想看小说&#xff0c;又怕伤眼睛的宝子&#xff0c;可以试试看&#xff01;…

堆的基本存储(Java 实例代码)

堆的基本存储 一、概念及其介绍 堆(Heap)是计算机科学中一类特殊的数据结构的统称。 堆通常是一个可以被看做一棵完全二叉树的数组对象。 堆满足下列性质&#xff1a; 堆中某个节点的值总是不大于或不小于其父节点的值。堆总是一棵完全二叉树。 二、适用说明 堆是利用完…