Изучаю возможности Gulp и параллельно делаю сборку для себя. Столкнулся с такой проблемой. Данный таск работает и выдает необходимый мне результат, а именно файлы style.css и style.min.css.
let project_folder = 'dist';
let source_folder = 'src';
let path = {
build: {
html: project_folder + '/',
css: project_folder + '/css/',
js: project_folder + '/js/',
img: project_folder + '/img/',
fonts: project_folder + '/fonts/',
},
src: {
html: [source_folder + '/*.html', '!' + source_folder + '/_*.html'],
css: source_folder + '/scss/style.scss',
js: source_folder + '/js/script.js',
img: source_folder + '/img/**/*.+(png|jpg|gif|ico|svg|webp)',
fonts: source_folder + '/fonts/*.ttf',
},
watch: {
html: source_folder + '/**/*.html',
css: source_folder + '/scss/**/*.scss',
js: source_folder + '/js/**/*.js',
img: source_folder + '/img/**/*.+(png|jpg|gif|ico|svg|webp)',
},
clean: './' + project_folder + '/',
};
function css() {
return src(path.src.css)
.pipe(
scss({
outputStyle: 'expanded', // compressed
})
)
.pipe(
autoprefixer({
overrideBrowserslist: ['last 5 versions'],
cascade: true,
})
)
.pipe(dest(path.build.css))
.pipe(clean_css())
.pipe(
rename({
extname: '.min.css',
})
)
.pipe(dest(path.build.css))
.pipe(browsersync.stream());
}
Но до всего этого хотелось бы, чтобы css файлы (normalize и тп) объединялись в libs.scss, который в свою очередь импортируется в style.scss. А уже после этого style.scss обрабатывался далее. Сделал я это таким образом:
function css() {
return src('node_modules/normalize.css/normalize.css')
.pipe(concat('libs.scss'))
.pipe(dest(source_folder + '/scss/'))
.pipe(src(path.src.css))
.pipe(
scss({
outputStyle: 'expanded', // compressed
})
)
.pipe(
autoprefixer({
overrideBrowserslist: ['last 5 versions'],
cascade: true,
})
)
.pipe(dest(path.build.css))
.pipe(clean_css())
.pipe(
rename({
extname: '.min.css',
})
)
.pipe(dest(path.build.css))
.pipe(browsersync.stream());
}
В результате при запуске gulp функция css запускается циклично без остановки. Не понимаю за счет чего это происходит.
Как вариант решения проблемы, вынес gulp-concat в отдельный таск и запускаю отдельно перед запуском gulp, но хотелось бы, чтобы это было в одном таске.