NPM 常用命令(七)

简介: NPM 常用命令(七)

1、npm help

1.1 命令使用

npm help <term> [<terms..>]
别名: hlep

1.2 描述

如果提供了主题,则显示相应的文档页面。

如果主题不存在,或者提供了多个术语,则 npm 将运行 help-search 命令来查找匹配项。 请注意,如果 help-search 找到单个主题,那么它将在该主题上运行 help,因此唯一匹配等同于指定主题名称。

1.3 配置

viewer

  • 默认值: Posix 上的 "man",Windows 上的 "browser"
  • 类型: 字符串

用于查看帮助内容的程序。

设置为 "browser" 以在默认 Web 浏览器中查看 html 帮助内容。

2、npm help-search

2.1 命令使用

npm help-search <text>

2.2 描述

此命令将在 npm markdown 文档文件中搜索提供的术语,然后列出结果,按相关性排序。

如果只找到一个结果,那么它将显示该帮助主题。

如果 npm help 的参数不是已知的帮助主题,那么它将调用 help-search。 很少需要直接调用此命令。

2.3 配置

long

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

lssearchhelp-search 中显示扩展信息。

3、npm hook

3.1 命令使用

npm hook add <pkg> <url> <secret> [--type=<type>]
npm hook ls [pkg]
npm hook rm <id>
npm hook update <id> <url> <secret>

3.2 描述

允许你管理 npm hooksnpm hooksnpm hooks,包括添加、删除、列出和更新。

钩子允许你配置 URL 端点,只要任何受支持的实体类型发生更改,就会通知这些端点。 钩子可以监视三种不同类型的实体: 包、所有者和范围。

要创建包钩子,只需引用包名称。

要创建所有者钩子,请在所有者名称前加上 ~(如 ~youruser)。

要创建范围钩子,请在范围名称前加上 @(如 @yourscope)。

updaterm 使用的钩子 idnpm hook ls 中为该特定钩子列出的 ID。

共享密钥将被发送到 URL 端点,因此你可以验证请求来自你自己配置的钩子。

3.3 示例

添加一个钩子来观察一个包的变化:

npm hook add lodash https://you-url.com/ secret

添加一个钩子来查看属于用户 substack 的包:

npm hook add ~substack https://you-url.com/ secret

添加一个钩子来监视范围 @npm 中的包

npm hook add @npm https://you-url.com/ secret

列出所有活动的钩子:

npm hook ls

列出 lodash 包的活动钩子:

npm hook ls lodash

更新现有钩子的 url:

npm hook update id-deadbeef https://my-new-website.here/

移除一个钩子:

npm hook rm id-deadbeef

3.4 配置

registry

npm 注册表的基本 URL。

otp

  • 默认值: null
  • 类型: 空值或字符串

这是来自双重身份验证器的一次性密码。 使用 npm access 发布或更改包权限时需要它。

如果未设置,并且注册表响应失败并询问一次性密码,npm 将在命令行上提示输入一次密码。

如果你有一个付费的个人或组织npm帐户个人或组织npm帐户的个人或组织npm帐户,你可以现在开始使用钩子。

每个用户可以配置总共100个钩子,如何使用它们取决于您:您可以将所有100个包放在一个包上,或者分散在100个不同的包上。如果您使用钩子来监视一个作用域,则这被视为单个钩子,而不管作用域中有多少包。你可以查看npm注册表上的任何开源软件包,以及你控制的任何私有软件包(你只会收到你有权查看的软件包的钩子)。

4、npm init

4.1 命令使用

npm init <package-spec> (same as `npx <package-spec>`)
npm init <@scope> (same as `npx <@scope>/create`)
别名: create, innit

初始化项目,会在目录下生成一个 package.json 文件。

npm init <initializer> 可用于设置新的或现有的 npm 包。

在这种情况下,initializer 是一个名为 create-<initializer> 的 npm 包,它将由 npm-execnpm-execnpm-exec 安装,然后执行其主 bin —— 大概是创建或更新 package.json 并运行任何其他与初始化相关的操作。

init 命令转化为对应的 npm exec 操作如下:

  • npm init foo -> npm exec create-foo
  • npm init @usr/foo -> npm exec @usr/create-foo
  • npm init @usr -> npm exec @usr/create
  • npm init @usr@2.0.0 -> npm exec @usr/create@2.0.0
  • npm init @usr/foo@2.0.0 -> npm exec @usr/create-foo@2.0.0

如果初始化器被省略(通过调用 npm init),init 将回退到旧的 init 行为。 它会问你一堆问题,然后为你写一个 package.json。 它将尝试根据现有字段、依赖和选择的选项进行合理的猜测。 它是严格附加的,因此它将保留已设置的所有字段和值。 你也可以使用 -y/--yes 完全跳过问答。 如果你通过 --scope,它将创建一个范围包。

