【发布时间】:2020-05-22 08:03:52
【问题描述】:
我对 Gulp 还是很陌生,但我认为我已经掌握了它,直到我继承了一个需要一些开发工作的 WordPress 主题。
在编译 editor-styles.scss 之前,我一直在编译我的样式,没有任何问题
这是我的样式的基本文件结构:
theme-name
_static
styles
_admin
editor-styles.scss
editor-styles.min.css
admin-styles.scss
admin-styoles.min.css
login-styles.scss
login-styles.min.css
_layout
_block.scss
_header.scss
_utils
_mixins.scss
_variables.scss
styles.scss
styles.css
对 _layout 和 _utils 文件夹中任何 scss 文件的所有更改都会正确编译到主索引中的 styles.css。
当我在 _admin 文件夹中编辑 scss 文件时,我需要将其编译为同一文件夹中的 .min.css 版本。 相反,它使用 .css 文件在主主题索引中编译并创建一个新的 _admin 文件夹。
我知道为什么会这样,因为这就是我在 gulpfile.js 中告诉我的编译要做的事情 但是,我不知道如何拆分这两个来源?
这是我的 gulpfile.js:
// MODULES
var gulp = require('gulp');
var sass = require('gulp-sass');
var js = require('gulp-uglify');
var imagemin = require('gulp-imagemin');
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;
var plumber = require('gulp-plumber');
var gutil = require('gulp-util');
var autoprefixer = require('gulp-autoprefixer');
var sourcemaps = require('gulp-sourcemaps');
var rename = require('gulp-rename');
var concat = require('gulp-concat');
// COMPILE AND MINIFY SASS
gulp.task('sass', function () {
return gulp.src('./wp-content/themes/theme-name/_static/styles/**/*.scss')
.pipe(plumber())
.pipe(sass.sync().on('error', sass.logError))
.pipe(sourcemaps.write())
.pipe(gulp.dest('./wp-content/themes/theme-name'))
.pipe(browserSync.stream())
done();
});
// MINIFY JS
gulp.task('js', function () {
return gulp.src('./wp-content/themes/theme-name/_static/js/*.js')
.pipe(js())
.on('error', onError)
.pipe(rename({
suffix: '.min'
}))
.pipe(concat('all.min.js'))
.pipe(gulp.dest('./wp-content/themes/theme-name/_static/js/min/'))
.pipe(browserSync.stream())
done();
});
// IMAGES
gulp.task('imagemin', function () {
return gulp.src('./wp-content/themes/theme-name/*')
.pipe(imagemin())
.pipe(gulp.dest('./wp-content/themes/theme-name/images'))
done();
});
// BROWSERSYNC
gulp.task('browser-sync', function(done) {
browserSync.init({
proxy: 'http://localhost/project-name'
})
done();
});
// RELOAD
gulp.task('reload', function (done) {
browserSync.reload();
done();
});
// ERROR LOG
var onError = function (err) {
console.log('An error occurred:', gutil.colors.magenta(err.message));
gutil.beep();
this.emit('end');
};
// WATCH
gulp.task('watch', function() {
gulp.watch('./wp-content/themes/theme-name/_static/styles/**/*.scss', gulp.series('sass'));
gulp.watch('./wp-content/themes/theme-name/_static/js/*.js', gulp.series('js'));
gulp.watch('./wp-content/themes/theme-name/images/*', gulp.series('imagemin'));
gulp.watch('./wp-content/themes/theme-name/**/*.php').on('change', browserSync.reload);
gulp.watch('*/theme-name/**/*.php').on('change', browserSync.reload);
});
gulp.task('default', gulp.series('sass', 'js', 'imagemin', 'browser-sync', 'watch'));
在此先感谢您提供的任何帮助/建议 - 我正在用头撞墙,我确信这是我忽略的超级简单的事情。
【问题讨论】: