一、写在前面

上一次,笔者向大家介绍了把gitlab仓库作为npm私包的使用方法,具体的详见我的博文地址https://www.cnblogs.com/cnroadbridge/p/16406476.html,它能用,但是不够优雅,比如说你想知道那个包的版本就不是很直观能够在package.json中体现。好多天前,一次偶然的机遇,被甲方的金主发掘并看上,脱离后端好久的我硬着头皮写了一些Node方面的面试题,具体的详见我的博文地址https://www.cnblogs.com/cnroadbridge/p/16361744.html,通过面试后就去了某地一线内卷中心进行周末兼职工作,还挺有意思的,嘿嘿,老板给我工钱的同时,我又能学习接触新的领域和知识,这不,在这其中我就学到了一种基于gitlab管理npm私包的方法。

二、这是一个烂尾楼的故事

好几个月前,我曾经在github上写了一个项目,它主要是基于leetcode拿来刷题的,大概写了几十题是有的,语言的话我是用ts写的,然后每一题也有它的单元测试, 都帮你配置好的,感兴趣的可以clone、star、fork下来玩玩https://github.com/ataola/coding-ts,如果你对ts不太熟,其实一年前我也是用js刷了一些题的,你可以看下这个https://github.com/ataola/coding,主要是有段时间特别忙,就没有时间和精力去做这件事,后来就停下来了,然后兼职也占了我一部分时间,一个人自嗨和一群人共舞还能拿点钱,那我肯定选后者啊,所以这个项目就烂尾了,谈起烂尾,我在2013年左右看到在我附近有一栋烂尾楼,得益于3号线的开发,这栋烂尾楼于去年又活了过来,我想后面我可能也是这个模式,也许某一天我又激活了这个项目,其实后面我更倾向于一个月输出3-7题题目上去润润脑子,毕竟你会做和你会做并把别人教会是两码事。

三、以我的烂尾楼项目为例进行GitHub package发包测试

发包嘛,总要选个仓库试一试,我看了下我的仓库列表,我决定让烂尾楼申请出战!!!

不知为何,我那个图片上输入不了中文,所以我就意思下写了几句英语,望周知。

3.1、创建github的AccessToken

Step1: 点击用户头像的settings进入设置页面

Step2: 点击Developer Settings进入开发者配置页面

Step3: 点击personal access token进入token配置页面,然后点击generate token创建一个新的token

Step4: 填写对于的token信息,拉到最下面点击generate new token按钮,这里需要注意啊,这个token它只会出现一次,所以生成以后,你复制粘贴到一个你能够保存的地方给他存起来哈

3.2、使用npm登录github package网站

Step 1: 登录github package的包网站 npm login --registry=https://npm.pkg.github.com

Step 2: 输入用户名密码,注意这里的密码就是你刚才在楼上生成的token,而不是你登录github账号的密码

具体的你可以看下楼下的日志:

➜  coding-ts git:(main) npm login --registry=https://npm.pkg.github.com
npm notice Log in on https://npm.pkg.github.com/
Username: ataola
Password:
Email: (this IS public) zjt613@gmail.com
Logged in as ataola on https://npm.pkg.github.com/.
➜ coding-ts git:(main)

Step 3: 设置所有@ataola开头的依赖包,都从Github源上获取

npm config set @ataola:registry=https://npm.pkg.github.com

3.3、尝试着发个包看看

这里需要注意的是,package.json里面的包名字需要改一下,比如我之前是"name": "coding-ts",,就需要改成"name": "@ataola/coding-ts",不然推不上去哈哈。

然后执行命令 npm publish

如果发版成功的话,就会有个github packages页面的,比如我这个项目的是https://github.com/ataola/coding-ts/packages/1525960

3.4、尝试着拉下刚才那个包

这里需要注意哈,3.2这个步骤你一定要做完再往下走,直接走3.4是不行的,即使配置了npm config set @ataola:registry=https://npm.pkg.github.com

日志如下:

➜  tmp npm install @ataola/coding-ts
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmmirror.com/@ataola%2fcoding-ts - [NOT_FOUND] @ataola/coding-ts not found
npm ERR! 404
npm ERR! 404 '@ataola/coding-ts@latest' 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. npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-07-10T00_34_11_096Z-debug.log
➜ tmp npm config set @ataola:registry=https://npm.pkg.github.com
➜ tmp npm install @ataola/coding-ts
npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="GitHub Package Registry" npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-07-10T00_34_32_327Z-debug.log
➜ tmp npm install @ataola/coding-ts@1.0.1
npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="GitHub Package Registry" npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-07-10T00_35_03_569Z-debug.log
➜ tmp

