前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >测试开发必学技能之一:代码提交规范与自动生成工具!

测试开发必学技能之一:代码提交规范与自动生成工具!

作者头像
测试开发技术
发布于 2024-12-23 07:30:48
发布于 2024-12-23 07:30:48
16400
代码可运行
举报
文章被收录于专栏:测试开发技术测试开发技术
运行总次数:0
代码可运行

什么是约定式提交

约定式提交(Conventional Commits)是一种用于代码版本控制的规范,旨在通过明确和标准化提交信息来提高代码协作质量和效率。其基本原则是通过规定提交信息的结构和语义来提高代码版本控制的可读性、可维护性和自动化程度。

约定式提交规范通常要求提交信息包括一个描述性的"类型"、一个可选的"作用域"、一个用于简洁说明的"主题",以及可选的"正文"和"尾部"等组成部分。这些组成部分的格式和语义都是根据规范要求进行约定的,比如使用"feat"来表示新功能、"fix"表示修复错误、"docs"表示文档变更等。

通过遵循约定式提交规范,开发人员可以更容易地理解和管理代码的变更历史,同时也为自动化工具提供了更多可靠的信息,例如自动生成版本号、发布日志和代码库更新等操作。

提交说明的结构如下所示:


原文:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<type>[optional scope]: <description>

[optional body]
[optional footer(s)]

译文:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<类型>[可选 范围]: <描述>

[可选 正文]

[可选 脚注]

提交说明包含了下面的结构化元素,以向类库使用者表明其意图:

  1. fix: 类型fix 的提交表示在代码库中修复了一个 bug(这和语义化版本中的 `PATCH`[1] 相对应)。
  2. feat: 类型feat 的提交表示在代码库中新增了一个功能(这和语义化版本中的 `MINOR`[2] 相对应)。
  3. BREAKING CHANGE: 在脚注中包含 BREAKING CHANGE: 或 <类型>(范围) 后面有一个 ! 的提交,表示引入了破坏性 API 变更(这和语义化版本中的 `MAJOR`[3] 相对应)。破坏性变更可以是任意 类型 提交的一部分。
  4. fix:feat: 之外,也可以使用其它提交 类型 ,例如 \@commitlint/config-conventional[4](基于 Angular 约定[5])中推荐的 build:chore:ci:docs:style:refactor:perf:test:,等等。
  5. 脚注中除了 BREAKING CHANGE: <description> ,其它条目应该采用类似 git trailer format[6] 这样的惯例。

其它提交类型在约定式提交规范中并没有强制限制,并且在语义化版本中没有隐式影响(除非它们包含 BREAKING CHANGE)。可以为提交类型添加一个围在圆括号内的范围,以为其提供额外的上下文信息。例如 feat(parser): adds ability to parse arrays.

示例

包含了描述并且脚注中有破坏性变更的提交说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
feat: allow provided config object to extend other configs

BREAKING CHANGE: `extends` key in config file is now used for extending other config files

包含了 ! 字符以提醒注意破坏性变更的提交说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
feat!: send an email to the customer when a product is shipped

包含了范围和破坏性变更 ! 的提交说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
feat(api)!: send an email to the customer when a product is shipped

包含了 ! 和 BREAKING CHANGE 脚注的提交说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chore!: drop support for Node 6

BREAKING CHANGE: use JavaScript features not available in Node 6.

不包含正文的提交说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docs: correct spelling of CHANGELOG

包含范围的提交说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
feat(lang): add polish language

包含多行正文和多行脚注的提交说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fix: prevent racing of requests

Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.

Remove timeouts which were used to mitigate the racing issue but are
obsolete now.

Reviewed-by: Z
Refs: #123

type 类型概览

描述

feat

新增一个功能

fix

修复一个Bug

docs

文档变更

style

代码格式(不影响功能,例如空格、分号等格式修正)

refactor

代码重构

perf

改善性能

test

测试

build

变更项目构建或外部依赖(例如scopes: webpack、gulp、npm等)

ci

更改持续集成软件的配置文件和package中的scripts命令,例如scopes: Travis, Circle等

