如何发布一个NPM包

如何发布一个NPM包

版权申明:本文为原创文章,转载请注明原文出处

原文链接:https://pangwu86.com/posts/2093845957/

起因是引用了一个 npm 包,发现 bug 后进行了修改并提交了 pull request。等了 20 多天那边一直不上线合并,只能自己把 fork 下来的库单独发布一下了。

下面将简要讲解一下从零开始创建,发布并使用自己的库的过程。

新建一个库 OR fork 一个库


  1. 创建新库

创建目录,然后使用命令 npm init 进行初始化,按照提示一路填写并回车即可。

  1. fork 别人的库

把别人的库 fork 后下载到本地,然后修改 pakcage.json 中库名,用户名等个人信息即可。

暴露你的库接口


如果希望自己的库也能像 npm 中其他的库那样导入,比如 import Vue from 'vue', 一些必要的前期工作还是需要完成的。

  1. package.jsonmain 属性要指定好入口文件,一般是 index.js

  2. 在入口文件中,使用 export 暴露你的方法,例如

    1
    2
    3
    // 入口文件 index.js
    export function sayHi() { console.log('hi, 你好'); }
    export default { sayHi }

    项目代码里就可以导入并使用了

    1
    2
    3
    4
    5
    6
    // 项目文件,导入库并使用
    import mylib from 'mylib'
    import { sayHi } from 'mylib'

    sayHi(); // 打印出 `hi, 你好`
    mylib.sayHi(); // 打印出 `hi, 你好`

注册 NPM 账号,然后发布


  1. npm官网 注册账号。
  2. 在命令行下执行 npm login,使用刚才注册的账户信息进行登录。
  3. 在命令行下进入项目根目录,执行 npm public,发布成功后会收到一份 npm官网 发送的通知邮件。
  4. npm官网 搜索包名应该就能看到了。

发布成功!

更新库内容


如果更改了包的内容需要更新版本再次发布。

  1. 修改 package.jsonversion 参数,将版本号增大。
  2. 再次执行发布命令 npm publish

没有更新版本号发布的话,会报错。

常见错误处理

Error 403:Forbidden


说明你起的包名在 npm 的公开库上已经存在了,所以要么改名,要么给包名加一下前缀,比如把 mylib 改成 @xx/mylib

Error 402:Payment Required


如果包名称带有 @xx 前缀,默认被当做私有库进行发布。而私有库是需要额外收费的,所以在发布这种库时需要指定其为公开库,不过仅仅是第一次发布需要,后续更新再发布可以不用加参数了。

1
2
# 第一次发布带有 @xx 前缀的库
npm publish --access public

第一次发布需要带参数 --access public

其他注意事项


如果是 fork 别人的库进行修改的,特别需要注意下原本库使用的 开源许可 是否允许这种二创的行为。

关于各种开源许可证的差异,可以参考以下几篇文章,都写的挺清楚的。

懒得看文章的,直接参考下面的图吧。

一图胜千言,按需选择即可

作者

胖五

发布于

2021-06-08

更新于

2021-08-24

许可协议


评论