如何使用gulp-sass生成有效的缩小WP style.css文件?

时间:2017-03-02 10:21:58

标签: wordpress sass gulp

我正在开发一个轻量级的Wordpress主题,并且我想使用所需的style.css文件作为我唯一的CSS文件。

我的要求是:

  1. 必须有Wordpress stylesheet header
  2. 和它上面的CSS代码应该缩小。
  3. 我正在使用SASS,而我正在使用gulp-sass进行转换。现在,我正在做:

    /* gulpfile.babel.js */
    
    const base = {
        src: 'src',
        dest: 'my-theme'
    };
    
    const routes = {
        sass: {
            src: `${base.src}/scss/style.scss`,
            dest: `${base.dest}/`
        }
    };
    
    gulp.task('styles', () => {
        return gulp.src(routes.sass.src)
        .pipe(plumber((err) => {
            console.error(err.message);
        }))
        .pipe(sass())
        .pipe(autoprefixer())
        .pipe(gulp.dest(routes.sass.dest));
    });
    

    我的style.scss包含:

    /*
    Theme Name: My Theme Name
    Theme URI: http://example.com/my-theme
    Author: My name
    Author URI: http://example.com/
    Description: My theme description
    Version: 1.0
    License: GNU General Public License v3 or later
    License URI: http://www.gnu.org/licenses/gpl-3.0.html
    Tags: custom, lightweight
    Text Domain: textdomain
    
    This theme, like WordPress, is licensed under the GPL.
    Use it to make something cool, have fun, and share what you've learned with others.
    */
    @import 'common';
    

    这有效,但它不符合我的第二个要求(缩小的CSS)。如果我添加

    .pipe(sass({outputStyle: 'compressed'}))
    
    然后我失去了标题。我无法在gulp-sassnode-sass找到任何选项来缩小和缩小保留/* … */条评论。

    有没有人为此找到解决方案?

2 个答案:

答案 0 :(得分:1)

我的建议是你可以使用gulp-concat和run-sequence来达到你的要求。您可以将标题分成另一个文件,等待sass任务完成,然后将它和标题文件连在一起。

var gulp = require('gulp');
var runSequence = require('run-sequence');
var concat = require('gulp-concat');

/**
 * Gulp task to run your current styles and 
 * the task to append the header in sequence
 */
gulp.task('stylesWithHeader', function(callback) {
    runSequence('styles', 'prepend-header', callback);
});

/**
 * Gulp task to generate the styles.css file with theme header
 */
gulp.task('prepend-header', function(callback) {
    return gulp.src([HEADER_FILE.txt, COMPILED_STYLES_WITHOUT_HEADER.css])
        .pipe(concat("styles.css"))
        .pipe(gulp.dest(PATH_TO_YOUR_TEMPLATE))
        ;
});

Gulp concat:https://www.npmjs.com/package/gulp-concat

Gulp run sequence:https://www.npmjs.com/package/run-sequence

答案 1 :(得分:1)

请勿使用compress选项缩小您的CSS。请改用gulp-cssnano插件。无论如何它都更好,它支持discardComments个选项,您可以将其设置为false以保留评论:

var cssnano = require('gulp-cssnano');

gulp.task('styles', () => {
    return gulp.src(routes.sass.src)
    .pipe(plumber((err) => {
        console.error(err.message);
    }))
    .pipe(sass())
    .pipe(autoprefixer())
    .pipe(cssnano({discardComments:false}))
    .pipe(gulp.dest(routes.sass.dest));
});