配置完token后,效果是这样的

➜  tmp npm install @ataola/coding-ts@1.0.1

added 1 package in 1s
➜ tmp tree -L 3
.
├── node_modules
│   └── @ataola
│   └── coding-ts
├── package-lock.json
└── package.json 3 directories, 2 files
➜ tmp cat package.json
{
"name": "tmp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@ataola/coding-ts": "^1.0.1"
}
}
➜ tmp

这在管理github上创建团队的仓库私包简直是福音啊,2022年好像用的代码编辑器,仓库,包管理,包含云啥的都是微软的哈哈

四、思考和总结

通过楼上的学习,你学会了github的发包吗? 其实除了npm包, github package也支持docker、 maven、nuGet、ruby等package的管理,有兴趣的同学可以去了解下。

除了楼上的东西外,我在兼职的时候也搞过下loopback这个框架,它是通过一些配置和命令可以自动生成从数据库到后端实体的关系映射,以及基于Open API接口的对应实现,这样子的好处是,你可以少写很多代码就可以得到很多后端接口,50%-60%非定制化需求的接口工作量它都能自动帮你实现,这对一个人手本身不足初创团队来说,无疑是一个好消息,有兴趣的读者可以去了解下,剩余的需求可以用midway或者egg这种业务框架去实现那些看着稍微复杂和定制化的业务需求,当然这其中你要实现抹平两个框架的认证差异,简单的说就是实现jwt或者类似于jwt的认证体系共享,这个就是我之前在团队做的部分工作之一。

如果你只是想通过这篇文章学习技术的,那你可以走了,因为后面的更多的是一种人生观价值观的交流,感兴趣的可以听一下我唠嗑哈。

兼职这件事吧,是一种双赢的合作模式吧。在几个月前我对未来非常迷茫,甚至有轻度抑郁倾向,那段时间我很低迷,每天中午午饭时间看半部豆瓣前250的电影去感悟世界和理解世界的一些情感,生命都是脆弱的,在一些事情面前显得很无力又很无助,是兼职它给了我一些激励和动力,晨兴周末理荒秽赶地铁,带月禾锄电脑归,一天也能赚个千八百的零花钱改善改善生活,第二天再去山姆超市买点面包水果蔬菜饮料,然后去外婆家弄堂里海底捞啥的吃顿好的,偶尔社会责任感爆棚也会通过腾讯公益、联合国儿童基金会向有需要的人提供一些金钱上的帮助,燃烧自己,为了社会主义的事业发光发热,一周也就这么过去了,充实而忙碌,嗯,总比躺在床上睡觉强,年轻人还是要有点上进心,你们也不用可怜我起早贪黑地讨生活,那又有什么办法呢,如果有的选,谁还不是个宝宝,谁不想做公主王子那样,吃着冰淇淋吹着空调看看电影啥的,毕竟房价那么贵,靠平时的工资也就只能温温饱饱,所以我其实是建议你们周末再出来为我们的社会主义建设出一份力出一份爱心的,做点微小的工作,嗯。

我其实运营着一个大概五六个人的兼职小群,其中有写JAVA的,有写Vue、有写React的,他们相信我,觉得我是一道光,能够给他们带来一些活,作为新时代农民工,一起去码头办公室扛沙包写代码,所以如果您有项目上需要软件开发的帮助,或者您想在闲暇之余像我一样找点事做吃顿好的,欢迎你们联系我,本着一切为社会主义发展做贡献的原则,我是很愿意做这样一些中间的枢纽去沟通协调这部分的工作,毕竟林清玄曾经说过,“大国民的品质,一是从容,二是有情”。

最后,我给大家推荐一部我那段时间看过的一部电影叫《美丽人生》,故事中小男孩爸爸一直是一个积极向上阳光的存在,哪怕到了生命最后一刻,也都是尽力保护着孩子维护着孩子的童年童真,那一回头,是那么地阳光灿烂,真的好治愈啊。

希望我的一些过往经历和经验,能够在技术上或者建立一个理性的社会主义观上帮助到你,房子会有的,车子也会有的,对象也会来的,只要你努力努力再努力,加油加油再加油,为了社会主义的事业燃烧自己,发光发热吧!!!

五、参考文献

https://docs.github.com/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#in-this-article

