我有一个gulp文件,我使用它包含一个创建标准非压缩 .css
文件和压缩 {{1}的文件的进程文件我曾经简单地通过缩小刚刚生成的非压缩版本来生成压缩版本,但这会导致映射指向非压缩.css
文件而不是.css
文件的问题,因为它从未实际工作过关闭.scss
个文件。
所以我更改了它,以便两个进程现在都使用.scss
文件,但是这看起来非常低效,因为它们都必须通过相同的进程才能构建各自的文件。
以下是我.scss
的相关部分:
gulpfile.js
是否有更有效的方法可以为非压缩和压缩版本创建正确的映射文件?
答案 0 :(得分:1)
我发现gulp-cssnano was super slow所以使用gulp-clean-css至少可以帮助加快速度。您可以使用gulp-if
和单独的variables
模块切换一些设置并调用相同的任务两次。所以它只调用rename
和' cssnano' if isProduction = true
和liveReload if isProduction = false
,以便您可以将其与gulp-watch
一起使用。我还没有对此进行过测试,但它应该有效!
<强> variables.js 强>
module.export = {
isProduction = false,
outputStyle = 'expanded'
};
<强> gulpfile.js 强>
var vars = require('./variables'),
runSequence = require('run-sequence')
gulpif = require('gulp-if');
gulp.task('build', () => {
runSequence('set-dev', 'css', 'set-prod', 'css');
});
gulp.task('set-dev', () => {
vars.isProduction = false;
vars.outputStyle = 'expanded';
});
gulp.task('set-prod', () => {
vars.isProduction = true;
vars.outputStyle = 'compressed';
});
gulp.task('css', function() {
return gulp.src('scss/*.scss')
.pipe(plumber()) // Deal with errors.
.pipe(sourcemaps.init()) // Wrap tasks in a sourcemap.
.pipe(sass({ // Compile Sass using LibSass.
errLogToConsole: true,
outputStyle: vars.outputStyle // Options: nested, expanded, compact, compressed
}))
.pipe(postcss([ // Parse with PostCSS plugins.
autoprefixer(ap_options),
]))
.pipe(gulpif(vars.isProduction(cssnano({ // Minify CSS
safe: true // Use safe optimizations
}))))
.pipe(gulpif(vars.isProduction(rename({ suffix: '.min' })))) // Append our suffix to the name
.pipe(sourcemaps.write('../maps')) // Create sourcemap.
.pipe(gulp.dest('./css/')) // Create style.min.css.
.pipe(gulpif(!vars.isProduction(livereload())));
});
修改强>
从一个任务输出普通和压缩的CSS。你真的只需要两个目的地
var gulp = require('gulp'),
$ = require('gulp-load-plugins')();
gulp.task('css', function() {
return gulp.src('scss/*.scss')
.pipe(plumber()) // Deal with errors.
.pipe($.sourcemaps.init()) // Wrap tasks in a sourcemap.
.pipe($.sass({ // Compile Sass using LibSass.
errLogToConsole: true,
outputStyle: "expanded" // Options: nested, expanded, compact, compressed
}))
.pipe($.sourcemaps.write()) // Create sourcemap.
.pipe(gulp.dest('./css/')) // Create style.min.css.
//** MIN VERSION HERE
.pipe($.sass({ // Compile Sass using LibSass.
errLogToConsole: true,
outputStyle: "compressed" // Options: nested, expanded, compact, compressed
}))
.pipe($.cleanCss({
keepSpecialComments: '*',
spaceAfterClosingBrace: true
}))
.pipe($.rename({ suffix: '.min' })) // Append our suffix to the name
.pipe(gulp.dest('./css/'));
});