У меня проблемы с настройкой задания Gulp 4. Когда я запускаю задание по умолчанию, которое просматривает мои файлы и запускает функции, все работает нормально. Проблема заключается в том, что когда я пытаюсь запустить gulp prod или любое другое задание, которое не выполняется по умолчанию, оно не показывает ошибок, но папки или файлы не создаются.
Это тема WordPress, и я пытаюсь настроить задачи разработки и производства. Я использую узел 10.15.3, npm 6.4.1, gulp-cli 2.2.0 и gulp 4.0.0. Я попытался упростить функции и / или задачи, я прочитал все вопросы с такими проблемами, но ничего не помогло.
Мой gulpfile, как сейчас:
const themename = "tree"
const { src, dest, watch, series, parallel } = require("gulp"),
autoprefixer = require("gulp-autoprefixer"),
browserSync = require("browser-sync").create(),
sass = require("gulp-sass"),
cleanCSS = require("gulp-clean-css"),
sourcemaps = require("gulp-sourcemaps"),
concat = require("gulp-concat"),
imagemin = require("gulp-imagemin"),
changed = require("gulp-changed"),
babel = require("gulp-babel"),
uglify = require("gulp-uglify"),
lineec = require("gulp-line-ending-corrector"),
rename = require("gulp-rename")
const root = `../${themename}`,
srcs = {
css: `${root}/src/css/**/*.css`,
sass: `${root}/sass`,
js: `${root}/src/js/app/**/*.js`,
img: `${root}/src/images/**/*.{jpe?g|gif|png|svg}`
},
dist = {
css: `${root}/dist/css/`,
js: `${root}/dist/js/`,
img: `${root}/dist/images/`
},
devPaths = {
css: [`${root}/dev/css/`],
js: `${root}/dev/js/`
},
watchFiles = {
php: `${root}/**/*.php`,
sass: `${srcs.sass}/**/*.scss`
}
function devSass() {
return src(`${srcs.sass}/style.scss`)
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(sass({ outputStyle: "expanded" }).on("error", sass.logError))
.pipe(autoprefixer("last 2 versions"))
.pipe(sourcemaps.write())
.pipe(lineec())
.pipe(dest(devPaths.css))
}
function devCss() {
return src([`${srcs.css}`, `${devPaths.css}/style.css`])
.pipe(sourcemaps.init({ loadMaps: true, largeFile: true }))
.pipe(concat("all.css"))
.pipe(sourcemaps.write(`${devPaths.css}/maps/`))
.pipe(lineec())
.pipe(dest(devPaths.css))
}
function devJs() {
return src(srcs.js)
.pipe(babel({ presets: ["@babel/env"] }))
.pipe(lineec())
.pipe(dest(devPaths.js))
}
function prodSass() {
return src(`${srcs.sass}/style.scss`)
.pipe(sass({ outputStyle: "compressed" }).on("error", sass.logError))
.pipe(autoprefixer("last 2 versions"))
.pipe(lineec())
.pipe(dest(dist.css))()
}
function prodCss() {
return src([srcs.css, devPaths.css])
.pipe(concat("all.min.css"))
.pipe(cleanCSS())
.pipe(lineec())
.pipe(dest(dist.css))
}
function prodJs() {
return src(srcs.js)
.pipe(rename({ suffix: ".min" }))
.pipe(babel({ presets: ["@babel/env"] }))
.pipe(uglify())
.pipe(dest(dist.js))
}
function imgOpt() {
return src(srcs.img)
.pipe(changed(dist.img))
.pipe(
imagemin([
imagemin.gifsicle({ interlaced: true }),
imagemin.jpegtran({ progressive: true }),
imagemin.optipng({ optimizationLevel: 5 })
])
)
.pipe(gulp.dest(dist.img))
}
function devWatchers() {
browserSync.init({
proxy: "localhost/tree/",
open: true,
notify: false
})
watch(watchFiles.sass, series([devSass, devCss]))
watch(srcs.js, devJs)
watch([srcs.img, dist.img]).on("change", browserSync.reload)
watch(watchFiles.php).on("change", browserSync.reload)
}
function prod() {
return parallel(prodJs, imgOpt, series(prodSass, prodCss))
}
exports.prod = prod
exports.devWatchers = devWatchers
exports.default = devWatchers
Я ожидаю, что после запуска задачи prod папка dist будет заполнена, но на самом деле ничего не происходит. Еще раз, задание по умолчанию выполняет все.