⚙️🚀 TypeScript config file support for cosmiconfig
Simply add TypeScriptLoader
to the list of loaders for the .ts
file type, and await
loading:
import { cosmiconfig } from "cosmiconfig";
import { TypeScriptLoader } from "cosmiconfig-typescript-loader";
const moduleName = "module";
const explorer = cosmiconfig("test", {
searchPlaces: [
"package.json",
`.${moduleName}rc`,
`.${moduleName}rc.json`,
`.${moduleName}rc.yaml`,
`.${moduleName}rc.yml`,
`.${moduleName}rc.js`,
`.${moduleName}rc.ts`,
`.${moduleName}rc.cjs`,
`${moduleName}.config.js`,
`${moduleName}.config.ts`,
`${moduleName}.config.cjs`,
],
loaders: {
".ts": TypeScriptLoader(),
},
});
const cfg = await explorer.load("./");
Or more simply if you only support loading of a TypeScript based configuration file:
import { cosmiconfig } from "cosmiconfig";
import { TypeScriptLoader } from "cosmiconfig-typescript-loader";
const moduleName = "module";
const explorer = cosmiconfig("test", {
loaders: {
".ts": TypeScriptLoader(),
},
});
const cfg = await explorer.load("./amazing.config.ts");
With the release of Jiti 2, the synchronous loader has now been deprecated. It can still be used by using the TypeScriptLoaderSync
export:
import { cosmiconfig } from "cosmiconfig";
import { TypeScriptLoaderSync } from "cosmiconfig-typescript-loader";
const moduleName = "module";
const explorer = cosmiconfig("test", {
loaders: {
".ts": TypeScriptLoaderSync(),
},
});
const cfg = explorer.load("./amazing.config.ts");
This package serves as a drop in replacement for @endemolshinegroup/cosmiconfig-typescript-loader
. At the time of publishing this, endemolshinegroup
is not maintaining the original package. I can only assume this is to do with the fact that Endemol Shine Group was purchased and absorbed by another business. This discontinuation of development efforts towards the original package left any open issues and pull requests unresolved.
This new package resolves the following original issues: