我在TypeScript文件中使用TypeScript,就像在这个.ts-file中一样:
import 'ts-nameof';
export class MyTsNameOfTest {
public testTsNameOf() {
const nameString = nameof(console.log);
}
}我的Gulp构建任务--正如这里所建议的,吞咽结构
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我做错了什么?谢谢你的帮助。
发布于 2019-01-19 19:10:14
准备工作
安装所需的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,必须在配置选项getCustomTransformers的情况下调整gulpfile.js:
制备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',
));转施
运行gulpfile.js
./node_modules/.bin/gulp或
./node_modules/.bin/gulp tsProject执行
执行转置文件tsNameofTest.js
node dist/tsNameofTest.js // expected output: nameString: log备注:,如果typescript的目标是ESNext,我在.ts文件中得到了以下语句,就像在最后的.js文件中一样:
import 'ts-nameof';我把它替换成
/// <reference path="../node_modules/ts-nameof/ts-nameof.d.ts" />更新
现在甚至可以全局安装ts-nameof的类型定义:
npm install @types/ts-nameof --save-devimport和/// <reference path="" />都不是必要的。
https://stackoverflow.com/questions/54251876
复制相似问题