2016-01-23 42 views
1

我想用gulp-typescript來編譯我的打字稿代碼。我想發送* .spec.js到一個名爲「test」的文件夾,然後我嘗試將其餘的文件發送到名爲「dist」的文件夾。我正在嘗試follow this example,但不是我想要的結果,我的所有編譯文件都以「測試」結束。分離src和測試文件從吞噬打字稿js流

這是我一飲而盡任務文件:

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]); 
 
});

沒有人有任何知道我做錯了嗎?

--Thanks

回答

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'; 

它不會複製它變成「測試」子目錄作爲路徑後工作」 ../core/Commons'將失效。

相反,你應該從一開始就有'test'文件夾中的所有spec文件,並且ts編譯器將執行將js輸出放到目標文件夾中'test'目錄的工作。

希望這會有所幫助。