Android专有GitHook完结篇,发布到npm

news2024/11/18 17:38:08

系列文章目录

Android打造专有hook,让不规范的代码扼杀在萌芽之中

Android打造专有hook第二篇,走进规范第一步

Android打造专有Hook第三篇,实战全量代码规范检查

Android打造专有Hook第四篇,实战增量代码规范检查

Hello啊各位老铁,姗姗来迟了,前边的四章,大致概述了实现的过程以及最终的效果展示,可以负责任的说,基本上可以满足我们的实际需求,毕竟都是一些基本的规范验证,但是做到百分之百的准确率,这个暂时还达不到,毕竟是在脱离了项目,脱离了语言的情况下进行另类的规范验证,做到目前的这种,自我感觉已经很可以了,当然了,肯定还有优化的空间。

基于前四章,我们已经开发出了相关的功能,在本地,我们也是可以使用的,但是开发出的这套规范,如何让别人使用呢?复制给别人?放到一个链接中,让别人下载后使用?当然是可以的,但是21世纪的今天,这种方式确实有点Low了,有没有一种既简单又快捷的方式呢?有,必须有,今天,我们就一起把前边实现的功能,发布至npm,通过npm简单的命令,提供给别人下载使用。

今天的内容大概如下

1、简单了解npm

2、已有项目发布流程

3、新项目发布流程

4、更新和删除组件

5、npm常见的命令

6、问题总结

简单了解npm

官网:https://www.npmjs.com/

npm 是 JavaScript 的包管理工具,并且是 Node.js 平台的默认包管理工具。通过 npm 可以安装、共享、分发代码,管理项目依赖关系,其实就类似于Android中的Maven依赖,无非就是把功能托管到远程,本地之间下载安装即可,方便开发者便捷使用,这个没啥好阐述的。

已有项目发布流程

我们当前的项目就是属于已经开发好的项目,我们看下项目目录,具体的文件内容,大家可以回顾前边几章内容。

 

1、注册账号

既然要发布到npm,肯定要先去注册账号,跟Android中的aar发布到远程Maven类似,没有一个平台的账号,是无法执行下一步的。

大家可以去到官网,或者直接点击下面的注册页面,填写相关信息进行注册。

https://www.npmjs.com/signup

这个邮箱很重要,因为每次你发布相关信息都会通过邮箱下发通知到你,同样的,登录获取验证码,找回密码等也是通过这个邮箱。


我是比较推荐这种注册方式的,可视化,直观,当然了,除了这种的注册方式之外,还有一种是通过命令的方式注册。


命令:

npm adduser

具体执行:

2、登录账号

注册好账号之后,执行登录即可,输入自己注册时的用户名,密码,邮箱,然后输入验证码即可。

命令:

npm login

 具体执行:

3、发布包到npm包服务器

命令:

npm publish

具体执行:

上述的执行流程就是发布成功之后的截图,当最后一行出现了,你的组件名字和版本号即为发布成功,这个组件的名字,就是你的package.json文件中的name。

发布成功之后,登录npm官网,就可以查看到自己刚才发布成功之后的组件了,如下图:

 点击之后,右侧会展示一些基本的信息,如下载安装的命令,版本号,大小等。

至此,我们的项目已经成功发布到npm官网了,其他人再有node.js环境的基础上,就可以通过下载安装命令,很便捷的安装了。

npm i android_git_hook

新项目发布流程

新项目的发布流程其实和已有项目基本流程是一样的,无非就是前边的创建项目过程,关于项目的创建,在前边的第二章中有过概述,这里再简单的陈列一下。

初始化npm

一个新的项目,一开始肯定是空的,找一个空的目录,执行初始化命令:

npm init

当执行npm init时,会按照步骤,让输入很多东西,如果你不想一步一步输入,每次直接回车即可,反正也是可以修改的。

如果想进行一步一步输入,具体流程如下,中间不想输入,可以回车略过:

package name 包名,也就是工程名,默认是括号中的内容 
version:版本号,默认是括号中的内容 
description:描述信息 
entry point:入口文件名,默认是括号中的内容 
test command:测试命令 
git repository:git仓库地址 
keywords: 密码 
author: 作者名字 
license: (ISC)许可证

具体的执行就不截图了,本身就是一步一步来执行,后续的package.json也是可以随意更改的,拿一个之前的项目执行的例子,给大家看一下:

