in modules/code-generator/src/plugins/common/esmodule.ts [332:403]
originalName: getDefaultExportName(info),
aliasName: info.aliasName,
dependency: info.source,
},
});
}
});
// 可能会剩余一些存在二次转换的定义
Object.keys(aliasDefineStatements).forEach((a) => {
chunks.push({
type: ChunkType.STRING,
fileType: targetFileType,
name: COMMON_CHUNK_NAME.ImportAliasDefine,
content: aliasDefineStatements[a],
linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport, COMMON_CHUNK_NAME.InternalDepsImport],
});
});
const exportItemList = Object.keys(exportItems).map((k) => exportItems[k]);
const defaultExport = exportItemList.filter((item) => item.isDefault);
const otherExports = exportItemList.filter((item) => !item.isDefault);
const statementL = ['import'];
if (defaultExport.length > 0) {
if (useAliasName) {
statementL.push(defaultExportNames[0]);
} else {
statementL.push(defaultExport[0].aliasNames[0]);
}
if (otherExports.length > 0) {
statementL.push(', ');
}
}
if (otherExports.length > 0) {
const items = otherExports.map((item) => {
return !useAliasName || item.needOriginExport || item.aliasNames.length <= 0
? item.exportName
: `${item.exportName} as ${item.aliasNames[0]}`;
});
statementL.push(`{ ${items.join(', ')} }`);
}
statementL.push('from');
const getInternalDependencyModuleId = () => `@/${(deps[0] as IInternalDependency).type}/${pkg}`;
if (deps[0].dependencyType === DependencyType.Internal) {
// TODO: Internal Deps path use project slot setting
statementL.push(`'${getInternalDependencyModuleId()}';`);
chunks.push({
type: ChunkType.STRING,
fileType: targetFileType,
name: COMMON_CHUNK_NAME.InternalDepsImport,
content: statementL.join(' '),
linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport],
});
} else {
statementL.push(`'${pkg}';`);
chunks.push({
type: ChunkType.STRING,
fileType: targetFileType,
name: COMMON_CHUNK_NAME.ExternalDepsImport,
content: statementL.join(' '),
linkAfter: [],
});
}
// 处理下一些额外的 default 方式的导入
if (defaultExportNames.length > 1) {
if (deps[0].dependencyType === DependencyType.Internal) {
defaultExportNames.slice(1).forEach((exportName) => {
chunks.push({