Javascript 将tsconfig.json属性添加到Gulp任务
在编译时,我不断遇到使用与ES5标准不同的东西的错误,原因很简单,因为我刚刚开始使用TS,我不知道如何将Javascript 将tsconfig.json属性添加到Gulp任务,javascript,typescript,gulp,Javascript,Typescript,Gulp,在编译时,我不断遇到使用与ES5标准不同的东西的错误,原因很简单,因为我刚刚开始使用TS,我不知道如何将tsconfig.json直接包含在我的Gulp任务自动编译中 错误TS1056:访问器仅在针对ECMAScript 5及更高版本时可用 是否可以将我的tsconfig.json文件属性直接添加到我的吸气管中? 当前gulpfile.js “严格使用”; var gulp=需要(“gulp”); var ts=require('gulp-typescript'); var tsProject
tsconfig.json
直接包含在我的Gulp任务自动编译中
错误TS1056:访问器仅在针对ECMAScript 5及更高版本时可用
是否可以将我的tsconfig.json
文件属性直接添加到我的吸气管中?
当前gulpfile.js
“严格使用”;
var gulp=需要(“gulp”);
var ts=require('gulp-typescript');
var tsProject=ts.createProject('tsconfig.json');//类型脚本配置
var merge=require('merge2');//打字要求
var sass=需要('gulp-sass');
var browserSync=require('browser-sync')。create();
var useref=require('gulp-useref');
var-uglify=需要('gulp-uglify');
var gulpIf=需要('gulp-if');
var cssnano=需要('gulp-cssnano');
var-imagemin=require('gulp-imagemin');
var cache=require('gulp-cache');
var del=需要('del');
var runSequence=require('run-sequence');
吞咽任务('sass',函数(){
return gulp.src('app/assets/scss/***.scss')
.pipe(sass())//使用gulp sass
.pipe(吞咽目标('app/assets/css'))
.pipe(browserSync.reload({
溪流:对
}));
});
gulp.task('typescript',function(){
var tsResult=gulp.src('app/assets/typescript/***.ts')
.管道(ts)({
声明:正确
}));
返回合并([
tsResult.dts.pipe(gulp.dest('app/assets/definitions'),
tsResult.js.pipe(gulp.dest('app/assets/js'))
]);
});
gulp.task('watch',['browserSync','sass',function(){
gulp.watch('app/assets/typescript/***.ts',['typescript']);
狼吞虎咽的手表('app/assets/scss/***.scss',['sass']);
//HTML或JS文件更改时重新加载浏览器
gulp.watch('app/***/.html',browserSync.reload);
gulp.watch('app/assets/js/***.js',browserSync.reload);
});
吞咽任务('browserSync',函数(){
browserSync.init({
服务器:{
baseDir:'应用程序'
},
});
});
gulp.task('useref',function(){
返回gulp.src('app/*.html')
.pipe(useref())
.pipe(gulpIf('*.js',uglify())
//仅当它是CSS文件时才缩小
.pipe(gulpIf('*.css',cssnano())
.pipe(大口目的地('dist'));
});
吞咽任务('images',函数(){
return gulp.src('app/assets/img/***.+(png | jpg | jpeg | gif | svg)'))
//缓存通过imagemin运行的图像
.pipe(缓存(imagemin({
交错:对
})))
.pipe(吞咽目的地(“dist/assets/img”);
});
gulp.task('font',function(){
return gulp.src('app/assets/font/***')
.pipe(gulp.dest('dist/assets/font');
});
吞咽任务('clean:dist',函数(){
返回del.sync('dist');
});
gulp.task('build',函数(回调){
运行序列('clean:dist',['sass','useref','images','font'],
回拨
);
});
gulp.task('default',函数(回调){
运行序列(['sass','typescript','browserSync','watch'],
回拨
);
//类型脚本编译器
});代码>我建议您使用tsconfig.json作为属性的唯一来源。要执行此操作,请更改创建tsResult
的方式:
var tsProject = ts.createProject('tsconfig.json');
var tsResult = tsProject.src().
.pipe(//....
以下是对我有效的完整任务:
gulp.task('build.js.dev', () =>
{
var tsProject = ts.createProject('tsconfig.json');
var tsResult = tsProject.src()
.pipe(sourcemaps.init())
.pipe(tsProject());
return merge([
//Write definitions
//tsResult.dts.pipe(gulp.dest(TEMP_TARGET_FOLDER)),
//Write compiled js
tsResult.js.pipe(sourcemaps.write(
".",
{
includeContent: true,
sourceRoot: __dirname + "/dist"
})).pipe(gulp.dest(TEMP_TARGET_FOLDER))]);
});
出现错误的原因是,如果省略target
compiler选项,则typescript编译器将退回到ES3 请参阅自述文件的这一部分:@Paarth,我做了多次,但似乎我自己做错了。我删除了默认的.pipe(ts({declaration:true}))
并将其替换为.pipe(tsProject())代码>现在似乎工作正常。如果没有“declaration:true”设置,这会是一个问题吗?我应用了.pipe(tsProject())
似乎解决了这个问题。这是因为默认情况下,typescript编译器的目标是ES3,请参见:因此基本上,.pipe(ts({declaration:true}))
意味着它可以与ES3一起工作?是的。由于您尚未指定任何其他选项,因此将使用其默认值Hanks!一个初学者非常需要的澄清。