Skip to content

发布自己的npm包

约 709 字大约 2 分钟

npm

2024-12-27

发布 npm 包的详细流程以及可能会遇到的问题。

1. 初始化文件

创建一个空文件夹 npm-demo ,并创建以下文件: ::: file-tree

  • npm-demo
    • package.json 配置文件
    • index.js 文件入口
    • README.md 包说明文档 :::

1.1 package.json

你可以使用命令根据 配置向导 来创建这个文件:

npm init

若觉得过程太繁琐你可以自己创建这个文件,并在文件里写写好以下基本配置:

{
  "name": "包名",
  "version": "版本号,如 1.0.0",
  "description": "包描述",
  "main": "入口文件相对路径",
  "keywords": [
    "关键字1",
    "关键字2"
  ],
  "author": "作者",
  "license": "开源协议"
}

1.2 入口文件

main 字段的值是程序的主要入口点(默认是 index.js)。 也就是说,如果我们的包名为 npm-test,当其他开发者安装这个包, import 'npm-test' 方式导入,那么 npm-test 包中 package.json 中的 main 的导出对象将被返回。

1.3 README.md

README.md 为对包的描述,可对包的安装及其使用做出说明。这个文件是非必要文件,可以不创建

## 安装

## 用法说明

2. 发布

在这之前需要前往 npm 注册一个账号。 使用 npm login 登录:

npm login

输入命令后会要求输入 Username ,随后会跳转一个登录链接,根据提示登录即可。 再使用 npm publish 发布:

npm publish

当控制台出现 npm notice Publishing to https://www.npmjs.com/ ... 则发布成功。

3. 问题

以下为在过程中可能会遇到的问题与解决办法。

登录无反应

若输入 npm login 且输入 Username 后长时间无反应,则可能是 npm 使用了镜像地址,需要更改为官方地址。

#查看地址
pnpm config get registry
#更改为官方地址
pnpm config set registry

无法发布到私有包

npm ERR! publish Failed PUT 402
npm ERR! code E402
npm ERR! You must sign up for private packages :

这个当你的包名为 @Username/PackageName 时才会出现, 原因是当包名 @Username 开头时,npm publish 会默认发布为私有包, 但是 npm 的私有包需要付费,所以需要添加如下参数进行发布:

npm publish --access public

包名过于类似

npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! Package name too similar to existing packages; try renaming your package to '@Username/PackageName' and publishing with 'npm publish --access=public' instead : your-package

如果 npm 上已经有了不少和你的包名类似的包,就会出现这个问题,在 package.json 中修改你的包名即可。

没有权限发布

npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! You do not have permission to publish "your-package". Are you logged in as the correct user? : your-package

包名和其他用户的包重名,npm 里的包不允许重名,,改个没有人用的包名即可。