安装npm, Commitizen, 与Git commit message

本文详细记录了在Ubuntu16.04环境下安装npm和Commitizen的步骤,解决了一系列安装过程中遇到的问题,如版本冲突、权限错误等,并介绍了如何遵循Angular风格的Git commit message规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

吐槽

本来是为了规范git commit的编写,研究了一下Commit message。大多数博文推荐使用Commitizen,而其安装需要借助npm。

在Ubuntu16.04下,依照各贴文的讲解,先装npm再装Commitizen踩了一堆的坑,包括但不限于:

  • SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode (版本问题)
  • Error: EACCES: permission denied (sudo权限问题)
  • “npm install” error: Missing required argument #1(版本问题)
  • /usr/bin/env: node: No such file or directory (软链接问题)

折腾了一上午,简直搞到头大。最后找到源码地址,按照官方教程一步一步操作,才算解决了上述问题。

安装npm

  1. 下载源码(我下载Linux二进制文件(x64)时的版本:node-v12.18.2-linux-x64.tar.xz)
  2. 解压压缩包,并复制到新建的文件夹/usr/local/lib/nodejs(VERSION和DISTRO为你下载时的对应版本号和分发号)
# VERSION=v12.18.2
# DISTRO=linux-x64
$sudo mkdir -p /usr/local/lib/nodejs
$sudo tar -xJvf node-$VERSION-$DISTRO.tar.xz -C /usr/local/lib/nodejs 
  1. 设置环境变量sudo gedit ~/.profile,在文档末尾处添加
# Nodejs VERSION=v12.18.2 DISTRO=linux-x64
export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH
  1. 刷新一下
$. ~/.profile
  1. 检验是否安装正确
$node -v
v12.18.2
$npm version
{
  npm: '6.14.5',
  ares: '1.16.0',
  brotli: '1.0.7',
  cldr: '37.0',
  http_parser: '2.9.3',
  icu: '67.1',
  llhttp: '2.0.4',
  modules: '72',
  napi: '6',
  nghttp2: '1.41.0',
  node: '12.18.2',
  openssl: '1.1.1g',
  tz: '2019c',
  unicode: '13.0',
  uv: '1.38.0',
  v8: '7.8.279.23-node.39',
  zlib: '1.2.11'
}
$npx -v
6.14.5
  1. 输出正常后,链接npmnodenpx/usr/bin (注意替换$VERSION和$DISTRO)
$sudo ln -s /usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin/node /usr/bin/node
$sudo ln -s /usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin/npm /usr/bin/npm
$sudo ln -s /usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin/npx /usr/bin/npx

安装Commitizen

  1. 若上面一切顺利,则可以安装Commitizen了
$sudo npm install -g commitizen
  1. cd到代码工程的目录里,初始化支持 Angular 的 Commit message 格式
$commitizen init cz-conventional-changelog --save --save-exact
  1. 如果提示Error: ENOENT: no such file or directory, open '/home/ProjectXXX/package.json',则需要npm init产生package.json文件,文件内容按需修改。再进行第8步的操作。
  2. 以后可以用git cz命令来取代git commit了。

Git commit message规范

这里采用的是Angular风格的Commit message,包括由空行隔开的三个独立部分:Header,Body 和 Footer,即

Header
(blank line)
Body
(blank line)
Footer

这三部分可以进一步细化:

  • <type>[optional scope]: <description>
  • [optional Body]
  • [optional Footer(s)]

Header为必需项,包括type,scope和description三部分:

type-表明所提交更改的类型
scope-可选项,表明更改的影响范围
description-祈使句式简述本次的更改,不超过50字符,句首字母大写,无句号结尾

type仅限从下列7种类型中选择:

  1. feat: The new feature you’re adding to a particular application(添加新的功能)
  2. fix: A bug fix(消除bug)
  3. style: Feature and updates related to styling(更正格式、缺失的标点等等。不涉及代码修改)
  4. refactor: Refactoring a specific section of the codebase(产品代码的重构。不涉及添新功能、去除bug)
  5. test: Everything related to testing(测试代码的添加与重构。不涉及产品代码)
  6. docs: Everything related to documentation(文档修改)
  7. chore: Regular code maintenance.(更新编译文件、参数配置文件等等。不涉及产品代码)

Body为可选项,在需要给出修改的动机,或更详细些的介绍时添加。解释 what和why,而非how。不超过72字符。

Footer为可选项,指出更改引起的后续影响,如声明大改,对应一个关闭的issue,感谢贡献者等

参考:

  • https://www.cnblogs.com/daysme/p/7722474.html
  • https://nitayneeman.com/posts/understanding-semantic-commit-messages-using-git-and-angular/#the-header
  • https://udacity.github.io/git-styleguide/
Git 项目中校验提交的 commit message 是确保团队协作规范性的重要手段。可以通过以下方式实现这一目标: ### 配置 `validate-commit-msg` 插件 1. **安装插件** 在项目目录下运行以下命令以安装 `validate-commit-msg` 和 `husky`,后者用于管理 Git hooks: ```bash npm install validate-commit-msg husky -D ``` 这将确保 `validate-commit-msg` 被添加到开发依赖中,并启用 Git hooks 的功能[^3]。 2. **配置 `package.json` 文件** 在项目的 `package.json` 文件中添加以下配置来启用 commit message 校验: ```json { "husky": { "hooks": { "commit-msg": "validate-commit-msg" } }, "validate-commit-msg": { "types": ["feat", "fix", "docs", "style", "refactor", "perf", "test", "build", "ci", "chore", "revert"], "scope": { "required": false, "allowed": ["*"], "validate": false, "multiple": false }, "warnOnFail": false, "maxSubjectLength": 100, "subjectPattern": ".+", "subjectPatternErrorMsg": "subject does not match subject pattern!", "helpMessage": "", "autoFix": false } } ``` 此配置定义了允许的 commit 类型、是否需要 scope、主题长度限制以及正则表达式匹配规则等参数。这些设置可以确保所有提交信息符合预设格式要求[^3]。 ### 使用 `commitizen` 除了使用 `validate-commit-msg` 外,还可以通过 `commitizen` 工具帮助生成标准化的 commit message。 1. **初始化 `commitizen`** 运行以下命令以安装并初始化 `cz-conventional-changelog`: ```bash commitizen init cz-conventional-changelog --save --save-exact ``` 这将自动安装 `commitizen` 并将其保存为项目的开发依赖项[^2]。 2. **使用 `git cz` 提交** 安装完成后,可以通过以下命令提交代码: ```bash git cz ``` `commitizen` 将引导用户选择合适的 commit 类型(如 feat、fix、docs 等),输入影响范围、简短描述和详细描述,并确认是否存在 BREAKING CHANGE 或关联的 issue 编号。这种方式能有效保证本地提交的信息规范[^2]。 ### 使用 VS Code 插件 对于使用 Visual Studio Code 的开发者,可以通过安装特定插件简化 commit message 的编写流程。 1. **安装插件** 打开 VS Code 插件市场,搜索 `git-commit-plugin` 并安装。 2. **使用插件** 安装完成后,按下组合键 `Command + Shift + P` 呼出指令行,输入 `show git commit template` 指令,或点击 Git 插件栏上的小图标唤醒插件界面。根据当前提交的目的,选择对应的 type 类型来编写 commit 信息。此方法能够提高提交效率并减少格式错误[^1]。 通过以上方法,可以在 Git 项目中实现对 commit message 的全面校验,从而提升团队协作的质量和一致性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值