# 合成命名导出

可以通过为 resolveId、load 或 transform 钩子中的模块设置 syntheticNamedExports 选项来指定缺少导出的回退导出。如果对于 syntheticNamedExports 使用字符串值,则此模块将回退到给定名称的命名导出的属性以解析任何缺少的命名导出:

dep.js: ({syntheticNamedExports: '__synthetic'})

export const foo = 'explicit';
export const __synthetic = {
	foo: 'foo',
	bar: 'bar'
};

main.js:

import { foo, bar, baz, __synthetic } from './dep.js';

// 输出 "explicit",因为非合成导出优先
console.log(foo);

// 输出 "bar", 从__synthetic中选择属性
console.log(bar);

// 输出 "undefined"
console.log(baz);

// 输出 "{foo:'foo',bar:'bar'}"
console.log(__synthetic);

当用作入口点时,只有显式导出将被公开。对于 syntheticNamedExports 的字符串值,即使在示例中的合成回退导出 __synthetic 也不会被公开。但是,如果值为 true,则默认导出将被公开。这是 syntheticNamedExports: true 和 syntheticNamedExports: 'default' 之间唯一的显着区别。

Last Updated: 6/14/2023, 8:56:23 AM