记录一次NPM发包,以及NPM账号邮箱验证问题。主要是点击确认邮箱地址时,还得使用上次登录成功的会话,这点没注意到,浪费了很多时间。并且导致push npm时一直失败。
一、发包
①切换仓库
需要使用官方的仓库,而不是镜像仓库https://registry.npm.taobao.org/
,需要设置https
而不是http
npm config set registry=https://registry.npmjs.org
② 发布
登录
npm login
发布命令
npm publish
发布成功后切换为镜像
npm config set registry=https://registry.npm.taobao.org/
最终报错403问题
结果如下:
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/hexo-tag-codepen-x - Forbidden
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.
npm ERR! A complete log of this run can be found in:
npm ERR! D:\Program Files\nodejs\node_cache\_logs\2021-09-24T23_45_16_660Z-debug.log
403问题:npm未完成邮箱验证
百度了一下,应该是注册账户时,没有去激活邮箱导致的。
所以我立马去NPM进行再次邮箱验证,npm发送了一封验证邮件(此时是在windows上操作的)
邮件中存在激活地址: https://www.npmjs.com/verify/f932abfa-63f3-415c-9213-88236039af03
二、 NPM账户邮箱激活失败
在手机的邮箱APP内找到邮件
点击激活地址后出现
looks like something unexpected occurred!
diagnostics id: 693fe9a57df761ac~2c11
实际时没有激活成功的,此时npm publish
还是会失败
三、解决方案
最终,将链接复制到已登录npm账户的windows浏览器中,才完成激活邮箱
再次尝试npm publish
,发布成功!
npm notice package: hexo-tag-codepen-x@1.0.0
npm notice === Tarball Contents ===
npm notice 1.1kB LICENSE
npm notice 1.8kB index.js
npm notice 675B package.json
npm notice 2.4kB README.md
npm notice 2.3kB zh/README.md
npm notice === Tarball Details ===
npm notice name: hexo-tag-codepen-x
npm notice version: 1.0.0
npm notice package size: 3.4 kB
npm notice unpacked size: 8.3 kB
npm notice shasum: 872e466bab2a7e8be9a3df9aca9431e847047160
npm notice integrity: sha512-GN9ssDQ/Uy7SG[...]kfrgF6YXiOodw==
npm notice total files: 5
npm notice
+ hexo-tag-codepen-x@1.0.0
四、其他,尝试发布到Github Packages
注意: GitHub Packages 只支持作用域内的 npm 包。 作用域内的包具有名称格式
@owner/name
。 作用域内的包总是以@
符号开头。 您可能需要更新 package.json 中的名称以使用作用域内的名称。 例如,"name": "@codertocat/hello-world-npm"
。
㈠ 命令式发布
首先需要配置package.json
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
获取token
这里的密码是Personal access tokens
需要的权限为:
npm login --registry=https://npm.pkg.github.com
Username: [USERNAME] # 如:xu-ux
Password: [TOKEN] # 如:****************
Email: (this IS public) [PUBLIC-EMAIL-ADDRESS] # 如:xu_uxo@163.com
Logged in as xu-ux on https://npm.pkg.github.com/.
发布报错
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://npm.pkg.github.com/hexo-tag-codepen-x
npm ERR! 404
npm ERR! 404 'hexo-tag-codepen-x@1.0.0' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
解决
GitHub Packages 只支持作用域内的 npm 包
所以修改包名
"name": "@xu-ux/hexo-tag-codepen-x",
再次发布,成功
npm notice package: @xu-ux/hexo-tag-codepen-x@1.0.0
npm notice === Tarball Contents ===
npm notice 1.1kB LICENSE
npm notice 1.8kB index.js
npm notice 756B package.json
npm notice 2.5kB README.md
npm notice 2.4kB zh/README.md
npm notice === Tarball Details ===
npm notice name: @xu-ux/hexo-tag-codepen-x
npm notice version: 1.0.0
npm notice package size: 3.4 kB
npm notice unpacked size: 8.5 kB
npm notice shasum: 6a387fe4e65edeb8c8e2111fb267c1e4c3032313
npm notice integrity: sha512-bjL6fWv1AazIb[...]iIHOVQ7iefKVQ==
npm notice total files: 5
npm notice
+ @xu-ux/hexo-tag-codepen-x@1.0.0
㈡ 配置发布
除了使用命令式输入Token
外(每次都要输入比较麻烦)
还可以将
Token
添加至~/.npmrc
,win
用户是路径C://users/current-user
//npm.pkg.github.com/:_authToken=TOKEN
在
package.json
所在目录创建一个.npmrc
文件,并添加以下内容registry=https://npm.pkg.github.com/GitHub用户名
发布
可以直接使用
npm publish
,也不用在package.json
填写publishConfig
㈢ 安装
需要注意的是,无论发布包还是安装包都需要授权,也就是上述生成Token
以及配置的过程,否则无法安装指定的包。
Ⅰ.已配置~/.npmrc
已经配置了.npmrc
文件的,可以直接使用如下命令
npm install @xu-ux/hexo-tag-codepen-x@1.0.0 --registry=https://npm.pkg.github.com/
Ⅱ.使用命令方式
首先登录
npm login --registry=https://npm.pkg.github.com
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS
再安装
npm install @xu-ux/hexo-tag-codepen-x@1.0.0