发布npm的多种方法:npm publish / yarn publish / Github

目录:
一、npm和github package的基本概念

二、常规上传至npm公共注册表方法(推荐使用nrm进行镜像切换)

  • npm publish
  • yarn publish

三、推送至github npm package方法


一、npm和github package的基本概念

  1. npm注册表:可理解为npm的官方公共注册表的各种镜像链接
  1. npm package:在npm官网的公共注册表中,上传的modules

  2. github package:github可支持上传多种类型打包项目。且因github已收购npm,所以可以上传包括npm类型在内的各种package


    仓库首页即可找到github package位置
github package类型
  1. 参考文档

二、常规上传至npm公共注册表方法(npm publish / yarn publish):

  1. 使用NPM镜像源进行上传
// 切换注册表至npm官方注册表
// 1.1. npm注册用户(若无npm账号)
npm adduser --registry https://registry.npmjs.org/

// 1.2. npm 登录(若已有npm账号)
npm login --registry https://registry.npmjs.org/
// username和password请填入npm用户名和密码

// 2. npm发布package
npm publish --registry https://registry.npmjs.org/

// 备注:其他相关方法:
npm whoami // 查询当前登录账号
npm config set registry https://registry.npmjs.org/   // 全局修改npm注册表
  1. 使用yarn镜像源和yarn命令进行上传(对于使用npm镜像经常出现网络连接失败的情况下,建议尝试yarn)
// 1. 切换至yarn镜像源(nrm命令详解位于下方)
nrm use yarn

// 2. 登录npm账号,同样需要输入
yarn login

// 3. 发布
yarn publish
操作

发布结果
  • 推荐切换注册表方法:nrm包
// 1. 全局安装nrm包
$ npm install -g nrm 

// 2. 查看可选npm源
$ nrm ls
// 显示结果:
* npm -------- https://registry.npmjs.org/
  yarn ------- https://registry.yarnpkg.com/
  cnpm ------- http://r.cnpmjs.org/
  taobao ----- https://registry.npm.taobao.org/
  nj --------- https://registry.nodejitsu.com/
  npmMirror -- https://skimdb.npmjs.com/registry/
  edunpm ----- http://registry.enpmjs.org/

// 3. 切换npm源(以淘宝镜像为例):
$ nrm use taobao
// 显示结果:
   Registry has been set to: https://registry.npm.taobao.org/

// 4. 测试各镜像源速度:
$ nrm test
// 显示结果
  npm ---- Fetch Error
* yarn --- 6281ms
  cnpm --- 2330ms
  taobao - 1865ms
  nj ----- Fetch Error
  npmMirror  5762ms
  edunpm - Fetch Error

// 指定某一镜像源进行测试,建议在上传先测试速度
$ nrm test taobao
// 显示结果
  taobao - 187ms

// 注意:若当前项目根文件夹存在.npmrc文件,且文件中已配置registry时,使用nrm进行全局切换对当前项目无效

三、推送至github npm package方法:

参考文档:Configuring npm for use with GitHub Packages
(该文档有中文版本,可网页上方进行切换)

  1. 项目文件的根文件夹,创建一个.npmrc文件,并写入以下内容:
registry=https://npm.pkg.github.com/OWNER
// 备注:OWNER部分写入你的github用户名,代表指向你的github作用域
  1. package.json添加仓库信息和发布配置信息,以保证多次发布均至同一仓库:
"repository" : {
    "type" : "git",
    "url": "ssh://git@github.com/OWNER/REPOSITORY.git",
    "directory": "packages/name"
  },
"publishConfig": {
    "registry":"https://npm.pkg.github.com/"
  },
  1. 修改package.json中package名称:
"name": "@OWNER/project_name"

// 其中OWNER为github用户名,project_name是该package名称
  1. 上传前需检查package.json中的版本号是不是和已有版本重复,例如"version": "0.1.0"

  2. 上传项目/更新项目至github仓库:


    上传项目至仓库
  3. 设置github token以用于发布package到github:
    6.1. 点击用户头像,选择settings
    6.2. 选择Developer Settings

    Developer Settings

    6.3. 选择Personal Access Token
    Personal Access Token

    6.4. 点击右上角Generate New Token
    6.5 填写该token相关描述,并选中所有项
    6.6 点击底部Generate Token,则会生成一个github token,该token仅此次会显示内容,请注意保存,刷新页面后就会隐藏
    填写所有信息,并生成token

    生成token结果(已做脱敏处理)

  4. 前往仓库设置,将token放入该仓库配置中:
    7.1. 打开仓库设置

    仓库设置

    7.2. 选择settings中的Secrets,点击 New repository secret
    新建secrets.png

    7.3. 填入token至value
    将token填入value栏

    新增成功

  5. npm登录

npm login --scope=@OWNER
// OWNER为个人用户名
// username请填入你的npm用户名(不是github用户名)
// password请填入上面生成的github token
// email请填入邮箱地址
npm login至个人github
  1. npm 发布package:
npm publish
发布成功
  1. 前往网页中查看:


    仓库首页出现package信息

    点击查看该npm包详细内容
  2. 注意:该方法产生的npm包,不会出现在npm官网上

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

推荐阅读更多精彩内容