github package的使用教程的更多相关文章

  1. github桌面软件使用教程

    github桌面软件使用教程 首先 要先安装 桌面版官网,或者百度搜github windows下载即可 可以再github网站上直接点击,把代码添加的桌面软件中 也可以再左上角添加项目,比如actu ...

  2. git和github新手安装使用教程(三步入门)

    git和github新手安装使用教程(三步入门) 对于新手来说,每次更换设备时,github的安装和配置都会耗费大量时间.主要原因是每次安装时都只关心了[怎么做],而忘记了记住[为什么].本文从操作的 ...

  3. pip install GitHub package

    /********************************************************************************* * pip install Git ...

  4. GitHub官方Markdown语法教程

    说明:Markdown随着编译器不一样,语法也都不一样,但这份GitHub提供的官方教程,基本学会这份就够了. https://guides.github.com/features/mastering ...

  5. git与github的简单使用教程

    git与github的简单使用教程 一.创建仓库 点击new,进入创建仓库页面 对将要创建的仓库进行一些简单的设置 最后再点击create repository就可以了. 到这我们就创建好了一个仓库. ...

  6. Github 第三方授权登录教程

    Github 第三方授权登录教程 ####大致流程图 ####1.首先注册一个github帐号,Applications>Developer applications>Register a ...

  7. GitHub & GitHub Package Registry

    GitHub & GitHub Package Registry npm https://github.blog/2019-05-10-introducing-github-package-r ...

  8. GitHub和SourceTree入门教程

    -->本教程适用于主流的开源网站github和bitbucket,个人认为sourceTree还是比较好用的git客户端,支持windows和mac os. -->soureceTree的 ...

  9. [转] GitHub上README.md教程

    点击阅读原文 最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种 ...

随机推荐

  1. 字节跳动构建Data Catalog数据目录系统的实践(上)

    作为数据目录产品,Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景,并服务于数据开发和数据治理的产品体系.本文介绍了字节跳动 Data ...

  2. 在 ESXi 主机上关闭无响应的虚拟机电源

    使用 ESXi 命令行 使用 SSH 以 root 身份登录到 ESXi. 通过运行以下命令获取所有已注册虚拟机的列表,由其 VMID 和显示名称标识:       vim-cmd vmsvc/get ...

  3. 2003031121-浦娟-python数据分析第四周作业-第二次作业

    项目 内容 课程班级博客链接 20级数据班(本) 作业链接 Python第四周作业第二次作业 博客名称 2003031121-浦娟-python数据分析第四周作业-matolotlib的应用 要求 每 ...

  4. [题解][P5206][WC2019] 数树 (op = 1)

    简要题意 给定 \(n, y\). 一张图有 \(|V| = n\) 个点,现在给出两棵树 \(T_1=G(V, E_1)\) 和 \(T_2=G(V, E_2)\). 定义这两棵树的权值 \(F(E ...

  5. kill -9 进程杀不掉,怎么办?

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 用ps和grep命令寻找僵尸进程 ps -A -ostat,ppid,pid,cmd | gr ...

  6. C Primer Plus 学习笔记 -- 前六章

    记录自己学习C Primer Plus的学习笔记 第一章 C语言高效在于C语言通常是汇编语言才具有的微调控能力设计的一系列内部指令 C不是面向对象编程 编译器把源代码转化成中间代码,链接器把中间代码和 ...

  7. 基于STM32+华为云IOT设计智能称重系统

    摘要:选择部署多个重量传感器和必要的算法.通过WiFi 通信模块.GPS定位模块,采集车辆称重数据一地理位置信息,并通过网络发送至云平台,设计图形化UI界面展示称重.地图位置等重要信息,实现对称重系统 ...

  8. DOM 事件与事件委托

    DOM 事件与事件委托 本文写于 2020 年 5 月 28 日 先思考一个问题:我们如何给一百个 button 添加点击事件? 遍历? 那岂不是要添加一百个监听器? 这就需要事件委托了. 其实这根本 ...

  9. 最新版2022年任我行管家婆工贸版ERP M7 V22.0进销存财务生产管理软件网络版——云上的集团化制造管理系统

    在互联网+制造业的时代背景下,制造业在利用互联网技术进行转型升级的同时,也面临着供应链体系和生产模式的重塑,主要呈现出以下特点: 多元化发展 对外,传统企业正在通过"互联网+"逐步 ...

  10. 吊炸天,Spring Security还有这种用法!

    在用Spring Security项目开发中,有时候需要放通某一个接口时,我们需要在配置中把接口地址配置上,这样做有时候显得麻烦,而且不够优雅.我们能不能通过一个注解的方式,在需要放通的接口上加上该注 ...