如何使用TS-nameof在一饮而尽构建链,越来越:未知的编译器选项“getCustomTransformers”?

问题描述 投票:0回答:1

我使用ts-nameof我的打字稿文件内,想在这个.ts文件:

import 'ts-nameof';

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

我咕嘟咕嘟生成任务 - 如建议在这里Gulp configuration

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我得到错误:

error TS5023: Unknown compiler option 'getCustomTransformers'.

我使用的版本:

gulp 3.9.1
gulp-typescript 3.2.4
typescript 2.9.2
ts-nameof 2.0.0

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

typescript gulp gulp-typescript
1个回答
2
投票

制备

安装所需npm

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

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 gulpfile.js必须调整选项getCustomTransformers被配置,其中:

准备gulpfile.js

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',
    ));

Transpiling

与运行gulpfile.js

./node_modules/.bin/gulp

要么

./node_modules/.bin/gulp tsProject

执行

执行transpiled文件tsNameofTest.js

node dist/tsNameofTest.js  // expected output: nameString: log

注:以上qazxsw POI目标是qazxsw POI我得到了执行错误与typescript文件下面的语句,因为它是在最后ESNext文件,太:

.ts

我得到的是通过替换它固定

.js

更新

现在甚至有可能在全球范围内安装import 'ts-nameof'; 的类型定义:

/// <reference path="../node_modules/ts-nameof/ts-nameof.d.ts" />

无论qazxsw POI也不qazxsw POI是必要的。

© www.soinside.com 2019 - 2024. All rights reserved.