// Input
class Foo {
templateString = 'some value';
}
// Output
import __LIB__ from '@scope/lib/path/to/lib';
class Foo {
templateString = (function compiledTemplate(deps) {
// ...
return result;
})({lib: __LIB__});
}
事实上,我有两个问题:
P.S。 I tried各种方法createSourceFile
和ts.createImportDeclaration
,但它们都导致了这个或那个错误:[
答案 0 :(得分:1)
要添加任意文本,我所知道的最好方法是将int
与要插入的字符串一起使用。
要添加导入语句,请记住您在不使更改原始文件的情况下更新树。
createIdentifier
API采用ts.visitEachChild
参数,该参数专门针对nodesVisitor
运行。通常情况下,如果您未通过NodeArray
,则会使用您为nodesVisitor
参数传递的第一个回调对Node
中的每个NodeArray
进行操作,但在这里你特别想要在整个节点阵列上运行。
在您的情况下,您对visitor
的语句(SourceFile
感兴趣。您可以使用NodeArray<Statement>
创建导入,并更新createImportDeclaration
传递SourceFile
,如下所示:
nodesVisitor