注意: 如果用户已经全局安装了 create-<initializer> 包,那么 npm init 将使用它。 如果你希望 npm 使用最新版本或其他特定版本,你必须指定它:

  • npm init foo@latest # 从注册表中获取并运行最新的 create-foo
  • npm init foo@1.2.3 # 专门运行 create-foo@1.2.3

4.2 转发附加选项

任何附加选项都将直接传递给命令,因此 npm init foo -- --hello 将映射到 npm exec -- create-foo --hello

为了更好地说明选项是如何转发的,这里有一个更进化的示例,显示了传递给 npm 客户端 和创建包的选项,以下两个命令是等效的:

  • npm init foo -y --registry=<url> -- --hello -a
  • npm exec -y --registry=<url> -- create-foo --hello -a

4.3 示例

使用 create-react-app 创建一个新的基于 React 的项目,create-react-app 必须的提前全局安装:

npm init react-app ./my-react-app

使用 create-esmcreate-esm 创建一个新的 esm 兼容包:

mkdir my-esm-lib && cd my-esm-lib
npm init esm --yes

使用旧版 init 生成一个普通的旧 package.json:

mkdir my-npm-pkg && cd my-npm-pkg
git init
npm init

初始化package.json 不问任何问题:

npm init -y

4.4 工作区支持

可以使用 workspace 配置选项在项目中创建新工作区。 使用 npm init -w <dir> 时,cli 将创建预期的文件夹和样板文件,同时还会添加对项目 package.json"workspaces": [] 属性的引用,以确保正确设置新生成的 工作区

给定一个没有工作区的项目,创建一个目录,有一个package.json 文件。

mkdir codetest && cd codetest
npm init -y

使用旧版 init 生成新工作区:

npm init -w packages/a

这将生成一个新文件夹和 package.json 文件,同时更新你的顶层 package.json 以添加对这个新工作区的引用:

工作区 init 还支持 npm init <initializer> -w <dir> 语法,遵循本页初始 描述 部分中解释的相同规则集。 与之前使用  create-react-app  创建新的基于 React 的项目的示例类似,以下语法将确保将新的 React 应用创建为项目中的嵌套 工作区,并配置 package.json 以识别它:

npm init -w packages/my-react-app react-app .

4.5 配置

yes

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

对 npm 可能在命令行上打印的任何提示自动回答 "yes"。

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 中的现有值。
  • 允许取消发布整个包(不仅仅是单个版本)。

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

scope

  • 默认值: 当前项目的范围(如果有)或 ""
  • 类型: 字符串

将操作与范围注册表的作用域相关联。

在登录或退出私有注册表时很有用:

# log in, linking the scope to the custom registry
npm login --scope=@mycorp --registry=https://registry.mycorp.com
# log out, removing the link and the auth token
npm logout --scope=@mycorp

这将导致 @mycorp 映射到注册表,以便将来安装根据模式 @mycorp/package 指定的包。

这也将导致 npm init 创建一个范围包。

# accept all defaults, and create a package named "@foo/whatever",
# instead of just named "whatever"
npm init --scope=@foo --yes

workspace

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

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

workspace 配置的有效值为:

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

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

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

workspaces

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

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

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

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

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

workspaces-update

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

如果设置为 true,npm cli 将在可能更改安装到 node_modules 文件夹的工作区的操作之后运行更新。

include-workspace-root

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

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

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


相关文章
|
6月前
|
JavaScript 前端开发 数据安全/隐私保护
详细介绍NPM的基本使用方法、常用命令和一些实用技巧
详细介绍NPM的基本使用方法、常用命令和一些实用技巧
219 0
|
6月前
|
Ubuntu
node、npm 命令升级
node、npm 命令升级
130 0
|
6月前
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
|
6月前
|
JavaScript 前端开发 Shell
NPM 自定义 package.json 中 scripts 命令(& 与 && 的区别,cross-env 的使用)
NPM 自定义 package.json 中 scripts 命令(& 与 && 的区别,cross-env 的使用)
228 0
|
5月前
|
缓存 JavaScript 前端开发
npm命令介绍
npm命令介绍
|
4月前
|
缓存 JavaScript 前端开发
npm常用命令详解与实践
npm常用命令详解与实践
|
4月前
|
JavaScript
TS,编写TS文件,编写hello.ts文件,cmd下打开终端,输入tsc hello.ts会生成一个hello.js文件,简化命令,npm i -g ts-node,ts-node hello.ts
TS,编写TS文件,编写hello.ts文件,cmd下打开终端,输入tsc hello.ts会生成一个hello.js文件,简化命令,npm i -g ts-node,ts-node hello.ts
|
6月前
|
JSON JavaScript 数据安全/隐私保护
npm命令:常用npm命令及其详解!
npm命令:常用npm命令及其详解!
|
5月前
|
JavaScript
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
|
6月前
|
JavaScript Unix Shell
#! /usr/bin/env node 命令与 npm link 建立项目间软连接(一)
#! /usr/bin/env node 命令与 npm link 建立项目间软连接(一)
126 0