读取用TypeScript编写的配置文件

Mar 29, 2023 · 2 min

有时你会想在你的npm包,或者vscode扩展中读取一些配置。 如果用户的项目是JavaScript的,这做到这一点并不难,只需要使用动态引入:

const config = await import('config.js')

便可以得到配置文件的默认导出。 但如果是ts的配置文件,就相对复杂了。

目前许多npm包的配置文件都还不支持TypeScript,比如webpack,而rollup也需要显示指定ts插件才能使用rollup.config.ts

不过unjs开源的c12便可以让你轻松的获取配置文件。

// 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文件的内容。

> cd ..