From 056896fa6f6b3bcc8cf2ca45b23905e13578d262 Mon Sep 17 00:00:00 2001 From: josh Date: Fri, 2 Feb 2024 10:40:42 +0100 Subject: [PATCH] ci: implement commitlint --- .husky/commit-msg | 4 ++++ bun.lockb | Bin 61287 -> 117397 bytes commitlint.config.js | 50 +++++++++++++++++++++++++++++++++++++++++++ package.json | 2 ++ 4 files changed, 56 insertions(+) create mode 100755 .husky/commit-msg create mode 100644 commitlint.config.js diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000..9783e42 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +bun --no -- commitlint --edit "" diff --git a/bun.lockb b/bun.lockb index 27dd93b856003657709d78608b059b9473474f46..8afc826e383360b476ca5ad81d5ca3b9f6533de8 100755 GIT binary patch delta 43128 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

K>cE|e7jx1U{nQG+oA!P10`Ng;qQoacZfu$yj2 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 delta 8786 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 diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..8a19d71 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,50 @@ +// build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) +// ci: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) +// docs: Documentation only changes +// feat: A new feature +// fix: A bug fix +// perf: A code change that improves performance +// refactor: A code change that neither fixes a bug nor adds a feature +// style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) +// test: Adding missing tests or correcting existing tests + +module.exports = { + extends: ['@commitlint/config-conventional'], + rules: { + 'body-leading-blank': [1, 'always'], + 'body-max-line-length': [2, 'always', 100], + 'footer-leading-blank': [1, 'always'], + 'footer-max-line-length': [2, 'always', 100], + 'header-max-length': [2, 'always', 100], + 'scope-case': [2, 'always', 'lower-case'], + 'subject-case': [ + 2, + 'never', + ['sentence-case', 'start-case', 'pascal-case', 'upper-case'], + ], + 'subject-empty': [2, 'never'], + 'subject-full-stop': [2, 'never', '.'], + 'type-case': [2, 'always', 'lower-case'], + 'type-empty': [2, 'never'], + 'type-enum': [ + 2, + 'always', + [ + 'build', + 'chore', + 'ci', + 'docs', + 'feat', + 'fix', + 'perf', + 'refactor', + 'revert', + 'style', + 'test', + 'translation', + 'security', + 'changeset', + ], + ], + }, + }; \ No newline at end of file diff --git a/package.json b/package.json index 999afd2..4c1747d 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,8 @@ "devDependencies": { "typescript": "^5.0.0", "@biomejs/biome": "^1.4.1", + "@commitlint/cli": "^18.6.0", + "@commitlint/config-conventional": "^18.6.0", "bun-types": "latest", "husky": "^8.0.3", "tsup": "latest"