I just had the same issue and was able to make it work with one indirection
/** @type {import('@commitlint/types').UserConfig} */
const config = {
extends: []
};
module.exports = config;
Answer from Antoine M. on Stack Overflownpm
npmjs.com โบ package โบ @commitlint โบ types
commitlint/types
March 15, 2026 - Shared types for commitlint packages. Latest version: 20.5.0, last published: a month ago. Start using @commitlint/types in your project by running `npm i @commitlint/types`. There are 125 other projects in the npm registry using @commitlint/types.
ยป npm install @commitlint/types
Published ย Mar 15, 2026
Version ย 20.5.0
GitHub
github.com โบ conventional-changelog โบ commitlint
GitHub - conventional-changelog/commitlint: ๐ Lint commit messages
Starred by 18.5K users
Forked by 965 users
Languages ย TypeScript 92.2% | JavaScript 7.8%
Commitlint - Types for '.commitlintrc.js'
In the .commitlintrc.js file, I wanted to type the exported configuration option, so that my IDE could suggest possible options. More on stackoverflow.com
Thoughts on jujutsu?
I haven't wanted to dive into this until it's more widely used, because I don't want to learn a tool that will die on me, but I really really hope it catches on. I hate git. I love what it does, but Jesus it's a train wreck, it does way too much, in way too many ways, with no consistency More on reddit.com
Video: A linker in the Wild (Rust linker)
This is really really good work. To add some color to this for other folks - the linker presented here is an "incremental" linker. Right now Rust defers to your system linker (or whatever you might've specified) and relinks the binary on every incremental compilation. This linker design would let you only relink whatever parts of your codebase have changed. Lets say you're building a video game or a GUI app. Wild would let modify a single function, recompile that function, and then relink only that function. Combined with cranelift you could probably get JIT + hotreloading of rust code on the order of milliseconds. The other pieces presented at the end are very interesting. If rustc had a more intimate relationship with the linker, it could rely on the linker to guide codegen. Why would you bother doing codedgen for something that the linker would eliminate anyways? This would make compiling big libraries much faster since you don't need the entire crate compiled - only the functions you directly use. Combined with caching, the rust compiler could be *so* much faster. More on reddit.com
Automating Releases in GitHub with Conventional Commits
Interesting article. I also use commitizen More on reddit.com
Videos
Commitlint
commitlint.js.org โบ reference โบ configuration.html
Configuration | commitlint
Relevant types and enums can be imported from @commitlint/types.
Commitlint
commitlint.js.org
commitlint
Lint commit messages
Conventional Commits
conventionalcommits.org โบ en โบ v1.0.0
Conventional Commits
types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the Angular convention) recommends build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others.
GitHub
github.com โบ conventionalcommit โบ commitlint
GitHub - conventionalcommit/commitlint: commitlint checks if your commit messages meets the conventional commit format ยท GitHub
February 22, 2026 - echo "fear: do not fear for commit message" | commitlint lint # โ type-enum: type 'fear' is not allowed, you can use one of [build chore ci docs feat fix merge perf refactor revert style test]
Starred by 86 users
Forked by 9 users
Languages ย Go 91.4% | Shell 8.6%
Tessl
tessl.io โบ registry โบ tessl โบ npm-commitlint--types โบ 19.8.0 โบ files โบ docs โบ index.md
19.8.0 โข npm-commitlint--types โข tessl โข Registry โข Tessl
January 29, 2026 - This package serves as the foundational type library that enables type safety and consistency across all commitlint components including linting, configuration, formatting, and rule validation.
LogRocket
blog.logrocket.com โบ home โบ commitlint: write more organized code
Commitlint: Write more organized code - LogRocket Blog
June 4, 2024 - Letโs leave the technical realm for a moment to focus on writing โ more precisely, how to write good commit messages that are self-explanatory and pass the commitlint default validations. A good typical commit message will have the following structure: <type>(<scope?>): <subject!> <BLANK LINE> <body?> <BLANK LINE> <footer?>
npm
npmjs.com โบ package โบ @commitlint โบ config-conventional
commitlint/config-conventional
March 15, 2026 - Shareable commitlint config enforcing conventional commits. Latest version: 20.5.0, last published: a month ago. Start using @commitlint/config-conventional in your project by running `npm i @commitlint/config-conventional`. There are 1374 other projects in the npm registry using ...
ยป npm install @commitlint/config-conventional
Published ย Mar 15, 2026
Version ย 20.5.0
Vojtechruzicka
vojtechruzicka.com โบ commitlint
Commitlint: validate commit conventions automatically | Vojtech Ruzicka's Programming Blog
November 18, 2019 - It is called @commitlint/prompt-cli. You can easily install it: ... Now you can register commit command in your package.json. ... Now instead of git commit, you can run npm run commit. It launches an interactive wizard in your console, which will ask you for all the parts of a commit message such as type, subject, and so on.
Tericcabrel
blog.tericcabrel.com โบ apply-conventional-commit-style-on-your-project-with-commitlint
Apply conventional commit style on your project with commitlint
February 24, 2026 - Then we override types and scopes ... for type-enum and scope-enum respectively. We set the case of the scope to `camelCase`. About the subject, we indicate that it is never empty and has is in `lower-case,` and the max length is 72 characters. The number 2 is the error level, 1 for warning level, and 0 to disable the rule. For more details, check the documentation of commitlint...
Commitlint
commitlint.js.org โบ reference โบ examples.html
Examples | commitlint
To fix this issue in VS Code, you can specify an additional space after each emoji in your commitlint.config.ts file. ... import { type UserConfig } from "@commitlint/types"; export default { // Use the conventional commit rules as a base. extends: ["@commitlint/config-conventional"], prompt: { questions: { type: { enum: { // Add a space to a few common types for better alignment.
HexDocs
hexdocs.pm โบ commitlint โบ Commitlint.html
Commitlint โ commitlint v0.1.2
config :commitlint, allowed_types: [ "feat", "fix", "docs", "style", "refactor", "perf", "test", "build", "ci", "chore", "revert" ]