Привет!
Хочу написать скрипт, который будет:
Брать все файлы
js и пропускать через
babel и вместе с тем делать
reload страницы. Но при выполнении таска
gulp js код конкатенируется столько раз сколько мы вызвали таск
gulp js.
Что мне нужно сделать, чтобы этого не происходило?
Мой код
const gulp = require('gulp'),
browserSync = require('browser-sync'),
sourcemaps = require('gulp-sourcemaps'),
babel = require('gulp-babel'),
rename = require('gulp-rename'),
concat = require('gulp-concat');
gulp.task('js', () => {
return gulp.src('app/src/**/*.js') // Взять все файлы в указанной дирректории
.pipe(concat('bundle.hello.js')) // Конкатенировать все в один файл
.pipe(gulp.dest('app/src/js')) // Расположить в указанной дирректории
.pipe(browserSync.stream());
});
// babel
gulp.task('babel', () => {
return gulp.src('app/src/js/bundle.hello.js') // Взять файл
.pipe(babel({ // Пропустить код через babel
presets: ['babel-preset-env'],
}))
.pipe(rename('hello.js')) // Переименуем и создадим новый файл с изменениями
.pipe(gulp.dest('app/src')) // Положим в папочку
.pipe(browserSync.stream());
});
gulp.task('serve', ['sass', 'babel'], () => { // Заводим сервер
browserSync({
server: {
baseDir: 'app',
},
notify: false,
});
gulp.watch('app/sass/*.sass', ['sass']);
gulp.watch('app/src/*.js', ['js']).on('change', browserSync.reload);
gulp.watch('app/src/**/*.js');
gulp.watch('app/*.html').on('change', browserSync.reload);
});