npm 发包 学习笔记

发布到npm

  1. 注册npm账号(已有可忽略)
  2. 新建文件夹,进入该文件夹,运行npm init,生成package.json文件
  3. 将需要发布的代码放入该文件夹
    如果是第一次发布,运行 npm adduser,如果不是第一次发包,运行 npm login
  4. 进入项目文件夹下,运行 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的作用

  1. 第一步:发布第一个稳定版本
 npm publish//1.0.0
  1. 第二步:修改文件继续发布第二个版本
git add -A && git commit -m "c"
npm version patch
npm publish//1.0.1
  1. 第三步:继续修改文件发布一个prerelease版本
git add -A && git commit -m "c"
npm version prerelease
npm publish --tag -beta//版本n-n-n-n@1.0.2-0
  1. 第四步:继续修改发布第二个prerelease版本
git add -A && git commit -m "c"
npm version prerelease
npm publish --tag -beta//版本n-n-n-n@1.0.2-1
  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数组中存储的是所有的版本。

  1. 第六步:npm dist-tag命令
npm dist-tag ls n-n-n-n

npm dist-tag获取到所有的最新的版本,包括prerelease与稳定版本,得到下面结果:

-beta: 1.0.2-1
latest: 1.0.1
  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-tagsversion可以看出来,此时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 想当于把当前的版本在重新发布一下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343