Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将tsconfig.json属性添加到Gulp任务_Javascript_Typescript_Gulp - Fatal编程技术网

Javascript 将tsconfig.json属性添加到Gulp任务

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

在编译时,我不断遇到使用与ES5标准不同的东西的错误,原因很简单,因为我刚刚开始使用TS,我不知道如何将
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!一个初学者非常需要的澄清。