diff --git a/src/emitter.ts b/src/emitter.ts index e1c9fbf..23ec371 100644 --- a/src/emitter.ts +++ b/src/emitter.ts @@ -106,7 +106,7 @@ export function emitFile( writePunctuation }; - const transform = ts.transformNodes(resolver, undefined, {}, [sourceFile], transformers!, /*allowDtsFiles*/ false); + const transform = ts.transformNodes(resolver, undefined, {}, [sourceFile], transformers!, /* allowDtsFiles */ false); state.sourceFile = (transform.transformed[0] as SourceFile); diff --git a/src/index.ts b/src/index.ts index aca0dc8..d0f75b2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,7 +18,8 @@ const defaultOptions = { emitHeader: true, getModulePath: name => name, getModuleNamespace: () => '\\', - modules: {} + modules: {}, + customTransformers: [] }; export function compile(filePath: string, options: Ts2phpOptions = {}) { @@ -103,8 +104,10 @@ export function compile(filePath: string, options: Ts2phpOptions = {}) { }; }); - const transformers: ts.TransformerFactory[] = []; - transformers.push(transform); + const transformers: ts.TransformerFactory[] = [ + transform, + ...(options.customTransformers || []) + ]; const emitResolver = program.getDiagnosticsProducingTypeChecker() .getEmitResolver(sourceFile, undefined); diff --git a/src/transformer.ts b/src/transformer.ts index 4bb9362..c54c763 100644 --- a/src/transformer.ts +++ b/src/transformer.ts @@ -1,11 +1,12 @@ /** * @file 生成代码前,对 ast 进行转换 - * @author meixuguang + * @author meixuguang */ import ts from 'typescript'; export function transform(context: ts.TransformationContext) { + const { startLexicalEnvironment } = context; diff --git a/src/types.ts b/src/types.ts index 4418f72..7e084e6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -22,7 +22,8 @@ export interface Ts2phpOptions { getNamespace?: () => string; getModulePath?: (name: string, module?: ts.ResolvedModuleFull) => string; getModuleNamespace?: (name: string, module?: ts.ResolvedModuleFull) => string; - tsConfig?: object + tsConfig?: object, + customTransformers?: ts.TransformerFactory[] } export interface CompilerState extends Ts2phpOptions {