Подготовка
Требуется установка 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
Исполнение
Выполнить переданный файл tsNameofTest.js
node dist/tsNameofTest.js // expected output: nameString: log
Примечание: , если typescript
target is 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="" />
не требуется.