chore

变更构建流程或辅助工具

revert

代码回退

为什么需要约定式提交?

Git提交信息需要遵循Angular约定是为了使提交信息格式清晰、易于阅读和理解,从而提高代码协作的效率。Angular约定包括以下三个部分:

  1. 标题(header):用一行简短的描述来总结更改内容,并使用特殊关键字指定更改类型和影响范围。
  2. 正文(body):提供更详细的更改描述,包括更改原因、影响和解决方案等信息。
  3. 页脚(footer):提供一些附加信息,如相关链接、关联的BUG编号等。

通过遵循Angular约定,可以使提交信息更加规范化和易于管理,从而方便其他团队成员阅读和理解更改的含义,从而提高团队协作效率。此外,遵循Angular约定的提交信息还可以更好地与许多自动化工具进行集成,如自动化版本控制、代码审查工具等。

如何遵守约定式提交?

第一步:自动生成提交说明的工具

Commitizen是一个基于命令行的交互式工具,它可以帮助开发者规范化提交Git提交信息,符合Angular Commit Message Conventions的规范,从而更好地管理代码变更历史。

Commitizen提供了一个友好的命令行交互界面,让开发者根据规范选择提交信息的类型、影响范围等内容,自动生成符合规范的Git提交信息。

Commitizen可以与Git结合使用,使得开发者可以使用commitizen命令代替git commit命令提交代码变更,并且生成的提交信息格式更加规范化和易于管理。

这里我建议您全局安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pnpm install -g commitizen 
pnpm install -g cz-conventional-changelog

随后在电脑用户根目录穿件.czrc文件,不然使用的时候会进入命令行(笔者的系统为Ubuntu20.04)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc

随后使用commitizen生成符合AngularJS规范的提交说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
commitizen init cz-conventional-changelog --save --save-exact

随后你就可以使用以下命令获得中规中距的commit信息了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git cz 

第二步:客制化自动提交信息

cz-customizable是Commitizen的一个插件,可以帮助开发者自定义符合Angular Commit Message Conventions的提交信息格式和内容。

拜托,人又不是机器!别那么死板。和代码打交道最重要的事情就是懂得如何苦中作乐,在遇到挑战和困难时,优秀的人能够采取积极的心态,并且能够寻找解决问题的方式和方法。

cz-customizable提供了一些配置选项,让开发者可以根据项目的需要自定义提交信息的格式和内容。

cz-customizable的配置选项包括:

  1. types: 定义提交信息的类型,如feat(新功能)、fix(修复Bug)等。
  2. scopes: 定义提交信息的影响范围,如模块、组件等。
  3. allowCustomScopes: 是否允许自定义影响范围。
  4. scopeOverrides: 定义不同类型的提交信息对影响范围的要求。
  5. messages: 定义提交信息的模板,包括标题、正文、页脚等内容。
  6. allowBreakingChanges: 是否允许提交破坏性变更。
1. 安装 cz-customizable
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install cz-customizable --save-dev
2. 添加以下配置到package.json
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"config": {
    "commitizen": {
    "path": "node_modules/cz-customizable"
    }
}
3.项目根目录下创建.cz-config.js文件来自定义提示
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
├── CHANGELOG.md
├── commitlint.config.js
├── index.html
├── node_modules
├── package.json
├── pnpm-lock.yaml
├── public
├── README.md
├── src
├── tsconfig.json
├── tsconfig.node.json
├── vite.config.ts
└── .cz-config.js  // 创建
以下是我的一些参考配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  // 可选类型
  types: [
    {
      value: ':sparkles: feat',
      name: '✨ feat:      新功能'
    },
    {
      value: ':bug: fix',
      name: '🐛 fix:      修复'
    },
    {
      value: ':memo: docs',
      name: '📝 docs:      文档变更'
    },
    {
      value: ':lipstick: style',

      name: '💄 style:     代码格式(不影响代码运行的变动)'
    },
    {
      value: ':recycle: refactor',

      name: '♻️  refactor:    重构 (既不增加feature, 也不是修复bug)'
    },
    {
      value: ':zap: perf',
      name: '⚡️ perf:      性能优化'
    },
    {
      value: ':white_check_mark: test',
      name: '✅ test:      增加测试'
    },
    {
      value: ':wrench: chore',
      name: '🔧 chore:     构建过程或辅助工具的变动'
    },
    {
      value: ':rewind: revert',
      name: '⏪ revert:     回退'
    },
    {
      value: ':rocket: build',
      name: '🚀 build:     打包'
    }
  ],

  // 步骤

  messages: {
    type: '请选择提交的类型:',
    customScope: '情输入修改的范围(可选)',
    subject: '请简要描述提交(必填)',
    body: '请输入详细描述(可选)',
    footer: '请输入要关闭的issus(可选)',
    confirmCommit: '确认要使用以上信息提交?(y/n)'
  },
  // 默认长度72
  subjectLimit: 72
};

