Наблюдайте за машинописными файлами и публикуйте только измененные файлы
В 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']);
});