目录
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
npm help []
别名: hlep
如果提供了主题,则显示相应的文档页面。
如果主题不存在,或者提供了多个术语,则 npm 将运行 help-search
命令来查找匹配项。 请注意,如果 help-search
找到单个主题,那么它将在该主题上运行 help
,因此唯一匹配等同于指定主题名称。
viewer
用于查看帮助内容的程序。
设置为 "browser"
以在默认 Web 浏览器中查看 html 帮助内容。
npm help-search
此命令将在 npm markdown 文档文件中搜索提供的术语,然后列出结果,按相关性排序。
如果只找到一个结果,那么它将显示该帮助主题。
如果 npm help
的参数不是已知的帮助主题,那么它将调用 help-search
。 很少需要直接调用此命令。
long
在 ls
、search
和 help-search
中显示扩展信息。
npm hook add [--type=]
npm hook ls [pkg]
npm hook rm
npm hook update
允许你管理 npm hooksnpm hooksnpm hooks,包括添加、删除、列出和更新。
钩子允许你配置 URL 端点,只要任何受支持的实体类型发生更改,就会通知这些端点。 钩子可以监视三种不同类型的实体: 包、所有者和范围。
要创建包钩子,只需引用包名称。
要创建所有者钩子,请在所有者名称前加上 ~
(如 ~youruser
)。
要创建范围钩子,请在范围名称前加上 @
(如 @yourscope
)。
update
和 rm
使用的钩子 id
是 npm hook ls
中为该特定钩子列出的 ID。
共享密钥将被发送到 URL 端点,因此你可以验证请求来自你自己配置的钩子。
添加一个钩子来观察一个包的变化:
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
registry
npm 注册表的基本 URL。
otp
这是来自双重身份验证器的一次性密码。 使用 npm access
发布或更改包权限时需要它。
如果未设置,并且注册表响应失败并询问一次性密码,npm 将在命令行上提示输入一次密码。
如果你有一个付费的个人或组织npm帐户的个人或组织npm帐户的个人或组织npm帐户,你可以现在开始使用钩子。
每个用户可以配置总共100个钩子,如何使用它们取决于您:您可以将所有100个包放在一个包上,或者分散在100个不同的包上。如果您使用钩子来监视一个作用域,则这被视为单个钩子,而不管作用域中有多少包。你可以查看npm注册表上的任何开源软件包,以及你控制的任何私有软件包(你只会收到你有权查看的软件包的钩子)。
npm init (same as `npx `)
npm init <@scope> (same as `npx <@scope>/create`)
别名: create, innit
初始化项目,会在目录下生成一个 package.json 文件。
npm init
可用于设置新的或现有的 npm 包。
在这种情况下,initializer
是一个名为 create-
的 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 @[email protected]
-> npm exec @usr/[email protected]
npm init @usr/[email protected]
-> npm exec @usr/[email protected]
如果初始化器被省略(通过调用 npm init
),init 将回退到旧的 init 行为。 它会问你一堆问题,然后为你写一个 package.json。 它将尝试根据现有字段、依赖和选择的选项进行合理的猜测。 它是严格附加的,因此它将保留已设置的所有字段和值。 你也可以使用 -y
/--yes
完全跳过问答。 如果你通过 --scope
,它将创建一个范围包。
注意: 如果用户已经全局安装了
create-
包,那么npm init
将使用它。 如果你希望 npm 使用最新版本或其他特定版本,你必须指定它:
npm init foo@latest
# 从注册表中获取并运行最新的 create-foo
npm init [email protected]
# 专门运行 [email protected]
任何附加选项都将直接传递给命令,因此 npm init foo -- --hello
将映射到 npm exec -- create-foo --hello
。
为了更好地说明选项是如何转发的,这里有一个更进化的示例,显示了传递给 npm 客户端 和创建包的选项,以下两个命令是等效的:
npm init foo -y --registry= -- --hello -a
npm exec -y --registry= -- create-foo --hello -a
使用 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
可以使用 workspace
配置选项在项目中创建新工作区。 使用 npm init -w
时,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
语法,遵循本页初始 描述 部分中解释的相同规则集。 与之前使用 create-react-app 创建新的基于 React 的项目的示例类似,以下语法将确保将新的 React 应用创建为项目中的嵌套 工作区,并配置 package.json
以识别它:
npm init -w packages/my-react-app react-app .
yes
对 npm 可能在命令行上打印的任何提示自动回答 "yes"。
force
删除了针对不良的副作用、常见错误、不必要的性能下降和恶意输入的各种保护。
npm version
命令在不干净的 git 存储库上工作。npm cache clean
删除缓存文件夹。engines
声明需要不同版本的 npm 的包。engines
声明需要不同版本 node
的包,即使启用了 --engine-strict
。npm audit fix
安装超出你声明的依赖范围的模块(包括 SemVer 的主要更改)。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
设置为 true 以在 all 配置的工作区的上下文中运行命令。
显式将此设置为 false 将导致像 install
这样的命令完全忽略工作区。 未明确设置时:
node_modules
树上运行的命令(安装、更新等)会将工作区链接到 node_modules
文件夹。 - 执行其他操作(测试、执行、发布等)的命令将在根项目上运行,除非在 workspace
配置中指定了一个或多个工作区。此值不会导出到子进程的环境中。
workspaces-update
如果设置为 true,npm cli 将在可能更改安装到 node_modules
文件夹的工作区的操作之后运行更新。
include-workspace-root
为命令启用工作区时包括工作区根。
当为 false 时,通过 workspace
配置指定单个工作区,或通过 workspaces
标志指定所有工作区,将导致 npm 仅在指定的工作区上运行,而不是在根项目上运行。