目录
npm-publish
选择 CLI 版本
目录
概要
npm publish <package-spec>
描述
将包发布到注册表,以便可以通过名称安装。
默认情况下,npm 会发布到公共注册表。可以通过指定不同的默认注册表或在名称中使用 scope
(结合已配置范围的注册表,参见 package.json
)来覆盖此行为。
package
的解释方式与其他命令(如 npm install
)相同,可以是:
- a) 包含由
package.json
文件描述的程序的文件夹 - b) 包含 (a) 的压缩 tar 包
- c) 解析为 (b) 的 URL
- d) 发布到注册表(参见
registry
)的<name>@<version>
,具有 (c) - e) 指向 (d) 的
<name>@<tag>
(参见npm dist-tag
) - f) 具有满足 (e) 的 "latest" 标签的
<name>
- g) 解析为 (a) 的
<git remote url>
如果包名称和版本组合已存在于指定的注册表中,则发布将失败。
一旦包以给定的名称和版本发布,该特定名称和版本组合将永远无法再次使用,即使使用 npm unpublish
移除它也是如此。
从 npm@5
开始,在发布期间,sha1sum 和具有 tar 包 sha512sum 的完整性字段都将提交到注册表。后续安装将使用支持的最强算法来验证下载内容。
类似于 --dry-run
,参见 npm pack
,它会找出要包含的文件并将其打包成 tar 包,以便上传到注册表。
包中包含的文件
要查看包中将包含的内容,请运行 npm pack --dry-run
。默认情况下,所有文件都会被包含,以下情况除外:
-
与包安装和分发相关的某些文件始终会被包含。例如,
package.json
、README.md
、LICENSE
等。 -
如果
package.json
中存在 "files" 列表,则仅包含指定的文件。(如果指定了目录,则会递归遍历它们并包含其内容,但需遵守相同的忽略规则。) -
如果存在
.gitignore
或.npmignore
文件,则该文件及其所有子目录中的忽略文件将被排除在包之外。如果两个文件都存在,则会忽略.gitignore
,仅使用.npmignore
。.npmignore
文件遵循与.gitignore
文件相同的模式规则 -
如果文件与某些模式匹配,则该文件永远不会被包含,除非显式添加到
package.json
中的"files"
列表中,或者使用.npmignore
或.gitignore
文件中的!
规则取消忽略。 -
符号链接永远不会包含在 npm 包中。
参见 developers
,了解有关发布的包中包含的内容的详细信息,以及有关包构建方式的详细信息。
配置
tag
- 默认值: "latest"
- 类型:字符串
如果你要求 npm 安装包,但没有告诉它特定的版本,那么它将安装指定的标签。
如果未指定显式标签,则还将添加由 npm tag
命令指定的包@版本标签。
npm diff
命令使用此标签来获取 tar 包,默认情况下,tar 包将与本地文件进行比较。
access
- 默认值:对于新包为 'public',对于现有包,它不会更改当前级别
- 类型:null、"restricted" 或 "public"
如果你不希望你的作用域包公开可见(且可安装),请设置 --access=restricted
。
无作用域的包无法设置为 restricted
。
注意:这默认情况下不会更改现有包的当前访问级别。在发布时指定 restricted
或 public
值将更改现有包的访问权限,方式与 npm access set status
相同。
dry-run
- 默认值:false
- 类型:布尔值
指示您不希望 npm 进行任何更改,并且它应该只报告它原本会执行的操作。这可以传递给任何修改您本地安装的命令,例如,install
、update
、dedupe
、uninstall
,以及 pack
和 publish
。
注意:其他网络相关命令(例如 dist-tags
、owner
等)不会遵守此设置。
otp
- 默认值:null
- 类型:null 或字符串
这是来自双重身份验证的一次性密码。在使用 npm access
发布或更改包权限时需要此密码。
如果未设置此密码,并且注册表响应因一次性密码挑战而失败,npm 将在命令行中提示输入一次性密码。
workspace
- 默认值
- 类型:字符串(可以设置多次)
启用在当前项目的已配置工作区上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行筛选。
workspace
配置的有效值为:
- 工作区名称
- 工作区目录的路径
- 父工作区目录的路径(将导致选择该文件夹中的所有工作区)
当为 npm init
命令设置时,这可以设置为尚未存在的工作区的文件夹,以创建文件夹并将其设置为项目中的全新工作区。
此值不会导出到子进程的环境中。
workspaces
- 默认值:null
- 类型:null 或布尔值
设置为 true 以在**所有**已配置工作区的上下文中运行命令。
将此值显式设置为 false 将导致 install
等命令完全忽略工作区。当未显式设置时
- 在
node_modules
树上运行的命令(install、update 等)将把工作区链接到node_modules
文件夹中。 - 执行其他操作的命令(test、exec、publish 等)将作用于根项目,*除非*在workspace
配置中指定了一个或多个工作区。
此值不会导出到子进程的环境中。
include-workspace-root
- 默认值:false
- 类型:布尔值
在命令启用了工作区时包含工作区根目录。
当为 false 时,通过 workspace
配置指定单个工作区,或通过 workspaces
标志指定所有工作区,将导致 npm 仅对指定的工作区进行操作,而不对根项目进行操作。
此值不会导出到子进程的环境中。
provenance
- 默认值:false
- 类型:布尔值
从支持的云 CI/CD 系统发布时,软件包将公开链接到构建和发布它的位置。
此配置不能与:provenance-file
一起使用。
provenance-file
- 默认值:null
- 类型:路径
发布时,将使用给定路径处的来源包。
此配置不能与:provenance
一起使用。
参见
- 包规范
- npm-packlist 包
- npm 注册表
- npm 范围
- npm adduser
- npm owner
- npm deprecate
- npm dist-tag
- npm pack
- npm profile