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
- 类型: 布尔值
在 ls
、search
和 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
- 默认值: "https://registry.npmjs.org/"
- 类型: URL
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 仅在指定的工作区上运行,而不是在根项目上运行。