首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将转换器传递给ts-node?

如何将转换器传递给ts-node?
EN

Stack Overflow用户
提问于 2019-08-04 07:55:53
回答 1查看 407关注 0票数 1

由于我需要使用转换器,所以我正在尝试使用自己的Typescript编译器。

我们使用ts-node来运行一些文件(单独的测试等)我还需要将转换器传递给ts-node编译器。

这是我的代码

代码语言:javascript
复制
const ts = require('typescript');
const tsNode = require('ts-node').register;
const keysTransformer = require( 'ts-transformer-keys/transformer');
const tsConfig = require( './tsconfig.json');

const compileProject = () => {
    const { options, fileNames } = ts.parseJsonConfigFileContent(
        tsConfig,
        ts.sys,
        __dirname
    );
    const program = ts.createProgram(fileNames, options);

    const transformers = {
        before: [keysTransformer(program)],
        after: []
    };

    program.emit(undefined, undefined, undefined, false, transformers);
}

const compileAndRun = (files) => {
    tsNode({ files, compilerOptions: tsConfig.compilerOptions, transformers: ["ts-transformer-keys/transformer"] });
    files.forEach(file => {
        require(file);
    });
}

module.export = main = (args) => {
    if(args.length >= 2) {
        const fileNames = args.splice(2);
        compileAndRun(fileNames);
    } else {
        compileProject();
    }
}

main(process.argv);

将转换器传递给TypeScript编译器(在编译整个项目时)可以很好地工作,方法是这样做

代码语言:javascript
复制
const transformers = {
    before: [keysTransformer(program)],
    after: []
};

但是,我找不到足够的文档来说明如何对ts-node执行相同的操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-04 09:35:23

register()transformers选项是CustomTransformers类型(传递时不是数组):

代码语言:javascript
复制
    interface CustomTransformers {
        /** Custom transformers to evaluate before built-in .js transformations. */
        before?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[];
        /** Custom transformers to evaluate after built-in .js transformations. */
        after?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[];
        /** Custom transformers to evaluate after built-in .d.ts transformations. */
        afterDeclarations?: (TransformerFactory<Bundle | SourceFile> | CustomTransformerFactory)[];
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57342857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档