Наблюдайте за машинописными файлами и публикуйте только измененные файлы

В Visual Studio 2015 я отслеживаю изменения, внесенные в мои файлы TS, чтобы я мог скопировать сгенерированные файлы JS и вывести их в мой каталог wwwroot. Однако всякий раз, когда я делаю изменения в одном файле TS, все они создаются и выводятся в папку wwwroot. Что я должен изменить здесь, чтобы только новые JS-файлы копировались в wwwroot?

Я использую gulp-watch для отслеживания изменений файлов и gulp-newer для фильтрации новых файлов.

gulp.task('min:site:js', function () {
return gulp
  .src('Contents/Scripts/**/*.js', { relative: true })
  .pipe(newer('wwwroot/js/'))
  .pipe(gulp.dest('wwwroot/js/'))
  .pipe(uglify())
  .pipe(rename({ extname: '.min.js' }))
  .pipe(gulp.dest('wwwroot/js/'));
});

gulp.task('watch:ts', function () {
   gulp.watch('Contents/Scripts/**/*.ts', ['min:site:js']);
});

1 ответ

gulp.watch имеет две основные формы. Оба из них возвращают EventEmitter, который испускает события изменения. Первый из них принимает в качестве параметров глобус, необязательный объект параметров и массив задач.

gulp.watch('Contents/Scripts/**/*.ts', ['min:site:js']);

Проще говоря, когда любой из файлов, совпадающих с глобусом, изменяется, запускайте задачи. В приведенном выше блоке кода, когда какие-либо файлы вContents/Scripts/**/*.ts подпапки, которые имеют расширение .ts изменить, то задача min:site:js будет работать с этими файлами.

Вторая форма принимает глобус, необязательный объект параметров и необязательный обратный вызов, который запускается при получении изменения.

Для получения дополнительной информации обратитесь к API документации

Используйте gulp-typcript для компиляции ваших .ts файлов при изменении вот пример:

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

var tsProject = ts.createProject({
    declaration: true,
    noExternalResolve: true
});

gulp.task('scripts', function() {
    var tsResult = gulp.src('lib/*.ts')
                    .pipe(ts(tsProject));

    return merge([ // Merge the two output streams, so this task is finished         when the IO of both operations are done. 
        tsResult.dts.pipe(gulp.dest('release/definitions')),
        tsResult.js.pipe(gulp.dest('release/js'))
    ]);
});
gulp.task('watch', ['scripts'], function() {
    gulp.watch('lib/*.ts', ['scripts']);
});

https://www.npmjs.com/package/gulp-typescript

Другие вопросы по тегам