NPM包发布、更新、撤销

文章目录

随着jsdelivr被墙,国外各个CDN链接访问速度又太慢,自组CDN仓库变得有一定的必要。
其实国内一些大厂有CDN仓库,但是收录的大部分都是主流的仓库,自己的一些静态静态还是需要一个高速的CDN仓库来托管。
购买云服务、cos等自建CDN库是一种办法,但是存在一定的费用,这篇文章记录利用NPM发布仓库并访问的方案。
image

发布

初始化

新建本地仓库

在本地新建一个文件夹,用于存放仓库静态资源。

初始化

1
2
cd 你新建的仓库目录
npm init

按照提示进行对应键入即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"name": "mengcdn",
"version": "1.0.0",
"description": "CDN warehouse used by meng.me",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Meng.me",
"license": "ISC"
}


Is this OK? (yes)

如下图,已经用红框标出键入部分:
image

发布

创建NPM账号

如果你没有NPM账号,你需要先注册一个

注意:注册后验证会发送一个OTP code,一定要验证才能发布。

image

登录NPM账号

先登录你的NPM账号

1
npm login

现在请使用npm login,目前也可以使用npm adduser,注意:

1
npm WARN adduser `adduser` will be split into `login` and `register` in a future version. `adduser` will become an alias of `register`. `login` (currently an alias) will become its own command.

在此你可能遇到以下错误:

1
2
3
4
5
6
7
8
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.couchdb.user:menggod - [FORBIDDEN] Public registration is not allowed
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/meng/.npm/_logs/2022-12-16T06_52_01_553Z-debug-0.log

此时你可能设置了其他镜像,将其切回即可正确完成登录操作:

1
npm config set registry https://registry.npmjs.org/

此时再进行npm login操作,会再次验证OTP code,在邮件中查看键入即可。
image

提交

1
npm publish

image
至此发布已完成,可以登录NPM查看到了。

访问

通过jsdelivr访问:

1
https://cdn.jsdelivr.net/npm/(your packagename)@(version)/(file)

例如:
https://cdn.jsdelivr.net/npm/mengblog@1.0.0/about.txt
访问速度慢可以尝试替代方案,可自行在百度寻找,例如:
https://cdn.bilicdn.tk/npm/mengblog@1.0.0/about.txt
如果有需要你也可以使用我的仓库:mengblog
如果仓库没有你想要的内容,你也不想发布,我可以帮到你:请给我留言注明你需要的资源

常见问题

  1. no_perms Private mode enable, only admin can publish this module
    这是因为镜像设置成淘宝镜像了,设置回来即可

    1
    npm config set registry https://registry.npmjs.org/
  2. npm publish failed put 500 unexpected status code 401
    一般是没有登录,重新登录一下 npm login 即可

  3. npm ERR! you do not have permission to publish “your module name”. Are you logged in as the correct user?
    包名被占用,改个包名即可。最好在官网查一下是否有包名被占用,之后再重命名

  4. you must verify your email before publishing a new package
    邮箱未验证,去官网验证一下邮箱

更新

修改版本号

方法一:在上节说到的初始化目录中找到package.json,修改version参数。
方法二:当然你也可以使用命令npm version自动更新版本号。
npm version [option]
option选项如下:

1
2
3
4
5
6
7
major:主版本号(大版本)	[2.0.0]
minor:次版本号(小更新) [1.1.0]
patch:补丁号(补丁) [1.0.1]
premajor:预备主版本 [2.0.0-0]
preminor: 预备次版本 [1.1.0-0]
prepatch:预补丁版本 [1.0.1-0]
prerelease:预发布版本 [1.0.1-0]

执行对应 npm version [option] 命令后可以在 package.json 文件中看到对应版本。

发布

1
npm publish

这个就不放图了,很简单就是更新下版本号然后发布就行了。

至此更新已完成,可以登录NPM查看到了。

撤销

1
npm unpublish projectName --force

撤销指定版本:

1
npm unpublish projectName@version --force

例如我需要撤销刚刚发布的1.0.3,如图:
image

npm 官方对撤销已发布的包说明:

  • 不允许撤销发布已经超过 24 小时的包,撤销发布 24 小时内的包需要加 –force 参数
  • 撤销之前发布的包,再次发布的时候不能与之前被撤销的包的名称/版本其中之一相同,因为这两者构成的唯一性已经被占用,官方并没有随着撤销而删除
微信公众号
分享到: