2015-10-18 3 views
4

Я использую gulpfile.js скомпилировать мой tsconfig.json проект так:Глоток-машинопись и вариант Outfile в tsconfig.json

var ts = require('gulp-typescript'); 

var tsProject = ts.createProject('Modeler/tsconfig.json', 
    { typescript: require('typescript') }); 

gulp.task('build:ts', function() { 
    var tsResult = tsProject.src() 
     .pipe(ts(tsProject)); 
    return tsResult.pipe(gulp.dest('wwwroot/app')); 
}); 

Он работает нормально, и собирает мои машинопись файлы и поместить JS-файлы в Wwwroot/приложение папка

проблема возникает тогда я хочу машинопись компилятора для вывода одного каскадного файла с помощью Outfile свойства

{ 
    "compilerOptions": { 
    "noImplicitAny": false, 
    "noEmitOnError": true, 
    "removeComments": false, 
    "sourceMap": true, 
    "target": "es5", 
    "module": "commonjs", 
    "outFile": "modeler.js" 
    }, 
    "exclude": [ 
    "node_modules", 
    "wwwroot" 
    ] 
} 

задачи глотка делает Creat e пустой файл и создает файлы * .js с содержимым рядом с * .ts-файлами.

Что я должен исправить, чтобы создать желаемый выходной файл, не загрязняя мои исходные папки?

ответ

7

У вас нет внешних модулей в ваших источниках TypeScript?

В этом случае я столкнулся с подобным поведением. Внешние модули не допускаются при использовании опции outFile, но компилятор не жалуется и испускает пустой файл. Кроме того, внешние модули должны испускаться «где-то» (в outDir).

Если проблема не в внешних модулях с использованием простой tsc -p . ведет себя так же, как с использованием gulp-typescript?

+1

jquery.d.ts в не внешнем модуле - это не проблема. Вопрос в том, используете ли вы ключевое слово 'export' (в .ts not .d.ts). Подробнее см. [This] (https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Namespaces%20and%20Modules.md#going-modular). – ahz

+0

Я вижу, я не должен использовать модули, тогда все работает нормально – Rem

1

Я считаю, что это то, что --outDir вариант компилятора TypeScript для. См https://github.com/Microsoft/TypeScript/wiki/Compiler-Options и, пожалуйста, посмотрите проглатывать-машинописный documentation, который указывает:

OUTDIR (строка) - Переместить выход на другой (виртуальный) каталог. Обратите внимание, что вам все равно нужен gulp.dest для записи вывода на диск.

+1

Но как outDir помогает мне выводить один файл ?! – Rem

+0

Ваш 'outFile' должен быть выпущен как раньше, и только« временные .js »файлы должны быть отправлены в' outDir'. Поэтому 'outDir' должен помочь вам избавиться от загрязняющих файлов .js. –

+0

Но моя проблема в том, что мой выходной файл генерируется пустым! Мне тоже нужно изменить smth – Rem

3

Я бы рекомендовал использовать для этой цели gulp-concat. Пакет Gulp, который делает больше, чем одно, противоречит принципам Gulp.

var concat = require('gulp-concat'); 

gulp.task('scripts', function() { 
    return gulp.src('./lib/*.js') 
    .pipe(concat('all.js')) 
    .pipe(gulp.dest('./dist/')); 
}); 
Смежные вопросы