跳到主要内容

构建产物

CLI指令解析时,格式化 format 相关配置

if (flags.format) {
const format = ensureArray(flags.format) as Format[]
options.format = format
}

设置在执行构建时,格式化options传参,默认导出路径为dist,针对format格式化

const options: Partial<NormalizedOptions> = {
outDir: 'dist',
..._options,
format:
typeof _options.format === 'string'
? [_options.format as Format]
: _options.format || ['cjs'],
dts:
typeof _options.dts === 'boolean'
? _options.dts
? {}
: undefined
: typeof _options.dts === 'string'
? { entry: _options.dts }
: _options.dts,
}

格式化后,在runEsbuild方法中,传给esbuildformat方法。

esbuild({
entryPoints: options.entry,
format: (format === 'cjs' && splitting) || options.treeshake ? 'esm' : format,
})

针对--legacy-output,也在esbuild中进行对应配置,针对非CJS模式创建对应的文档目录。

esbuild({
outdir:
options.legacyOutput && format !== 'cjs'
? path.join(outDir, format)
: outDir,
outExtension: options.legacyOutput ? undefined : outExtension,
})
const outExtension = getOutputExtensionMap(options, format, pkg.type)

const getOutputExtensionMap = (
options: NormalizedOptions,
format: Format,
pkgType: string | undefined
) => {
const outExtension: OutExtensionFactory =
options.outExtension || defaultOutExtension

const defaultExtension = defaultOutExtension({ format, pkgType })
const extension = outExtension({ options, format, pkgType })
return {
'.js': extension.js || defaultExtension.js,
}
}