我正在开发一个轻量级的Wordpress主题,并且我想使用所需的style.css
文件作为我唯一的CSS文件。
我的要求是:
我正在使用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-sass
或node-sass
找到任何选项来缩小和缩小保留/* … */
条评论。
有没有人为此找到解决方案?
答案 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));
});