2015-07-26 6 views
3

Я интегрирую gulp-changed, чтобы предотвратить запись всех файлов на консоль при изменении. Это работает для моих HTML-файлов, но я также использую gulp-typescript для перевода моих файлов TypeScript в JavaScript.Как использовать gulp-changed с помощью gulp-typescript

Я использую рабочий процесс TypeScript, как предлагает Дэн Вахлин here.

Так я внедрено Глоток-переоделась в Глоток-машинописи так:

var res = gulp.src(config.src) 
     .pipe($.sourcemaps.init()) 
     .pipe($.changed(config.dest)) // <-- THIS LINE IS WHAT I ADDED 
     .pipe($.typescript({ 
      target: config.options.target, 
      module: config.options.module, 
      removeComments: true 
     })); 

    res.dts.pipe(gulp.dest(config.dest)); 

    return res.js 
     .pipe($.sourcemaps.write('.')) 
     .pipe(gulp.dest(config.dest)); 

Мой config объект выглядит следующим образом:

"src": "./source/app/**/*.ts", 
    "ignore": "!./source/**/*.d.ts", 
    "options": { 
     "target": "ES5", 
     "module": "commonjs" 
    }, 
    "lint": "prose", 
    "dest": "./build/public/app" 

Тем не менее, все файлы которые регистрируются при изменении одного файл. Я даже попытался переместить указанную выше линию .pipe($.changed(config.dest)) прямо перед строкой .pipe($.sourcemaps.write('.')).

Опять же, не повезло.

Кто-нибудь знает, как это исправить?

ответ

3

Ваши входные файлы имеют разное расширение, чем выходные файлы. Вы должны использовать для того, чтобы extension optiongulp-changed найти правильные файлы для сравнения:

.pipe($.changed(config.dest, {extension: '.js'})) 
+1

Подтвержденные работает, спасибо большое! – Nicky

Смежные вопросы