javascript - TypeScript | 检测导入是否为目录
我正在尝试创建一个 TypeScript 插件(基于 https://github.com/nvandamme/typescript-transformer-append-js-extension),该插件会在导入/导出的文件末尾添加 .js 扩展名,或者在导入/导出的目录中添加 index.js:
// Before
import hello from './world';
import { test } from './directory';
// After
import hello from './world.js';
import { test } from './directory/index.js';
以下代码(仅)适用于导入/导出的文件:
import typescript from "typescript";
export default function transformer(_: typescript.Program) {
return (transformationContext: typescript.TransformationContext) =>
(sourceFile: typescript.SourceFile) => {
function visitNode(node: typescript.Node): typescript.VisitResult<typescript.Node> {
if (shouldMutateModuleSpecifier(node)) {
const newModuleSpecifier = typescript.factory.createStringLiteral(
`${node.moduleSpecifier.text}.js`,
);
if (typescript.isImportDeclaration(node)) {
return typescript.factory.updateImportDeclaration(
node,
node.modifiers,
node.importClause,
newModuleSpecifier,
undefined,
);
}
if (typescript.isExportDeclaration(node)) {
return typescript.factory.updateExportDeclaration(
node,
node.modifiers,
false,
node.exportClause,
newModuleSpecifier,
undefined,
);
}
}
return typescript.visitEachChild(node, visitNode, transformationContext);
}
return typescript.visitNode(sourceFile, visitNode);
};
}
我不知道如何检测导入声明是否是目录。
有没有内置函数、Node的属性,或者其他方法可以知道这个信息?
谢谢!