Я использую gulp-typescript, чтобы перевести мой код TypeScript на JavaScript. По сути, я хочу за один файл *.ts
, так как там будут соответствующие *.js
, *.d.ts
и *.map
файлов.Есть ли способ использовать gulp-typescript для создания файлов карты и декларации во время одной задачи компиляции?
В компиляционной задаче я заметил, что я могу только перевести с декларацией или переводить с картой, но не в то же время. Например, выполнение одной задачи компиляции, которая пытается сгенерировать как файлы декларации + карты (с файлами JavaScript), так и следующие, не работает. Следующие файлы будут генерироваться с помощью файлов JavaScript +, но не файлов декларации.
var tsc = require('gulp-typescript');
var sourcemaps = require('gulp-sourcemaps');
var tsProject = tsc.createProject('tsconfig.json');
gulp.task('compile', function() {
var tsProject = tsc.createProject('tsconfig.json');
var tsResult = gulp.src(['src/**/*.ts'])
.pipe(sourcemaps.init())
.pipe(tsProject());
return tsResult.js
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./dist/src'));
});
My tsconfig.json
выглядит следующим образом.
{
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
],
"compilerOptions": {
"noImplicitAny": true,
"target": "es6",
"module": "commonjs",
"alwaysStrict": true,
"diagnostics": false,
"listEmittedFiles": false,
"listFiles": false,
"pretty": true,
"declaration": true
}
}
Чтобы обойти эту проблему, потому что теперь, я должен создать 3 Глоток задачи:
- один, чтобы создать заявления,
- один, чтобы создать отображение, и
- один для вызова предыдущих двух.
Эта опция работает, но не является желательной или лучшей практикой, так как теперь я должен скомпилировать два раза, чтобы получить желаемые выходы.
Мои задачи с 3 глотками выглядят следующим образом. Обратите внимание, как я сделал tsProject
локальным для функций теперь (сохраняя глобальность, задача gulp не работает).
gulp.task('compile:with:dts', function() {
var tsProject = tsc.createProject('tsconfig.json');
return gulp.src(['src/**/*.ts'])
.pipe(tsProject())
.pipe(gulp.dest('./dist/src'));
});
gulp.task('compile:with:maps', function() {
var tsProject = tsc.createProject('tsconfig.json');
var tsResult = gulp.src(['src/**/*.ts'])
.pipe(sourcemaps.init())
.pipe(tsProject());
return tsResult.js
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./dist/src'));
});
gulp.task('compile', ['compile:with:dts', 'compile:with:maps']);
'tsResult' содержит оба набора файлов. 'tsResult.js' только файлы js,' tsResult.dts' - только файлы dts. – MarkHasper