npm 登录打包发布
第一步:准备你的包 (package.json)
这是最关键的一步,一个正确的 package.json 文件是发布的前提。请确保以下字段配置正确:
-
name: 包的名称。它在 npm 上必须是唯一的。你可以去 npm 官网 搜索你想用的名字是否已被占用。-
如果你要发布公共包(public),且你不是该组织的成员,名称不能以
@开头。 -
如果你要发布到组织作用域下(例如
@my-org/my-package),你需要有该组织的权限。
-
-
version: 包的版本号。每次发布时,版本号都必须比上一次发布的高。遵循语义化版本规范 (SemVer)。-
major: 做了不兼容的 API 修改 -
minor: 做了向下兼容的功能性新增 -
patch: 做了向下兼容的问题修正
-
-
main: 入口文件。当用户require(‘your-package-name’)时,加载的就是这个文件。 -
files(可选但重要): 一个数组,指定哪些文件和文件夹需要被包含在发布的包里。这可以避免将测试文件、配置文件等不必要的内容发布出去。-
通常包含:
[‘dist‘, ‘lib‘, ‘src‘, ‘index.js‘](根据你的项目结构选择) -
通常忽略:
node_modules,test,docs,.DS_Store,.gitignore,.eslintrc等。即使不写在files里,.npmignore文件(类似.gitignore)也可以用来忽略文件。如果两者都没有,则会使用.gitignore。
-
一个最简单的 package.json 示例:
{
"name": "my-awesome-package",
"version": "1.0.0",
"description": "A awesome package to do amazing things",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": ["awesome", "example", "tool"],
"author": "Your Name",
"license": "MIT",
"files": [
"dist",
"index.js"
]
}
第二步:登录 npm
在命令行(终端、PowerShell 等)中执行以下操作:
-
添加账号:如果你还没有 npm 账号,需要先去 npm 官网 注册一个。
-
登录:在项目根目录下运行登录命令。
npm login系统会提示你依次输入:
-
Username: 你的用户名
-
Password: 你的密码(输入时不可见)
-
Email: 你账号的邮箱
-
Enter one-time password from your authenticator app: 如果你开启了二次验证(2FA),需要输入验证码。
成功后你会看到
Logged in as <your-username> on https://registry.npmjs.org/.的提示。 -
-
检查登录状态(可选):你可以运行以下命令查看当前登录的用户。
npm whoami如果已登录,它会返回你的用户名。
第三步:打包(准备发布内容)
这里的“打包”可能指两个操作,根据你的项目类型选择:
A. 构建你的源码(对于需要编译的项目,如 TypeScript, Babel, Vue, React 等)
如果你的项目需要编译(例如将 TypeScript 编译成 JavaScript),你需要先执行构建命令。
npm run build
这会在你的项目中生成一个准备发布的目录(如 dist/ 或 lib/)。请确保 package.json 中的 files 字段或 main 字段指向这些构建后的文件。
B. 使用 npm pack 命令进行“预发布”检查(强烈推荐)
在正式发布前,运行 npm pack 命令非常有用。它会根据 package.json 中的 files 字段生成一个 .tgz 压缩包,这个压缩包就是即将被发布到 npm 上的确切内容。
npm pack
运行后,你会看到一个类似 my-awesome-package-1.0.0.tgz 的文件。你可以解压这个文件,检查里面的内容是否和你预期的一致,有没有包含敏感或不必要的文件。
第四步:发布包
确认一切准备就绪后,就可以执行发布命令了。
发布公共包:
npm publish
这条命令会将你的包发布为公共包,所有人都可以看到和下载。
发布作用域包(Scoped Package)到公共仓库:
如果你的包名是 @my-org/my-package 这种格式,默认情况下 npm 会尝试将其发布为私有包,这需要付费订阅。如果你想将作用域包公开发布,需要加上 --access public 参数。
npm publish --access public
发布时的二次验证(2FA):
如果 npm 组织或你的账户启用了双重认证,在 publish 时可能会要求你输入一次性密码(OTP)。
# 如果要求输入 OTP,你会看到类似提示
Enter one-time password from your authenticator app:
输入你认证器应用(如 Google Authenticator)上显示的6位数字即可。
发布成功后,你会看到类似 + my-awesome-package@1.0.0 的提示。
常用命令和技巧
-
更新版本号:你可以手动修改
package.json中的version,也可以使用 npm 命令自动更新:-
npm version patch-> 升级补丁版本(e.g., 1.0.0 -> 1.0.1) -
npm version minor-> 升级次版本(e.g., 1.0.0 -> 1.1.0) -
npm version major-> 升级主版本(e.g., 1.0.0 -> 2.0.0)
这个命令会自动修改package.json并创建一个 git commit 和 tag。
-
-
撤销发布(谨慎使用):如果一个版本有问题,在发布的72小时内可以使用
npm unpublish撤销它。npm unpublish my-awesome-package@1.0.0 # 或者强制撤销整个包(如果该包的所有版本都小于24小时) npm unpublish my-awesome-package --force注意:npm 对
unpublish有严格的限制和政策,尽量避免使用。更好的做法是发布一个修复版本(如1.0.1)来覆盖有问题的版本。 -
查看包信息:
npm view <package-name> -
登出:
npm logout
总结流程
-
准备:编写代码,配置正确的
package.json。 -
登录:在终端运行
npm login。 -
测试:运行
npm pack检查发布内容。 -
构建:运行
npm run build(如果需要)。 -
发布:运行
npm publish(或npm publish --access public对于公共作用域包)。 -
验证:去 npm 官网搜索你的包名,确认发布成功。

浙公网安备 33010602011771号