Closed matthieusieben closed 9 months ago
Relates to #3218 I guess.
Happy for a PR if you're motivated and have time.
Had a look where this was introduced: https://github.com/conventional-changelog/commitlint/issues/3007#issuecomment-1030568481
So looks like we wanted to avoid a breaking change. Happy for a PR which is cleaning this up and create a major version. Maybe @jrolfs has some feedback to this as well.
This absolutely makes sense to me. I think it might be a little tricky to implement, though, because isn't the point of Cosmic Config to delegate configuration discovery (which files etc.)? I guess, even as someone who uses TypeScript almost exclusively, I'd also question the value of supporting TypeScript-based configuration files. I think the easiest move here might be to drop support for those, but I don't know how popular that feature is.
Hrm, maybe we could wrap the loader in a function that ensures the optional dependency:
import { cosmiconfig } from "cosmiconfig";
import TypeScriptLoader from "cosmiconfig-typescript-loader";
const moduleName = "module";
const explorer = cosmiconfig("test", {
searchPlaces: [
// ...
],
loaders: {
".ts": TypeScriptLoader(), // β wrap this in a function that loads `cosmiconfig-typescript-loader` dynamically
},
});
const cfg = explorer.load("./");
Thanks for your feedback @jrolfs !
There were quite some people involved to add the TS support. I believe we should support this because this is were projects are heading in the future.
Not sure how many people use a TS config. But also not sure how many people care about the size of commitlint really (Relates to #3040, #1791). I'll let this rest a bit and might get back to it at a later point.
But also not sure how many people care about the size
I just wanted to advocate for the people who care about the size since we're heavy users of your libs (btw thx for it π).
The hard-dep makes our docker image nearly ~100MB bigger, which may seem not much nowadays, but equates to more bandwidth usage which is costly, and cumulative time wasted by developers waiting image pulls in CI/locally. This is just a matter of DevX to me :)
Reopening because of #3641 This will then hopefully be fixed with a new mayor version. yolo
I'm also seeing commitlint fail in our project with
My mistake--this was caused by another dependency in our package, Error: Cannot find module 'typescript'
as of v17.7.1.cz-conventional-changelog
, requiring an earlier version of @commitlint/cli
.
This is even more necessary given the rise of bun.
Solved by #3722
Expected Behavior
ts-node
should be an optional dependency of the projectCurrent Behavior
currently, installing
@commitlint/cli
results in a lot of downloaded NPM packages.Affected packages
Possible Solution
Instead of statically importing
cosmiconfig-typescript-loader
,@commitlint/load
could depend on on it using an optional peer dependency and dynamicallyrequire
/import()
that dependency if/when a.ts
file is detected, and show a warning if that fails:Steps to Reproduce (for bugs)
Not really a bug.
Context
I don't use Typescript. So I really don't see why
ts-node
should be a mandatory dependency of my project:Your Environment
commitlint --version
git --version
node --version