发布自己的npm包
发布 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
里的包不允许重名,,改个没有人用的包名即可。