nestjs-starter-rest-api如何用Husky+Commitlint+SonarCloud打造规范化开发工作流
nestjs-starter-rest-api如何用HuskyCommitlintSonarCloud打造规范化开发工作流【免费下载链接】nestjs-starter-rest-apiNestJS Starter Kit. Monolithic Backend. REST API.项目地址: https://gitcode.com/gh_mirrors/ne/nestjs-starter-rest-apinestjs-starter-rest-api 是一款基于 NestJS 的单体 REST API 启动套件Starter Kit。项目除业务代码外还内置了Husky Commitlint SonarCloud三件套搭配 lint-staged 与 CI 工作流让「写代码 → 提交 → 推送 → 质量门禁」全程自动运转。本文带你快速看懂这套规范化开发工作流的每一道关卡并学会如何在自己的项目中复用。 三件套如何分工先建立一个整体认知三个工具分别把守在开发流程的三个位置层层递进。工具把关位置核心职责Husky本地 Git 钩子在提交瞬间自动触发检查拦截问题代码Commitlint提交信息校验强制遵循 Conventional Commits 规范SonarCloud云端 CI 质量门禁静态扫描、测试覆盖率、质量评分本地两道关卡负责「快」云端关卡负责「全」共同保证进入主干的代码既规范又健康。 快速上手克隆仓库即可自动装好钩子git clone https://gitcode.com/gh_mirrors/ne/nestjs-starter-rest-api cd nestjs-starter-rest-api npm install注意最后一步package.json中声明了prepare: husky install执行npm install时会自动完成 Husky 钩子安装无需任何手动配置。同时pre-commit: lint-staged把提交前的代码检查也一并接好了。 第一道关卡Husky 在提交瞬间拦截问题Husky 通过.husky/目录下的两个钩子脚本介入 Git 流程.husky/pre-commit提交前执行npm run pre-commit由 lint-staged 接管。它只检查本次暂存的.ts文件并执行eslint --fix自动修复——改动越多等待越短体验友好。.husky/commit-msg提交信息写完后执行commitlint --edit对提交信息做规范校验不符合直接拒绝提交。这意味着代码格式问题在你敲下回车时就被修好了垃圾提交根本进不了仓库历史。✍️ 第二道关卡Commitlint 让提交信息统一「说话」项目的commitlint.config.js只有一行配置继承commitlint/config-conventional预设。也就是说提交信息必须符合Conventional Commits规范type(scope): subject常用 type 速查表Type含义示例feat新功能feat(auth): add jwt refresh tokenfix修复缺陷fix(user): prevent duplicate registrationdocs仅文档变更docs(readme): update quick startrefactor重构不加功能、不修缺陷refactor(acl): extract rule checktest补充或修正测试test(article): cover pagination casechore其他杂项不改 src/testchore(deps): bump nestjs to v11对比感受一下✅ 合规feat(article): add pagination to list endpoint❌ 会被拦截update some code、FIX BUG提交历史的可读性直接决定协作效率规范的提交信息还能用于自动生成 Changelog。更完整的书写约定scope 用法、Body/Footer、Breaking Change 等见项目根目录的CONTRIBUTING.md。☁️ 第三道关卡SonarCloud 云端质量门禁代码提交到远端后SonarCloud 接管「全局体检」。关键配置都在sonar-project.properties里sonar.projectKey/sonar.organization在 SonarCloud 平台上标识项目sonar.sourcessrc只分析src目录测试文件**/*.spec.ts被排除sonar.javascript.lcov.reportPathscoverage/lcov.info读取 Jest 产出的覆盖率数据sonar.testExecutionReportPathstest-report.xml读取测试执行报告这里有个巧妙设计package.json的 jest 配置中testResultsProcessor指向jest-sonar-reporter跑测试的同时自动生成 SonarCloud 需要的test-report.xml一份数据两用。云端流程由.github/workflows/sonarqube-workflow.yml驱动步骤非常清晰npm ci安装依赖npm run test:cov跑单测并产出覆盖率调用 SonarCloud 官方 Action 执行扫描并回传质量门禁结果另有build-workflow.yml推送/PR 时执行构建与tests-workflow.yml执行测试三者组合成完整的 CI 防线。❓ 常见问题FAQ钩子不生效怎么办Husky 钩子在npm install时通过prepare脚本安装。如果.husky目录缺失或未生效重新执行一次npm install即可。紧急情况下如何跳过检查git commit --no-verify可以跳过 Husky 钩子。但请仅用于极端场景——绕过本地检查的代码仍会在 SonarCloud 质量门禁处暴露问题。质量门禁Quality Gate失败了看哪里到 SonarCloud 平台对应项目仪表盘查看新增的代码异味、安全热点与覆盖率缺口修复后重新触发扫描即可。✅ 总结这套工作流的精髓在于「把规范变成自动化」pre-commit 钩子lint-staged ESLint 只检查并自动修复本次改动的文件commit-msg 钩子Commitlint 强制 Conventional Commits 提交格式SonarCloud 云端门禁覆盖率、测试报告与静态扫描一网通查。相关文件.husky/、commitlint.config.js、sonar-project.properties、.github/workflows/sonarqube-workflow.yml都可以直接借鉴到自己的 NestJS 项目中十几分钟即可复制出一套同样规范的开发工作流。【免费下载链接】nestjs-starter-rest-apiNestJS Starter Kit. Monolithic Backend. REST API.项目地址: https://gitcode.com/gh_mirrors/ne/nestjs-starter-rest-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

