前言

记录一次犯蠢经历😅,主要是npm私服发包和npm官网发包有一点小区别。

npm官网

包写好后,先登录,登录之后直接publish就ok了。
注意:

  1. 确定在执行登录命令的时候处于npm源下,不能是淘宝源等其他源,否则会401报错;
  2. 包发布24小时内可以使用unpublish撤销。

npm文档传送门

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 登录 会提示输入账号,密码,邮箱
npm login

// 退出登录
npm logout

// 发包
npm publish

// 删除 npm unpublish [<@scope>/]<pkg>@<version>
npm unpublish
npm unpublish [<@scope>/]<pkg>@<version>
npm unpublish [<@scope>/]<pkg> --force

// deprecate命令 弃用一个包 会给使用这个包的人 推送弃用警示
npm deprecate <pkg>[@<version range>] <message>
npm deprecate my-thing@1.x "1.x is no longer supported"

npm login 之后,在npm的.npmrc文件的最后一行会出现_authToken存储token信息,退出登录之后会被清掉;
.npmrc 文件可以通过npm config ls后在userconfig找到地址;

1
2
...
//registry.npmjs.org/:_authToken=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

npm私服

一般都是使用nexus搭建的私服,建库的时候需要建hosted类型的库,私服发布包需要在本地配置好账户信息,不用使用npm login做登录操作。
使用nrm切到你私服的源,在本地配置好账户信息的前提下,直接npm publish就可以发成功了。

nexus文档地址

文档写的很清楚,如何建库,如何配置,详细配置请参考文档。

坑在这里

一开始并不知道私服只要配置了本地的账户信息之后,就不需要再登录了,配置好后,尝试登录一直报错400 Bad request也没有更加明确的提示!查了一堆资料都没有找到解决方案,实在无语😑,于是想试试看npm publish会报什么错来着,结果包就上去了~ 上去了~ 发成功了Σ(⊙▽⊙”a!好吧!
防止是意外成功,我又切回npm源npm login输入正确的账号、密码、邮箱登录成功,使用npm publish把包在npm上发布了一份,然后npm logout退出登录;再次切换到私服改了一下版本号重新npm publish,果真又成功了!

自说自话

借此篇文章记录一下,近来的感想:
在做一件事情的时候,如果暂时被困难挡住,不要那么快气馁,深呼吸冷静一下,理清一下思路换个方式再去试试,说不定就豁然开朗了呢?
一切栏不住自己的难题,终将成为我成长路上的养料~