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_modulestestdocs.DS_Store.gitignore.eslintrc 等。即使不写在 files 里,.npmignore 文件(类似 .gitignore)也可以用来忽略文件。如果两者都没有,则会使用 .gitignore

一个最简单的 package.json 示例:

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 等)中执行以下操作:

  1. 添加账号:如果你还没有 npm 账号,需要先去 npm 官网 注册一个。

  2. 登录:在项目根目录下运行登录命令。

    bash
    npm login

    系统会提示你依次输入:

    • Username: 你的用户名

    • Password: 你的密码(输入时不可见)

    • Email: 你账号的邮箱

    • Enter one-time password from your authenticator app: 如果你开启了二次验证(2FA),需要输入验证码。

    成功后你会看到 Logged in as <your-username> on https://registry.npmjs.org/. 的提示。

  3. 检查登录状态(可选):你可以运行以下命令查看当前登录的用户。

    bash
    npm whoami

    如果已登录,它会返回你的用户名。


第三步:打包(准备发布内容)

这里的“打包”可能指两个操作,根据你的项目类型选择:

A. 构建你的源码(对于需要编译的项目,如 TypeScript, Babel, Vue, React 等)

如果你的项目需要编译(例如将 TypeScript 编译成 JavaScript),你需要先执行构建命令。

bash
npm run build

这会在你的项目中生成一个准备发布的目录(如 dist/ 或 lib/)。请确保 package.json 中的 files 字段或 main 字段指向这些构建后的文件。

B. 使用 npm pack 命令进行“预发布”检查(强烈推荐)

在正式发布前,运行 npm pack 命令非常有用。它会根据 package.json 中的 files 字段生成一个 .tgz 压缩包,这个压缩包就是即将被发布到 npm 上的确切内容。

bash
npm pack

运行后,你会看到一个类似 my-awesome-package-1.0.0.tgz 的文件。你可以解压这个文件,检查里面的内容是否和你预期的一致,有没有包含敏感或不必要的文件。


第四步:发布包

确认一切准备就绪后,就可以执行发布命令了。

发布公共包:

bash
npm publish

这条命令会将你的包发布为公共包,所有人都可以看到和下载。

发布作用域包(Scoped Package)到公共仓库:
如果你的包名是 @my-org/my-package 这种格式,默认情况下 npm 会尝试将其发布为私有包,这需要付费订阅。如果你想将作用域包公开发布,需要加上 --access public 参数。

bash
npm publish --access public

发布时的二次验证(2FA):
如果 npm 组织或你的账户启用了双重认证,在 publish 时可能会要求你输入一次性密码(OTP)。

bash
# 如果要求输入 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 撤销它。

    bash
    npm unpublish my-awesome-package@1.0.0
    # 或者强制撤销整个包(如果该包的所有版本都小于24小时)
    npm unpublish my-awesome-package --force

    注意:npm 对 unpublish 有严格的限制和政策,尽量避免使用。更好的做法是发布一个修复版本(如 1.0.1)来覆盖有问题的版本。

  • 查看包信息:

    bash
    npm view <package-name>
  • 登出:

    bash
    npm logout

总结流程

  1. 准备:编写代码,配置正确的 package.json

  2. 登录:在终端运行 npm login

  3. 测试:运行 npm pack 检查发布内容。

  4. 构建:运行 npm run build(如果需要)。

  5. 发布:运行 npm publish(或 npm publish --access public 对于公共作用域包)。

  6. 验证:去 npm 官网搜索你的包名,确认发布成功。

posted @ 2025-10-15 13:39  Jade_g  阅读(48)  评论(0)    收藏  举报