一、写在前面

上一次,笔者向大家介绍了把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. 华为麒麟团队力造的Python,整整26G

    华为团队力造的Python,下面链接自取 https://docs.qq.com/doc/DRkZvRkxvb292c2Vz

  2. Python抽象基类:ABC谢谢你,因为有你,温暖了四季!

    Python抽象基类:ABC谢谢你,因为有你,温暖了四季! Python抽象基类:ABC谢谢你,因为有你,温暖了四季! 实例方法.类方法和静态方法 抽象类 具名元组 参考资料 最近阅读了<Pyt ...

  3. 干货 | Nginx 配置文件详解

    一个执着于技术的公众号 前言 在前面章节中,我们介绍了nginx是什么.如何编译安装nginx及如何彻底卸载nginx软件. 干货|给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 ...

  4. .NET混合开发解决方案10 WebView2控件调用网页JS方法

    系列目录     [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...

  5. 811. Subdomain Visit Count - LeetCode

    Question 811. Subdomain Visit Count Example 1: Input: ["9001 discuss.leetcode.com"] Output ...

  6. Git分离头指针

    Git头指针 Git中有HEAD头指针的概念.HEAD头指针通常指向某个分支的最近一次提交,但我们也可以改变它的指向,使其指向某个commit,此时处于分离头指针的状态. 如下,改变HEAD的指向,g ...

  7. 【产品】如何写好APP描述

    你有没有想过越是需要花钱购买的 App,用户会更认真阅读你的 App描述?本文列举了15个 app 描述,看看哪些是我们以前忽略了的,哪些是我们也犯过的错误.图中有红色背景的文字是需要强调的地方,这些 ...

  8. 通过一次生产case深入理解tomcat线程池

    最近生产上遇到一个case,终于想明白了原因,今天周末来整理一下 生产case 最近测试istio mesh的预热功能(调用端最小连接数原则) 来控制调用端进入k8s刚扩出来的容器的流量 因为刚启动的 ...

  9. bintree

    Python实现二叉树的建立与遍历 创建(二叉)树节点类 class Node: def __init__(self,data,l=None,r=None): self.val = data self ...

  10. 直接将A类库复制到vs中的B类库,但是解决方案菜单中不显示

    1.将要复制的文件夹复制粘贴到你要用的vs项目中 2.右键 添加   现有项目  选中xxxxx.csproj文件   点击  打开   就可以了