此时再次运行 git cz时就可以看到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
? 请选择提交的类型: (Use arrow keys)
❯ ✨ feat:      新功能 
  🐛 fix:      修复 
  📝 docs:      文档变更 
  💄 style:     代码格式(不影响代码运行的变动) 
  ♻️  refactor:    重构 (既不增加feature, 也不是修复bug) 
  ⚡️ perf:      性能优化 
  ✅ test:      增加测试 

第三部:增加对自动生成 commit 信息的校验

有时候你的队友可能是傻逼?请你注意防范

很遗憾的是,上面的操作并没有任何校验功能,你的队友仍然可以提交 trash 在 commit 信息中。如果不敲你是队伍中的审核人员,那么我想你需要设置一些规范

这里我们分情况讨论:

若您没有使用cz-customizable适配器做了破坏Angular风格的提交说明配置,则可以使用以下配置方案

1.安装 @commitlint/config-conventional

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm i @commitlint/config-conventional @commitlint/cli -D

2.在根目录创建commitlint.config.js文件,配置commitlint

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  extends: ['@commitlint/config-conventional']
}

若您使用cz-customizable了则需要使用以下配置方案

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install commitlint-config-cz --save-dev

然后加入commitlint校验规则配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  extends: [
    'cz'
  ]
};

最后的一些补充

husky 最后的帮手

是一个可以在 Git hooks 中使用的 npm 包,它可以帮助你在特定的 Git 事件发生时执行命令,例如提交代码之前进行代码格式化、测试等操作.

"husky"是一个为了方便使用Git hooks的工具,它能够帮助你在项目中自动化地执行一些Git相关的操作。使用husky,你可以在Git的一些关键操作(例如提交、推送、合并等)前或后,执行一些脚本或命令,比如代码格式化、自动化测试、打包发布等。

他可以帮助我们额外拦截一些如git commit等指令。需要注意的是,husky只在Git仓库中才能正常工作,所以在使用之前请确保你的项目已经初始化为Git仓库

1.安装 husky
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
在项目中安装 husky,可以使用 npm或者 yarn 进行安装:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pnpm install husky --save-dev

或者

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn add husky --dev
2.在package.json中定义需要执行的Git hooks和对应的脚本

例如,在提交代码前执行代码格式化和自动化测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jsonCopy code{
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint && npm run test"
    }
  }
}

这样,每次在执行git commit命令时,都会自动执行npm中定义的linttest命令。

除了pre-commit钩子,husky还支持其他一些Git hooks,比如pre-pushpost-mergepost-checkout等,可以根据实际需求进行配置。

需要注意的是,husky只在Git仓库中才能正常工作,所以在使用之前请确保你的项目已经初始化为Git仓库。

