每次我想修改时,我都必须编写t.importDeclaration([t.importDefaultSpecifier(t.identifier(`${importcomponentName}`))], t.stringLiteral(`../components/${importcomponentName}`))
这只是一个导入语句。例如,如果我想生成一个完整的组件,我必须编写一个很长的代码,它在文件中太长,而且很耗时。我们有什么简单的方法可以通过递归、库或任何工具来做到这一点吗?
Babel为这种类型的东西提供了@babel/template
,因此您可以替换
const decl = t.importDeclaration(
[t.importDefaultSpecifier(t.identifier(`${importcomponentName}`))],
t.stringLiteral(`../components/${importcomponentName}`)
);
带有
const decl = template.ast`
import ${importcomponentName} from "${`../components/${importcomponentName}`}";
`;
Loganfsmyth的答案的替代方案,您可以使用@babel/generator
:而不是使用@babel/template
import babelGenerate from '@babel/generator';
const decl = babelGenerate(
`import ${importcomponentName} from '${`../components/${importcomponentName}`}';`
);