NPM 常用命令(七)

目录

1、npm help

1.1 命令使用

1.2 描述

1.3 配置

viewer

2、npm help-search

2.1 命令使用

2.2 描述

2.3 配置

long

3、npm hook 

3.1 命令使用

3.2 描述

3.3 示例

3.4 配置

registry

otp

4、npm init

4.1 命令使用

4.2 转发附加选项

4.3 示例

4.4 工作区支持

4.5 配置

yes

force

workspace

workspaces

workspaces-update

include-workspace-root


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

在 lssearch 和 help-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)。

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

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

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 仅在指定的工作区上运行,而不是在根项目上运行。

猜你喜欢

转载自blog.csdn.net/u014388408/article/details/132717896