项目初始化之后,你就会发现,你的空目录下,出现了一个package.json文件,这个里面有很多至关重要的信息,大家可以回顾下第二章内容,这里就不赘述了。

初始化好了npm,剩下的就是写代码的过程了,写好代码然后进行发布到npm,就和已有项目发布流程一样的,大家直接看已有项目发布流程即可。

更新和删除组件

组件的完成肯定不是一蹴而就的,有可能会持续好几个版本,那么,我们如何进行更新代码以及使用者如何更新到最新的版本呢?

开发者在更改了最新的代码之后,需要更改package.json文件的版本号,然后重新发包即可,也就是重新执行npm publish命令。

使用者更新到最新版本,执行下面的命令即可,android_git_hook为你的package.json文件中的name。

npm update android_git_hook --save-dev

使用者如果不想用了,可以执行下面的卸载操作。

npm uninstall android_git_hook --save-dev

也可以删除指定的版本

npm unpublish 包名@版本号

或者删除整个包

npm unpublish 包名 --force

npm常见的命令

关于常用到的npm命令,之前多多少少都介绍过,这里简单总结一下。

初始化npm
npm init

登录与退出登录npm(先注册)
npm login //登录要用户名密码邮箱及验证码
npm logout

安装包
npm i 包名
npm i 包名 -D  //开发模式

安装包某一个包
npm install pre-commit

卸载某一个包
npm uninstall 包名
npm i 包名@1.1.1(指定版本号,可以一个数字表示大版本)
npm i 包名 -g //表示全局模式安装,卸载时也要-g

更新某一个包
npm update android_git_hook

发布包与将发布包删除
npm publish //在该包的终端下运行
npm unpublish 包名 -force

查看包版本和所有版本
npm view 包名 version
npm view 包名 versions

问题总结

按照正常的执行流程,大家应该都能走的通,但是,肯定也有一些意外的产生,下面列举几个常见的错误,大家在发布的过程中,可以进行避免。

1、使用npm 命令注册:npm adduser

如果用户名被别人注册过,那么回报如下错误:Unable to authenticate, need:Basic

解决方式,换一个用户名。

2、npm publish

如果报错:'You do not have permission to publish "mypackage1". Are you logged in as the correct user?'

表示包’mypackage1‘已经在包管理器已经存在被别人用了,需要更该包名称,也就是去把package.json文件中的name,改一下。

Android专有GitHook系列就暂时完结了,后续有时间会专门再做一下优化,因为有一些细节性的规范匹配并不是很完美,好了老铁们,这篇就分享到这里,我们下篇见。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NLP】词向量

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

阿里巴巴面试题- - -多线程并发篇(三十)

前言:七月末八月初的时候,秋招正式打响,公司会放出大量的全职和实习岗位。为了帮助秋招的小伙伴们,学长这里整理了一系列的秋招面试题给大家,所以小伙伴们不用太过焦虑,相信你们一定能超常发挥,收到心仪公司的Offer~~ 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elast…

窥一斑而知全豹,从五大厂商看MCU国产化的机遇和挑战

👆👆👆 #电巢直播10月26日(周三)扫码参与 前言 近年来,MCU在各领域的应用大幅度增加。2021年全球MCU的总出货量仍旧增长12%,使去年全球MCU的交付量达到了309亿片的历史新高。根据IC Insights…

工业控制系统安全评估流程系统评定与分类

综述 随着计算机和网络技术的发展,特别是信息化与工业化## 综述 随着计算机和网络技术的发展,特别是信息化与工业化深度融合以及物联网的快速发展,工业控制 系统产品越来越多地采用通用协议、通用硬件和通用软件,网络威胁正在由传…

Linux文件属性与权限

目录 前言 文件权限类 文件属性 rwx 作用文件和目录的不同解释 chmod 改变权限 1)基本语法 2)经验技巧 3)案例实操 chown 改变所有者 1)基本语法 2)选项说明 3)实操案例 chgrp 改变所属组 …

康为世纪科创板上市破发:跌幅超10% 公司市值41亿

雷递网 雷建平 10月25日江苏康为世纪生物科技股份有限公司(简称:“康为世纪”,股票代码为“688426”)今日在科创板上市。康为世纪此次发行价为48.98元,发行2329万股,募资总额为11.4亿元。康为世纪开盘价为4…