如果觉得有用,就请关注、点赞、在看、分享到朋友圈吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Serverless 架构揭秘与静态网站部署实战
抗击疫情,腾讯云在行动。Serverless(无服务架构)被誉为下一代云计算技术,自概念推出以来,因为能带来研发交付速度提升与成本的降低在业内异常火爆。本次课程将围绕Serverless Framework为大家详细讲解Serverless架构演进,并通过简单的示例帮助开发者快速使用并部署Serverless Hexo 静态博客站点。
可可爱爱没有脑袋
2020/02/12
1.2K0
Serverless 架构揭秘与静态网站部署实战
诚心求问:做一个 Serverless SSR 需要几步?
很久之前,看到过一个段子:“把大象塞进冰箱需要几步?” 回答是:“三步,第一步打开冰箱,第二步把大象塞进去,第三步关上冰箱”。这是一个无厘头式的幽默,用极简平淡的回答,来解释看似夸张的问题。 做一个 Serverless SSR 虽然不是把大象装进冰箱这样的问题,但是同样让很多开发者望而生畏 —— 因为网上关于 SSR 和 Serverless 的教程太多,动辄很大篇幅,很多步骤。让初学者无从下手,就算照着学一遍,也可能会遇到这样那样的问题,很费功夫。 但是现在,开发者可以有一种 “冰箱装大象” 的方式来
腾讯云serverless团队
2020/05/13
2.1K0
前端为什么要关注 Serverless?
Serverless 的概念或应用场景我们以前讲过很多,这里不再冗述。概括性地讲 —— Serverless 的内涵就是对全部底层资源和运维工作的封装,让开发者更专注于业务逻辑。
Aceyclee
2020/03/20
9070
前端为什么要关注 Serverless?
通过 Serverless Regsitry 快速开发与部署一个 WordCount 实例
在学习 MapReduce 的过程中,不少人接触的第一个项目就是单词计数。单词计数通过两个函数 Map 和 Reduce,可以快速地统计出文本文件中每个单词出现的个数,它虽然简单,但也是最能体现 MapReduce 思想的程序之一。而 Serverless 的出现,为 MapReduce 进行大数据处理又提供了一个新的部署方案,Serverless 与 MapReduce 究竟如何结合呢?
腾讯云serverless团队
2020/07/21
5720
​Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制
Admission 是在用户执行 kubectl 通过认证之后,在将资源持久化到 ETCD 之前的步骤,Kubernetes 为了将这部分逻辑解耦,通过调用 Webhook 的方式来实现用户自定义业务逻辑的补充。而以上过程,都是在用户执行 kuberctl 并等待 API Server 同步返回结果的生命周期内。
腾讯云 CODING
2020/07/01
1.2K0
​Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制
腾讯云 Severless 项目开发和灰度发布实践之路
Serverless作为一种新的开发模式,吸引我们众多开发者想一探究竟,然而现在Serverless开发缺乏相关的文档指引,而不能很好的完成开发、调试和部署,接下来我们就尝试一起探讨下如何开发,部署一个Serverless实践之路。
邓愉悦
2020/10/22
9770
这里有1秒给你微信头像带上口罩的软件!
春风瑟瑟,华夏大地一片复苏。 尽管还在疫情之中,但春天已经逐渐出现生机,复工已经一个多月,复学也近在眼前,每天坐地铁上班的小E,已经找不到座位了,甚至去商场吃饭,也需要等位一个多小时…… 虽然中国哪里都是人山人海,但国外总感染人数已经超过50万了,这可让游学在外的留学生吓坏了,他们四处劝告放飞自我的歪果仁带口罩,在朋友圈宣传、出门派口罩、甚至微信头像也不放过…… 小E的留学生朋友,纷纷求会P图的小姐姐帮忙给微信头像P上口罩,但小姐姐拼尽全力,极限也只是10分钟P一张头像,根本应付不了姐妹们迫切的需求,
腾讯NEXT学位
2020/04/07
8470
Serverless 架构揭秘与静态网站部署实战(附实战源码)
Serverless被誉为下一代云计算技术,因为其能带来研发交付速度提升与成本的降低在业内异常火爆。本文主要为大家分享 Serverless Framework 的架构演进、技术解析以及应用发展,并通过 Serverless+Hexo 实战案例,分享如何快速基于 Serverless Framework 进行业务开发部署。 文章整理自Serverless Framework 社区专家陈涛在腾讯云大学的视频分享,完整分享视频如下,感兴趣的读者也可以点击文末【阅读原文】下载讲师PDF。 文章大纲: 1、Ser
腾讯云serverless团队
2020/03/02
1K0
Serverless 架构揭秘与静态网站部署实战(附实战源码)
基于 Serverless Component 全栈解决方案(下)
上篇文章《基于 Serverless Component 的全栈解决方案(上)》 介绍了如何借助 Serverless Component 快速搭建 Restful API 后端服务 和 Vue.js + Parcel 的前端开发架构,但是最终部署后,腾讯云 COS 的访问 URL 并非自定义的,而且实际应用中,我们更偏向于使用自定义域名,同时静态文件一般都会通过 CDN 加速。那么如何为之前部署的静态网站配置 CDN 加速域名呢? 注意:在开始阅读本篇文章之前,你需要一个国内备案通过的域名,如果没有,那
腾讯云serverless团队
2020/03/20
1.2K0
基于 Serverless 的 VuePress 极简静态网站
之前用过 Docsify + Serverless Framework 快速创建个人博客系统,虽然 docsify 也是基于 Vue,然而它是完全的运行时驱动,因此对 SEO 不够友好。所以这次尝试使用 VuePress 来搭建一个静态网站,依然部署在 Serverless 架构上。
腾讯云serverless团队
2020/03/23
1.8K0
2022年你还不会serverless?看看这篇保姆级教程(下)
用户发送的 HTTP 请求经过 API 网关后,网关侧将原生请求直接透传的同时,在请求头部添加了网关触发函数时需要的函数名、函数地域等内容,并一起传递到函数环境,触发后端函数执。
前端进阶之旅
2022/01/07
1.3K2
2022年你还不会serverless?看看这篇保姆级教程(下)
Labelhub 基于腾讯云 Serverless 技术为人工智能企业提供数据与模型解决方案
Labelhub 是一家致力于为人工智能企业提供完善的数据与模型解决方案公司,可以帮助 AI 企业更好的管理数据,从而提高其核心 AI 产品迭代速度,Labelhub 拥有优秀的敏捷团队,开发领域涉及机器学习、模型训练以及软件应用。目前已经与多家大中型企业进行深度合作,在行业相关比赛中也多次获奖。 Labelhub 团队在业务极速扩张的时期,选择使用腾讯云 Serverless 技术来打造一个轻量的内部运维及数据可视化系统。通过使用 Tencent Serverless Framework,基于云上
腾讯云serverless团队
2020/10/14
9940
容器的下一代基础设施:腾讯云Serverless产品SCF实战
2020年上半年,我负责的业务初步完成IAAS层、PAAS层上云,借助云能力,基本解决了整体的资源供应效率、发布效率的问题。但是针对简单的接口应用、爬虫、刷任务脚本等,复用现有基础设施,交付速度一直提升不上来,后续的运维、运营工作负担也比较重。主要体现在以下几个痛点:
赵振华
2020/12/04
1.3K0
容器的下一代基础设施:腾讯云Serverless产品SCF实战
Serverless DB 设计解读和实战
哈喽小伙伴们,我们都知道数据库在项目开发中往往是不可或缺的一环,而在云计算热度不断提升的背景之下,我们对于使用数据库的成本以及灵活性有了更高的要求。 Serverless 团队近期新发布了两款组件来填补这最关键的一块拼图 —— Serverless DB! 下面我们一起来看看吧! Serverless PostgreSQL 组件 PostgreSQL for Serverless 是一款基于 PostgreSQL 数据库实现的按需分配资源的数据库产品,其数据库将根据用户的实际请求数来自动分配资源。通过 P
腾讯云serverless团队
2020/05/15
1.5K0
Serverless 多函数开发示例
01. 什么是 Serverless? Serverless 的定义和理解在不同的角度和场景会有不同的解读,AWS 将 Serverless(在 AWS 云上)定义为 “是一种用于描述服务、实践和策略的方式,使您能够构建更敏捷的应用程序,从而能够更快地创新和响应变化” 的一种服务。而红帽认为 Serverless 是 “可使开发人员专注构建和运行应用,而无需管理服务器” 的一种开发模型,并进一步将 Serverless 的产品分为两类:BaaS(后端即服务,让开发人员访问各种各样的第三方服务和应用))与
腾讯云serverless团队
2021/07/16
9540
创建一个 Serverless 应用,真的没有这么难!
上周五我们给开发者带来了一个好玩还有奖的游戏 —— 《Serverless 有一百种玩法,比好玩更好玩》。 礼品已经到位!为了让大家能更好地玩转 Serverless,拿走我们的大奖,我们特意为新手/初学者准备了一则极其简单的教程指引。 如何复用现成 demo:两步完成应用初始化,并实现云端的快速部署! 快速开发一个 Serverless demo,简单的三步实现自己的第一个程序。 毕竟,我们是 Serverless  —— 让开发者能轻而易举地写出一个自己的应用,更专注于拿奖(自己的代码)。
腾讯云serverless团队
2020/10/21
9210
使用 Serverless Framework Express 组件快速创建文本翻译工具
Tencent Serverless Hours 第二期线上分享会上,通过 Serverless Framework 的 Express Component 实现了一款文本翻译工具。基于腾讯云 TMT 机器翻译工具,支持多种语言的互相翻译。点击 https://service-q8qqunpf-1251971143.bj.apigw.tencentcs.com/release/ 查看 Demo 部署效果。 如何使用 Serverless Framework 的 Express Component 快速
腾讯云serverless团队
2020/06/05
1.3K0
基于 Serverless Component 全栈解决方案(上)
什么是 Serverless Component Serverless Component 是 Serverless Framework 的,支持多个云资源编排和组织的场景化解决方案。 Serverless Component 的目标是磨平不同云服务平台之间差异,你可以将它看作是可以更轻松地构建应用程序的依赖模块。目前 Serverless Component 已经形成一个由社区贡献驱动的生态系统,你可以浏览和使用社区的所有组件,快速开发一款自己想要的应用。 Serverless Component 工作
腾讯云serverless团队
2020/03/20
8250
腾讯云 Severless-Express 项目开发和灰度发布最佳实践
Serverless 应用基本概念 一个 Serverless 应用是由单个或者多个组件实例构成的。每个组件中都会有一个 serverless.yml 文件,该文件定义了组件的一些参数,这些参数在部署时用于生成实例的信息。例如 region 参数,定义了资源的所在区。 组织是在 Serverless 应用上层的概念,主要是为了管理。例如,一个公司会有不同部门进行 Serverless 应用开发,设置不同组织名称,方便做后期的权限管理。 示例:开发一个 express 应用,最基本的是引入 express
腾讯云serverless团队
2020/08/13
1.1K0
如何用 Serverless 优雅地实现图片艺术化应用
本文将分享如何从零开始搭建一个基于腾讯云 Serverless 的图片艺术化应用! 项目已开源,完整代码见文末 线上 demo 预览: https://art.x96.xyz/ 在完整阅读文章后,读者应该能够实现并部署一个相同的应用,这也是本篇文章的目标。 项目看点概览: 前端 react(Next.js)、后端 node(koa2) 全面使用 ts 进行开发,极致开发体验(后端运行时 ts 的方案,虽然性能差点,不过胜在无需编译,适合写 demo) 突破云函数代码 500mb 限制(提供解决方案)
腾讯云serverless团队
2020/09/18
2.4K0
推荐阅读
相关推荐
Serverless 架构揭秘与静态网站部署实战
更多 >
LV.0
江苏微盛网络科技有限公司品宣部
目录
  • 什么是约定式提交
    • 示例
    • type 类型概览
  • 为什么需要约定式提交?
  • 如何遵守约定式提交?
    • 第一步:自动生成提交说明的工具
    • 第二步:客制化自动提交信息
      • 1. 安装 cz-customizable
      • 2. 添加以下配置到package.json中
      • 3.项目根目录下创建.cz-config.js文件来自定义提示
      • 以下是我的一些参考配置
    • 第三部:增加对自动生成 commit 信息的校验
  • 最后的一些补充
    • husky 最后的帮手
      • 1.安装 husky
      • 2.在package.json中定义需要执行的Git hooks和对应的脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档