首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在gulp构建链中使用ts-名称,获取:未知编译器选项‘getCustomTransformers’?

如何在gulp构建链中使用ts-名称,获取:未知编译器选项‘getCustomTransformers’?
EN

Stack Overflow用户
提问于 2019-01-18 10:18:12
回答 1查看 525关注 0票数 0

我在TypeScript文件中使用TypeScript,就像在这个.ts-file中一样:

代码语言:javascript
复制
import 'ts-nameof';

export class MyTsNameOfTest {
  public testTsNameOf() {
    const nameString = nameof(console.log);
  }
}

我的Gulp构建任务--正如这里所建议的,吞咽结构

代码语言:javascript
复制
const gulp = require('gulp');
const ts = require('gulp-typescript');
const tsNameof = require("ts-nameof");

gulp.task("typescript", function () {
  gulp.src("src/**/*.ts")
    .pipe(ts({
      getCustomTransformers: () => ({ before: [tsNameof] })
    }))
    .pipe(gulp.dest("./dist"));
});

运行gulp我得到错误:

代码语言:javascript
复制
error TS5023: Unknown compiler option 'getCustomTransformers'.

我正在使用的版本:

代码语言:javascript
复制
gulp 3.9.1
gulp-typescript 3.2.4
typescript 2.9.2
ts-nameof 2.0.0

我做错了什么?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-19 19:10:14

准备工作

安装所需的npm

代码语言:javascript
复制
npm install typescript
npm install gulp@^4.0.0                
npm install gulp-typescript@^5.0.0
npm install del
npm install ts-nameof

没有项目的gulp-typescript

制备gulpfile.js

代码语言:javascript
复制
const gulp = require('gulp');
const ts = require('gulp-typescript');
const tsNameof = require("ts-nameof");
const del = require('del');

gulp.task('clean', () => {
    return del(['./dist/**']);
});    

gulp.task('ts', function () {
    return gulp.src('./src/**/*.ts')
        .pipe(ts({
            getCustomTransformers: () => ({ before: [tsNameof] })
        }))
        .pipe(gulp.dest('./dist'));
});

gulp.task('default',
    gulp.series(
        'clean',
        'ts',
    ));

gulp-typescript与使用现有tsconfig.json的项目

使用gulp-typescript和现有的tsconfig.json,必须在配置选项getCustomTransformers的情况下调整gulpfile.js

制备gulpfile.js

代码语言:javascript
复制
const gulp = require('gulp');
const ts = require('gulp-typescript');
const tsNameof = require("ts-nameof");
const del = require('del');

gulp.task('clean', () => {
    return del(['./dist/**']);
}); 

var tsProject = tsProject || null;
gulp.task('ts::Project', function () {
    if (!tsProject) {
        tsProject = ts.createProject(
            'tsconfig.json',
            {
                getCustomTransformers: () => ({ before: [tsNameof] })
            }
        );
    }
    return gulp.src('./src/**/*.ts')
        .pipe(tsProject())
        .pipe(gulp.dest("./dist"));
});

gulp.task('tsProject',
    gulp.series(
        'clean',
        'ts::Project',
    ));

转施

运行gulpfile.js

代码语言:javascript
复制
./node_modules/.bin/gulp

代码语言:javascript
复制
./node_modules/.bin/gulp tsProject

执行

执行转置文件tsNameofTest.js

代码语言:javascript
复制
node dist/tsNameofTest.js  // expected output: nameString: log

备注:,如果typescript的目标是ESNext,我在.ts文件中得到了以下语句,就像在最后的.js文件中一样:

代码语言:javascript
复制
import 'ts-nameof';

我把它替换成

代码语言:javascript
复制
/// <reference path="../node_modules/ts-nameof/ts-nameof.d.ts" />

更新

现在甚至可以全局安装ts-nameof的类型定义:

代码语言:javascript
复制
npm install @types/ts-nameof --save-dev

import/// <reference path="" />都不是必要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54251876

复制
相关文章

相似问题

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