从gulp typescript js stream中拆分src和测试文件

时间:2016-01-23 05:18:42

标签: javascript typescript gulp

我正在尝试使用gulp-typescript来编译我的打字稿代码。我想将* .spec.js发送到名为&#34的文件夹; test"我正在尝试将其余部分发送到名为" dist"的文件夹中。我正在尝试follow this example但是我的所有编译文件都没有达到我想要的结果,而是最终进入" test"。

这是我的gulp任务文件:



var gulp = require('gulp');
var ts = require('gulp-typescript');
var merge2 = require('merge2');    
var config = require('../gulp.config');
var concat = require('gulp-concat');
var debug = require('gulp-debug');
var path = require('path');
var filter = require('gulp-filter');

var tsproj = ts.createProject(config.files.tsconfig);
gulp.task('typescript:src', function(){
    var testFilter = filter(['src/**/*.spec.ts'], {restore: true, passthrough: false});
    var compileStream = gulp
        .src(['src/**/*.ts', '!src/client/jspm_packages/**'])
        .pipe(ts(tsproj));
        
    var tsd = compileStream
        .dts
        .pipe(concat(path.basename(config.files.srcDefinitions)))
        .pipe(gulp.dest(config.paths.typings));
        
    var js = compileStream
        .js
        .pipe(testFilter)
        .pipe(gulp.dest('dist'));
        
    var tests = testFilter.restore.pipe(gulp.dest('test'));
        
    return merge2([tsd, js, tests]);
});




有谁知道我做错了什么?

- 由于

1 个答案:

答案 0 :(得分:0)

我认为你可以通过这样做来存档你想要的东西:

//Copy specs
gulp.src(['dest/**/*.spec.js'])
    .pipe(gulp.dest('dest/test'));

//Delete
del.sync(['dest/**/*.spec.js']);

其中'dest' - 是js编译文件的目标输出文件夹。

作为一方没有 - 我真的不关注你为什么要这样做。通过移动生成的js文件,如果它们与应用程序的其余部分之间存在任何进口,则很可能会破坏导入。例如,如果spec.ts文件中有类似的内容:

import {F} from '../core/Commons';

将其复制到'test'子目录后无效,因为路径'../core/Commons'将无效。

相反,您应该从一开始就将所有规范文件放在'test'文件夹中,而ts编译器将完成将js输出放到目标文件夹中'test'目录的工作。

希望这会有所帮助。