【单片机毕业设计】【mcuclub-jj-048】基于单片机的水表的设计

最近设计了一个项目基于单片机的水表系统,与大家分享一下: 一、基本介绍 项目名:水表 项目编号:mcuclub-jj-048 单片机类型:STC89C52 具体功能: 1、通过继电器控制水泵,将水抽出经过流速传感器…

Redis实战篇一 (短信登录)

Redis企业实战(黑马点评)项目整体架构项目部署后端部署前端部署短信登陆基于Session实现登录集群的Session共享问题基于Redis实现共享session登录解决状态登录刷新的问题——登录拦截器的优化本期学习路线短信登陆: Redis的共享session应用 商户查询缓存…

jar包突然过大解决方法,解决ffmpeg剪辑视频导致jar过大

jar包突然过大解决方法 缘由: ​ 项目中要需要用到视频文件,为了方便用户使用,那么页面中就需要增加视频剪辑的相关功能,让用户上传视频后能够自定义的进行剪辑,对自己的视频做出相应的更改 结果: ​ 打jar…

Vue复刻华为官网 (二)

文章目录1 推荐信息1.1 思路1.2 代码1.3 知识补充1.4 效果图2 宣传海报2.1 思路2.2 代码2.3 效果图3 新闻与活动3.1 思路3.2 代码3.3 效果图1 推荐信息 1.1 思路 看了这个gif后,可以清楚的看到产生了三个动画效果:图片"拉近","…

js 实现页面隐藏、关闭、刷新给出对应的提示

我们在做项目的时候经常会遇到一些需求,比如在某些页面当点击浏览器刷新 或者关闭的时候会有对应的提示,是否离开或者重新加载此网站。比如csdn写文章的时候就有这个弹窗,这功能就是用onbeforeunload实现的。 注意:如果你加载下面…

学会用Linux用户管理命令

目录 useradd 添加新用户 1)基本语法 2)案例实操 passwd 设置用户密码 1)基本语法 id 查看用户是否存在 1)基本语法 2)案例实操 cat /etc/passwd 查看创建了哪些用户 1)案例实操 su 切换用户 1…

Linux基本工具(上)

目录 粘滞位:t yum yum install yum list ​编辑 yum list | grep 软件名 yum search 软件名 软件卸载:yum remove rz sz表示下载: Linux开发工具: vim编辑器: vim的几种模式: 粘滞位&#xff1a…

蛇形矩阵求解

题目: 题解思考: 这个题目我有两种解题方法: 1)利用数组,数组的下标。 2)利用等差数列的规律(这个可能比较难理解),行和列的递增规律。 注意输出格式的处理和多组输入…

三分钟带你手撕带头双向循环链表

数据结构——带头双向循环链表 🏖️专题:数据结构 🙈作者:暴躁小程序猿 ⛺简介:双非大二小菜鸟一枚,欢迎各位大佬指点~ 文章目录数据结构——带头双向循环链表前言一、什么是双向链表?二、带头…

图像智能处理黑科技,让图像处理信手拈来

图像智能处理黑科技,让图像处理信手拈来0. 前言1. 图像智能处理简介2. 图像切边增强3. PS 检测4. 图像水印去除5. 图像矫正6. 图像去屏幕纹7. 调用图像智能处理 API小结0. 前言 计算机视觉 (Computer Vision, CV) 通过研究如何令机器“看懂”世界,构建从…

嵌入式分享合集84

今天做的某地区的项目, 了解了一下 很是不开心 原来这几年丢的不仅是某公湖 真呵呵 一、学习单片机 如何系统地入门学习STM32? 假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。 你要考虑的是, 我可以用STM32实…

Scratch软件编程等级考试三级——20200913

Scratch软件编程等级考试三级——20200913理论单选题判断题实操幻影小猫打气球游戏猫咪抓老鼠游戏理论 单选题 1、要使以下代码运行后画出如图所示三角形风车,则以下代码中①②③④处应分别填入多少?() A、3 4 90 120 B、4 3 90…

实验项目一:【文本反爬网站的分析和爬取】

一、实验目的 熟悉使用Selenium、Pyppeteer等工具爬取网站基本内容,通过分析具有文本反爬技术网站,设计爬取策略来获取文本正确的内容。 二、实验预习提示 安装Python环境 (Python 3.x):Pychram社区版Anaconda为Pytho…

[SpringBoot] YAML基础语法

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…