Closed Mister-Hope closed 1 week ago
commitlint Replace ts-node with cosmiconfig-typescript-loader package https://github.com/conventional-changelog/commitlint/pull/3722
Although the speed has improved, The cosmiconfig-typescript-loader package added ,cz-git and czg will double the size, and I am still considering it. πΆβπ«οΈ This makes me wonder the TypeScript support is important. If it's just type support, the issue #193 also can do this
commitlint.config.ts
is supported by commitlint directly, so the docs need to be corrected, there is nothing to do with your pacakgecz.config.ts
supported, you should externalize cosmiconfig-typescript-loader
, tools like rollup and tsup can do that easilyBesides, I think you have misunderstood my original issue complaining about the deps number.
Since your package is strongly relying on commitlint, so you should try to reuse package that is required by it as much as possible while keeping the same major, this way you can externalize them safely as they are supposed to be installed to workspace anyway. (e.g.: cosmiconfig-typescript-loader
)
The main target for tool package like this is trying to avoid requiring any new package that is heavy. A package is heavy means that it has too many deps or a lot of unused features for your usage. You can try to bundle packages with cz-git, only if they:
Thank you for your reply.
commitlint.config.ts
Please feel free to point it out.
Since your package is strongly relying on commitlint, so you should try to reuse package
@commitlint/load
package have too many dep package.json. I have try but cjs project treeshakable effect is not wellnpx
bunx
usage), should resolve the ts configuration file at this time, I will keep an open opinion and will not add it in the short term.However, I don't understand with my documentation not supporting commitlint.config.ts Please feel free to point it out.
No offense, but as I am pointing out the link in issue body, it should not be hard to find these.
Done Btw, I will try to configure loading for TypeScript using node > 22 LTS (2024-10-29), instead of adding extra dependencies.
Hi there. Node.js LTS v22 has been released, and in v1.11.0, I will add the loading of ESM configuration and TS configuration. Regarding the loading of TS configuration, it is using the native Node loading method, but it is currently an experimental feature that requires additional environment injection. Recommended to first use the ESM JS method for transition.
Docs preview: https://deploy-preview-197--cz-git.netlify.app/
I have released a next pre-release version π(v1.11.0-beta.1)π for testing. I expect to officially release v1.11.0 next weekend. Welcome to try it out! π Let me know if there are still any issues. π
I am testing in the repository https://github.com/vuepress-theme-hope/vuepress-theme-hope
commitlint.config.ts
=> commitlint.config.js
import { execSync } from "node:child_process";
import { readdirSync } from "node:fs";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { defineConfig } from "cz-git";
const packages = readdirSync(
join(dirname(fileURLToPath(import.meta.url)), "./packages/"),
);
const scopeComplete = execSync("git status --porcelain || true")
.toString()
.trim()
.split("\n")
.find((r) => ~r.indexOf("M packages"))
?.replace(/\//g, "%%")
?.match(/packages%%((\w|-)*)/)?.[1];
export default defineConfig({
extends: ["@commitlint/config-conventional"],
rules: {
"scope-enum": [2, "always", ["demo", "release", ...packages]],
},
prompt: {
defaultScope: scopeComplete,
customScopesAlign: !scopeComplete ? "top" : "bottom",
allowCustomIssuePrefix: false,
allowEmptyIssuePrefix: false,
},
});
- "commit": "pnpm git-cz",
+ "commit": "cross-env NODE_OPTIONS=\"--experimental-transform-types --disable-warning ExperimentalWarning\" pnpm git-cz",
The latest version π(v1.11.0)π released and can use Node v22 to loading ts configure, But it is recommended to use ESM js configure as a transition for the future TypeScript configuration file, and switch to it after Node.js runs TypeScript stably.
Docs Link: https://cz-git.qbb.sh/config/#typescript-template
β Checklist
π System Info
π Description
See https://commitlint.js.org/reference/configuration.html
So https://cz-git.qbb.sh/config/#typescript-template should be fixed
π Reproduction link / repo:
No response