发布到npm
- 注册npm账号(已有可忽略)
- 新建文件夹,进入该文件夹,运行npm init,生成package.json文件
- 将需要发布的代码放入该文件夹
如果是第一次发布,运行 npm adduser,如果不是第一次发包,运行 npm login - 进入项目文件夹下,运行 npm publish 发布。
发布的地址是当前npm厂库的地址
参看当前仓库地址:npm config get registry
设置仓库地址: npm config set registry https://registry.npm.taobao.org
参看当前包所有版本信息: npm view xxxx versions
参看当前包最新版本信息: npm view xxxx version
参看当前包所有信息: npm info xxxx
查看当前安装报的版本: npm ls xxxx
package.json中的name、version就是对应报的名字和版本
具体参考:
https://blog.csdn.net/qq_36256944/article/details/80459383
发布到公司的私有源
通过发布到npm公有的源的方式我们通过将发布的地址改为公司私有源的地址就可以了。(用户名,密码这个肯定也要变,流程不变)
现在我们通过另外一种方式来发布到私有源: 以公司的hzero-front
为例
发包的过程:
编译用于发布的版本
执行如下命令
$ cd packages/<hzero front module>
$ yarn transpile
第一种也是要编译用于发布的版本的
生成 auth hash
执行如下命令
echo -n 'username:password' | openssl base64
用密码和账号生成秘钥
将生成的auth hash按照如下方式配置
email=yourname@hand-china.com
always-auth=true
_auth=yourbase64hashcode
执行如下命令将上面的配置加入到node.js
全局环境变量配置文件.npmrc
中
$ npm config edit
再执行如下命令发布即可
$ npm publish --registry http:xxxxxxxxxxxxxxxxxxxxxxx
发布到指定位置
如果发布beta版本 需要加上这两个参数 --tag beta
关于为啥发布beta 需要加上上面两个参数
现在用一个例子来解释参数--tag beta
的作用
- 第一步:发布第一个稳定版本
npm publish//1.0.0
- 第二步:修改文件继续发布第二个版本
git add -A && git commit -m "c"
npm version patch
npm publish//1.0.1
- 第三步:继续修改文件发布一个prerelease版本
git add -A && git commit -m "c"
npm version prerelease
npm publish --tag -beta//版本n-n-n-n@1.0.2-0
- 第四步:继续修改发布第二个prerelease版本
git add -A && git commit -m "c"
npm version prerelease
npm publish --tag -beta//版本n-n-n-n@1.0.2-1
- 第五步:npm info查看我们的版本信息
{ name: 'n-n-n-n',
'dist-tags': { latest: '1.0.1', '-beta': '1.0.2-1' },
versions: [ '1.0.0', '1.0.1', '1.0.2-0', '1.0.2-1' ],
maintainers: [ 'liangklfang <liangklfang@163.com>' ],
time:
{ modified: '2017-04-01T12:17:56.755Z',
created: '2017-04-01T12:15:23.605Z',
'1.0.0': '2017-04-01T12:15:23.605Z',
'1.0.1': '2017-04-01T12:16:24.916Z',
'1.0.2-0': '2017-04-01T12:17:23.354Z',
'1.0.2-1': '2017-04-01T12:17:56.755Z' },
homepage: 'https://github.com/liangklfang/n#readme',
repository: { type: 'git', url: 'git+https://github.com/liangklfang/n.git' },
bugs: { url: 'https://github.com/liangklfang/n/issues' },
license: 'ISC',
readmeFilename: 'README.md',
version: '1.0.1',
description: '',
main: 'index.js',
scripts: { test: 'echo "Error: no test specified" && exit 1' },
author: '',
gitHead: '8123b8addf6fed83c4c5edead1dc2614241a4479',
dist:
{ shasum: 'a60d8b02222e4cae74e91b69b316a5b173d2ac9d',
tarball: 'https://registry.npmjs.org/n-n-n-n/-/n-n-n-n-1.0.1.tgz' },
directories: {} }
我们只要注意下面者两个部分:
'dist-tags': { latest: '1.0.1', '-beta': '1.0.2-1' },
versions: [ '1.0.0', '1.0.1', '1.0.2-0', '1.0.2-1' ],
其中最新的稳定版本和最新的beta版本可以在dist-tags中看到,而versions数组中存储的是所有的版本。
- 第六步:npm dist-tag命令
npm dist-tag ls n-n-n-n
即npm dist-tag
获取到所有的最新的版本,包括prerelease
与稳定版本,得到下面结果:
-beta: 1.0.2-1
latest: 1.0.1
- 第七步:当我们的prerelease版本已经稳定了,重新设置为稳定版本
npm dist-tag add n-n-n-n@1.0.2-1 latest
<a href="#jump">npm dist-tag add理解</a>
此时你通过npm info查看可以知道:
{
name: 'n-n-n-n',
'dist-tags': { latest: '1.0.2-1', '-beta': '1.0.2-1' },
versions: [ '1.0.0', '1.0.1', '1.0.2-0', '1.0.2-1' ],
}
从dist-tags
和version
可以看出来,此时latest
版本已经是prerelease
版本”1.0.2-1”
了!此时用户如果直接运行npm install
就会安装我们的prerelease
版本了,因为版本已经更新了!
参考文章: https://blog.csdn.net/liangklfang/article/details/68947786
关于npm version的用法理解
对于每次发布包的版本 我们可以通过直接修改package.json中的版本也可以通过npm version
命令的形式来修改每次发布的版本
一、版本号的位置及简述
每个npm
包都有一个package.json
文件,文件中的version
字段即为当前包的版本号。
version
字段一般由三位数构成,格式如下:x.x.x
,分别对应着version
里面的: major, minor, patch
; 若带预发号的话,
格式为: x.x.x-x
,最后一位表示预发号。
二、修改版本号的命令
npm version
命令用于更改版本号的信息,并执行commit
操作;该命令执行后, package.json
里的 version
会自动更新。
一般来说,当版本有较大改动时,变更第一位, 执行命令:npm version major -m "description" , 例如1.0.0 -> 2.0.0
;
当前包变动较小时,可变更第二位,执行命令:npm version minor -m "description", 例如: 1.0.0 -> 1.1.0
;
当前包只是修复了些问题时,可变更第三位,执行命令:npm version patch -m "description", 例如: 1.0.0 -> 1.0.1
;
参考文章: https://blog.csdn.net/u011575498/article/details/105863166
<a id='jump'>npm dist-tag add理解</a>
npm的tag
我们可以通过 npm dist-tag ls [<pkg>]
来查看一个包的tag
,一般来说我们至少会有三种类型的标签
latest
:最后版本,npm install
的就是这个
beta
:测试版本,一般内测使用,需要指定版本号install
,例如3.1.0-beta.0
next
: 先行版本,npm install foo@next
安装,例如3.0.2-alpha.0
如果我们需要发布一个测试版本,在发布的时候需要执行
npm publish --tag beta
如果你直接执行npm publish
,那么即使你的版本号是 -beta.n
,默认会打上 latest
的标签,别人install
的时候也会下载到。这个时候需要我们只要改一下tag
:
##### 使用npm dist-tag add更改特别版本的tag
// 不小心发错了
latest: 1.0.1-beta.0
bate: 1.0.0
// 将1.0.1-beta.0设置为beta
npm dist-tag add my-package@1.0.1-beta.0 beta
// 将1.0.0 设置为lastest
npm dist-tag add my-package@1.0.0 latest
删除发布的包
npm unpublish 包名 --force
更新发布的包指定的版本(不更新版本号)
在package.json写定报的版本,然后执行npm publish 想当于把当前的版本在重新发布一下