我在TypeScript文件中使用ts-nameof,就像在此.ts
文件中一样:
import 'ts-nameof';
export class MyTsNameOfTest {
public testTsNameOf() {
const nameString = nameof(console.log);
}
}
我的Gulp构建任务-如此处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
我在做什么错?感谢您的帮助。
答案 0 :(得分: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',
));
使用{p>运行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-dev
import
和/// <reference path="" />
都是不必要的。