iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >怎么快速武装你的代码库
  • 587
分享到

怎么快速武装你的代码库

2024-04-02 19:04:59 587人浏览 薄情痞子
摘要

本篇内容介绍了“怎么快速武装你的代码库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 规范 commi

本篇内容介绍了“怎么快速武装你的代码库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 规范 commit 信息

首先,看下 angular 的代码库的 commit 记录,如图:

怎么快速武装你的代码库

我们可以利用 commitizen 和 husky 来规范代码库的 commit。

安装以下依赖:

npm install @commitlint/cli @commitlint/config-conventional husky  -D

如果你还没有安装过 commitizen,那么先全局安装:

npm install commitizen -g

在 package.JSON 中增加 husky 字段。

{     "husky": {         "hooks": {             "commit-msg": "commitlint -E HUSKY_git_PARAMS"         }     }, }

husky 是 git hook 工具,使用 husky,我们可以方便的在 package.json 中配置 git hook 脚本,例如: pre-commit、 pre-push、 commit-msg 等的。

(1) 创建 commitlint.config.js 文件

module.exports = {     extends: ["@commitlint/config-conventional"], };

此刻开始,请使用 git cz 来替代 git commit 提交信息,我们来看看,假设我们随便写一个 git commit -m 'fixbug' 会提示什么?

怎么快速武装你的代码库

使用 git cz 来进行填写 commit 的内容。

怎么快速武装你的代码库

git cz 的 type 说明:

怎么快速武装你的代码库

虽然,我们现在已经可以规范提交信息了,但是我们可能不喜欢默认的交互,例如,一个精简的描述就可以了,不希望再提示我去写详细的描述,那么就可以使用 cz-customizable 来进行定制。

(2) 自定义提交说明

安装 cz-customizable:

npm install cz-customizable -D

cz-customizable 是可自定义的 Commitizen 插件,可帮助实现一致的 commit message。

cz-customizable 适合大型团队去自定义 scope,和 commit type。

新建 .cz-config.js:

项目根目录下创建 .cz-config.js 文件:

官方提供了一份配置信息,可以去这个地址查看:

https://GitHub.com/leoforfree/cz-customizable/blob/master/cz-config-EXAMPLE.js

//.cz-config.js module.exports = {   types: [     { value: 'feat', name: 'feat:     A new feature' },     { value: 'fix', name: 'fix:      A bug fix' },     { value: 'docs', name: 'docs:     Documentation only changes' },     {       value: 'style',       name:         'style:    Changes that do not affect the meaning of the code\n            (white-space, fORMatting, missing semi-colons, etc)',     },     {       value: 'refactor',       name: 'refactor: A code change that neither fixes a bug nor adds a feature',     },     {       value: 'perf',       name: 'perf:     A code change that improves performance',     },     { value: 'test', name: 'test:     Adding missing tests' },     {       value: 'chore',       name:         'chore:    Changes to the build process or auxiliary tools\n            and libraries such as documentation generation',     },     { value: 'revert', name: 'revert:   Revert to a commit' },     { value: 'WIP', name: 'WIP:      Work in progress' },   ],    scopes: [{ name: 'accounts' }, { name: 'admin' }, { name: 'exampleScope' }, { name: 'changeMe' }],    allowTicketNumber: false,   isTicketNumberRequired: false,   ticketNumberPrefix: 'TICKET-',   ticketNumberRegExp: '\\d{1,5}',    // it needs to match the value for field type. Eg.: 'fix'      // override the messages, defaults are as follows   messages: {     type: "Select the type of change that you're committing:",     scope: '\nDenote the SCOPE of this change (optional):',     // used if allowCustomScopes is true     customScope: 'Denote the SCOPE of this change:',     subject: 'Write a SHORT, IMPERATIVE tense description of the change:\n',     body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',     breaking: 'List any BREAKING CHANGES (optional):\n',     footer: 'List any ISSUES CLOSED by this change (optional). E.g.: #31, #34:\n',     confirmCommit: 'Are you sure you want to proceed with the commit above?',   },    allowCustomScopes: true,   allowBreakinGChanges: ['feat', 'fix'],   // skip any questions you want   skipQuestions: ['body'],    // limit subject length   subjectLimit: 100, };
  • types:描述修改的性质是什么,是bugfix还是feat,在这里进行定义。

  • scopes:定义之后,我们就可以通过上下键去选择 scope

  • scopeOverrides:针对每一个type去定义scope

  • allowBreakingChanges:如上设置为 ['feat', 'fix'],只有我们type选择了 feat 或者是 fix,才会询问我们 breaking message.

  • allowCustomScopes:设置为 true,在 scope 选择的时候,会有 empty 和 custom 可以选择,顾名思义,选择 empty 表示 scope 缺省,如果选择 custom,则可以自己输入信息

  • skipQuestions:指定跳过哪些步骤,例如跳过我们刚刚说的详细描述,设置其为 scope: ['body'],假设我们的项目也不会涉及到关联 issue,我们可以设置其为 scope: ['body', 'footer']

  • subjectLimit:描述的长度限制

这里我就不一一演示每个字段修改之后的情况了,根据字段的说明,建议如果想自定义提交规则,在本地进行修改验证,公司内部的代码库不需要管理 issue,另外,我不喜欢写长描述,所以我把 body 和 footer 给 skip 掉了。

cz-customizable 会首先在项目根目录下寻找: .cz-config.js 或 .config/cz-config.js,如果找不到,会去主目录寻找。我们也可以在 package.json 中手动去指定配置文件的路径。

"config": {     "commitizen": {          "path": "node_modules/cz-customizable"     },     "cz-customizable": {         "config": "config/path/to/my/config.js"     } }

现在,我们已经规范了 commit 信息,但是没有对提交的代码进行规范,在一个代码库中,经常出现2个空格/4个空格混用,有些地方写 ;,有些不写 ;,风格不统一。例如,我们希望提交到git库的代码,都能够通过 eslint 检查或者是通过测试。我们可以借助于 pre-commit 这个钩子来做这些事情。

2. 代码提交前检查

安装依赖:

npm install lint-staged -D

使用 pre-commit 的 hook

"husky": {     "hooks": {         "pre-commit": "lint-staged"     } }, "lint-staged": {     "** 注释中被提到     'no-unused-vars': 1, //禁止出现未使用过的变量     'constructor-super': 2, //要求在构造函数中有 super() 的调用     'no-class-assign': 2, //禁止给类赋值     'no-dupe-class-members': 2, //禁止类成员中出现重复的名称     'no-new-symbol': 2, //禁止 Symbol 和 new 操作符一起使用     'no-this-before-super': 2, //禁止在构造函数中,在调用 super() 之前使用 this 或 super     'require-yield': 2, //要求 generator 函数内有 yield     'no-mixed-spaces-and-tabs': 1, //要求不适用space,tab混用     'React/forbid-prop-types': [1, { forbid: ['any'] }], //禁止某些propTypes     'react/prop-types': 1, //没用对props类型进行校验     'react/jsx-closing-bracket-location': 1, //在JSX中验证右括号位置     'react/jsx-curly-spacing': [1, { when: 'never', children: true }], //在JSX属性和表达式中加强或禁止大括号内的空格。     'react/jsx-key': 2, //在数组或迭代器中验证JSX具有key属性     'react/jsx-max-props-per-line': [1, { maximum: 1 }], // 限制JSX中单行上的props的最大数量     'react/jsx-no-duplicate-props': 2, //防止在JSX中重复的props     'react/jsx-no-undef': 1, //在JSX中禁止未声明的变量     'react/no-string-refs': 1, //Using string literals in ref attributes is deprecated     'react/jsx-uses-react': 1, //防止反应被错误地标记为未使用     'react/jsx-uses-vars': 1, //防止在JSX中使用的变量被错误地标记为未使用     'react/no-danger': 1, //防止使用危险的JSX属性     'react/no-did-update-set-state': 2, //防止在componentDidUpdate中使用setState     'react/no-did-mount-set-state': 0, //防止在componentDidUpdate中使用setState     'react/no-direct-mutation-state': 2, //防止this.state赋值     'react/no-unknown-property': 2, //防止使用未知的DOM属性     'react/prefer-es6-class': 1, //为React组件强制执行ES5或ES6类     'react/react-in-jsx-scope': 0, //使用JSX时,必须要引入React     'react/sort-comp': 0, //强制组件方法顺序     'react/sort-prop-types': 0, //强制组件属性顺序     'react/jsx-sort-props': 1,     'react/no-deprecated': 1, //不使用弃用的方法     'react/jsx-equals-spacing': 1, //在JSX属性中强制或禁止等号周围的空格     'react/wrap-multilines': 0,     'comma-dangle': 1, //对象字面量项尾不能有逗号     'react/no-multi-comp': 0, //防止每个文件有多个组件定义     'flowtype/generic-spacing': 0, //泛型对象的尖括号中类型前后的空格规范     'flowtype/space-after-type-colon': 0, //类型注解分号后的空格规范     // react-hooks     'react-hooks/rules-of-hooks': 'error',     'react-hooks/exhaustive-deps': 'warn'   } };

“怎么快速武装你的代码库”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么快速武装你的代码库

本文链接: https://www.lsjlt.com/news/84743.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么快速武装你的代码库
    本篇内容介绍了“怎么快速武装你的代码库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 规范 commi...
    99+
    2022-10-19
  • 教你怎么用SpringBoot+Mybati-Plus快速搭建代码
    目录前言一、搭建一个springboot项目二、配置依赖三、配置application.yml文件四、启动类五、运行main方法六、项目结构前言 先放一个官网吧,其实本案例就是根据官...
    99+
    2022-11-12
  • 如何快速让你的代码支持Cocoapods!
    Show me the code !此次分享的是如何让你的代码框架上传到cocoapods,方便使用!对了,在第一句之前应该介绍cocoapods的背景,但作为iOS developer,不用介绍都知道其重要性,OK,Talk is che...
    99+
    2023-06-04
  • 如何快速把你的 Python 代码变为 API
    提到 API 开发,你可能会想到 Django REST Framework,Flask,FastAPI,没错,它们完全可以用来编写 API,不过,今天分享的这个框架可以让你更快把现有的函数转化为 API,它就是 Sanic。Sanic 简...
    99+
    2023-05-14
    Python API 语法
  • sublime怎么快速的创建html头部代码
    本篇内容介绍了“sublime怎么快速的创建html头部代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2022-10-19
  • c语言快速排序代码怎么写
    下面是一个使用C语言实现快速排序的示例代码:```c#include // 交换两个元素的值void swap(int* a, in...
    99+
    2023-10-11
    c语言
  • 一文搞懂四种Wrapper方法快速重构你的代码
    Wrapper方法是一种快速重构代码的方法,它可以在不改变原有代码逻辑的情况下,对其进行封装和扩展。以下是四种常见的Wrapper方...
    99+
    2023-09-21
    Wrapper
  • 怎么加快Python第三方库安装速度
    这篇文章主要讲解了“怎么加快Python第三方库安装速度”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么加快Python第三方库安装速度”吧!pip是Python包管理工具,该工具提供了对...
    99+
    2023-06-19
  • 怎么加快Node.js的安装速度
    这篇文章主要介绍了怎么加快Node.js的安装速度的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么加快Node.js的安装速度文章都会有所收获,下面我们一起来看看吧。更改npm源npm是Node.js的软件包...
    99+
    2023-07-05
  • Java实现快速生成词云图的代码怎么写
    这篇文章主要讲解了“Java实现快速生成词云图的代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java实现快速生成词云图的代码怎么写”吧!下载并安装jar到本地maven库登录该网...
    99+
    2023-07-05
  • 「Python 学习笔记」:如何在 Django shell 中快速测试你的代码?
    Python 学习笔记:如何在 Django shell 中快速测试你的代码? 在 Django 开发过程中,我们经常需要测试我们的代码,以确保它们能够正常运行。通常我们会使用 Django 的测试框架来编写测试用例。但是,在某些情况下,使...
    99+
    2023-11-02
    学习笔记 django shell
  • 怎样才能在Python教程中快速load你的git仓库?
    如今,越来越多的开发者喜欢使用Git来管理自己的代码。Git是一种非常流行的版本控制系统,它可以让你轻松地跟踪代码的变化、协作开发以及处理代码冲突等问题。而Python作为一种高效、易学、易用的编程语言,在开发中也越来越受到开发者的青睐。在...
    99+
    2023-06-26
    教程 load git
  • 动态ip代理的速度怎么加快
    本篇内容主要讲解“动态ip代理的速度怎么加快”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“动态ip代理的速度怎么加快”吧!代理ip的动态转发速度慢怎么办?许多使用动态转发的IP代理资源会发现,一...
    99+
    2023-06-20
  • 怎么用一行Python代码快速实现程序进度条
    这篇文章主要讲解了“怎么用一行Python代码快速实现程序进度条”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用一行Python代码快速实现程序进度条”吧!1、先上代码下载进度条的第三方...
    99+
    2023-07-05
  • 怎么快速的了解某种数据库
    这篇文章给大家分享的是有关怎么快速的了解某种数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这段时间由于工作需要,接触了多种数据库。其中关系型数据库包括:Oracle、DB2...
    99+
    2022-10-18
  • 可加速你的编码速度Python脚本是怎么样的
    这篇文章将为大家详细讲解有关可加速你的编码速度Python脚本是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们向您介绍一些提示和技巧,以帮助您更快地编写代码Python的可读性和...
    99+
    2023-06-16
  • 怎么利用chatgpt保护你的js代码
    这篇文章主要介绍了怎么利用chatgpt保护你的js代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用chatgpt保护你的js代码文章都会有所收获,下面我们一起来看看吧。正文ChatGPT是一个非常强...
    99+
    2023-07-06
  • mongodb怎么快速搭建属于自己的数据库
    小编给大家分享一下mongodb怎么快速搭建属于自己的数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mongoddb安装在...
    99+
    2022-10-18
  • 怎么提升python代码的运行速度
    这篇文章给大家介绍怎么提升python代码的运行速度,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写...
    99+
    2023-06-14
  • 时序数据库的快速检索是怎么进行的
    本篇文章给大家分享的是有关时序数据库的快速检索是怎么进行的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Elasticsearch 是通过 L...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作