有时你会想在你的npm包,或者vscode扩展中读取一些配置。 如果用户的项目是JavaScript的,这做到这一点并不难,只需要使用动态引入:
const config = await import('config.js')
便可以得到配置文件的默认导出。 但如果是ts的配置文件,就相对复杂了。
目前许多npm包的配置文件都还不支持TypeScript,比如webpack
,而rollup
也需要显示指定ts插件才能使用rollup.config.ts
。
// Get loaded config
const { config } = await loadConfig({})
它会默认读取项目根目录的配置文件。
不过在我的场景,我需要更灵活的获取某一个ts文件的默认导出,所以我使用了c12
所依赖的jiti:
const config: Record<string, string> = await jiti(configPath, {
interopDefault: true,
cache: false,
requireCache: false,
v8cache: false,
esmResolve: true,
})(configPath)
除了ts文件外,jiti还可以读取json文件的内容。