5分钟搭好Electron-i18n开发环境:从GitHub Token到npm run build的完整指南

5分钟搭好Electron-i18n开发环境:从GitHub Token到npm run build的完整指南

5分钟搭好Electron-i18n开发环境:从GitHub Token到npm run build的完整指南 【免费下载链接】i18n 🌍 The home of Electrons translated documentation 项目地址: https://gitcode.com/gh_mirrors/i18n/i18n 想快速搭好 Electron-i18n 开发环境吗…

2026/8/26 19:58:43 阅读更多 →
LRU 缓存妙用:Hypermind 如何用一张 Map 记住 5 万个节点的 45 秒活跃状态

LRU 缓存妙用:Hypermind 如何用一张 Map 记住 5 万个节点的 45 秒活跃状态

LRU 缓存妙用:Hypermind 如何用一张 Map 记住 5 万个节点的 45 秒活跃状态 【免费下载链接】hypermind The High-Availability Solution to a Problem That Doesnt Exist. 项目地址: https://gitcode.com/gh_mirrors/hype/hypermind Hypermind 是一个完全去中…

2026/8/26 19:57:42 阅读更多 →
OpenObserve 大数据量查询加速:4个清单式技巧缩短文件列表过滤延迟

OpenObserve 大数据量查询加速:4个清单式技巧缩短文件列表过滤延迟

OpenObserve 大数据量查询加速:4个清单式技巧缩短文件列表过滤延迟 【免费下载链接】openobserve Open source observability platform for logs, metrics, traces, frontend monitoring, pipelines and LLM observability. A sophisticated, simple and highly per…

2026/8/26 19:57:42 阅读更多 →

最新新闻

Beyond Compare 实战:图片对比、文件夹同步与文件合并详解

Beyond Compare 实战:图片对比、文件夹同步与文件合并详解

两张图片要放到一起对比,很多人第一反应是打开画图工具手动拖动,或者用截图软件把两张图拼到同一张画布里逐个像素数过去。偶尔一次这样处理没有太大问题,但如果是设计走查、前端改版、测试回归、文档版本核对这类需要反复比对的工作&#xf…

2026/8/26 21:07:27 阅读更多 →
Jupyter Notebook 交互式编程实战:从安装到数据分析与可视化

Jupyter Notebook 交互式编程实战:从安装到数据分析与可视化

Jupyter Notebook 是数据科学、机器学习和日常 Python 开发里最常见的交互式编程工具。它把代码、运行结果、图表、说明文字放在同一个文档里,写一段代码就立刻看到一段输出,非常适合“边想边写、边写边验”的工作方式。这篇文章会从安装、启动、界面操作…

2026/8/26 21:07:27 阅读更多 →
Beyond Compare实战指南:文件对比、文件夹同步与合并技巧

Beyond Compare实战指南:文件对比、文件夹同步与合并技巧

在项目开发和日常办公中,比较两份文件、同步两个文件夹、核对代码改动,几乎是每天都会遇到的需求。市面上文件对比工具不少,但能同时兼顾文本对比、文件夹同步、二进制比较和版本合并的工具并不多。Beyond Compare 就是其中一款老牌且功能强大…

2026/8/26 21:07:27 阅读更多 →
用NER与关系抽取从文本中自动提取乐队成员信息

用NER与关系抽取从文本中自动提取乐队成员信息

很多人在聊到“Beyond 乐队输给草蜢乐队”这件事时,第一反应往往是“哦,是那首《失恋阵线联盟》的草蜢吗”,然后话题就结束了。但如果你再多问一句:“Beyond 的成员到底叫什么?”不少非乐迷会卡壳。黄家驹、黄贯中、黄…

2026/8/26 21:07:27 阅读更多 →
天然气水合物资源量评价的地质建模实战方法

天然气水合物资源量评价的地质建模实战方法

1. 这不是一道“算数题”,而是一次对地质建模思维的实战检验 “天然气水合物资源量评价”——光看标题,很多人第一反应是:不就是套个公式、填几个参数、跑个Python脚本的事?我带过七届校队、审过三百多份数维杯和国赛论文&#xf…

2026/8/26 21:07:27 阅读更多 →
低代码平台AI原生集成:从知识库到流程自动化的落地关键

低代码平台AI原生集成:从知识库到流程自动化的落地关键

低代码 AI 这个方向,讨论的人很多,真正做明白的很少。很多平台把 AI 能力做成一个外挂功能,看起来能用,一接真实业务就露馅。2026 年再看低代码平台,最关键的一条判断标准应该是:AI 是不是原生集成到数据、…

2026/8/26 21:06:26 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →