我如何使用 Gulp 缩小 SASS/SCSS 中的 CSS 文件并为其添加前缀
How Do I Use Gulp to Minify and Autoprefix CSS files from SASS/SCSS
我的 gulpfile 有问题,无法弄清楚出了什么问题。
问题:autoprefixer 未按预期工作,它并不总是按预期正确输出 .css 和 .min.css 文件。
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var prefix = require('gulp-autoprefixer');
var minify = require('gulp-minify-css');
var rename = require('gulp-rename');
var config = {
sassMain: 'style/Main.scss',
sassFiles: 'style/**/*.scss',
cssfiles: ['style/Main.css'],
dest: 'style',
autoprefixerOptions: {
browsers: ['last 2 versions', '> 5%']
}
};
gulp.task('compile-sass', function () {
return gulp.src(config.sassMain)
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(prefix(config.autoprefixerOptions.browsers))
.pipe(sourcemaps.write())
.pipe(gulp.dest(config.dest))
.pipe(rename({ extname: '.min.css' }))
.pipe(minify())
.pipe(sourcemaps.write())
.pipe(gulp.dest(config.dest))
});
gulp.task('default', function () {
gulp.watch(config.sassFiles, ['compile-sass']);
});
有什么想法吗?
首先,我建议将所有源文件放入文件夹 src
,将构建文件放入 build
。这在下面有效,您可以逐步添加新管道以查看破坏它的原因
gulpfile.js
var gulp = require('gulp')
var sass = require('gulp-sass')
var autoprefixer = require('gulp-autoprefixer')
var minCss = require('gulp-minify-css')
var rename = require('gulp-rename')
var config = {
srcCss : 'src/scss/**/*.scss',
buildCss: 'build/css'
}
gulp.task('build-css', function(cb) {
gulp.src(config.srcCss)
// output non-minified CSS file
.pipe(sass({
outputStyle : 'expanded'
}).on('error', sass.logError))
.pipe(autoprefixer())
.pipe(gulp.dest(config.buildCss))
// output the minified version
.pipe(minCss())
.pipe(rename({ extname: '.min.css' }))
.pipe(gulp.dest(config.buildCss))
cb()
})
gulp.task('watch', function(cb) {
gulp.watch(config.srcCss, ['build-css'])
})
gulp.task('default', ['build-css', 'watch'])
main.scss
$degrees: '50%';
.rotated {
transform: $degrees;
}
package.json
{
"name": "",
"version": "1.0.0",
"private": true,
"devDependencies": {
"gulp": "^3.9.0",
"gulp-autoprefixer": "^3.1.0",
"gulp-minify-css": "^1.2.2",
"gulp-rename": "^1.2.2",
"gulp-sass": "^2.1.0"
}
}
生成的文件结构
这是您在 运行 $ gulp
之后将拥有的内容(不包括 node_modules
文件夹)
$ tree -I node_modules
.
├── build
│ └── css
│ ├── main.css
│ └── main.min.css
├── gulpfile.js
├── package.json
└── src
└── scss
└── main.scss
4 directories, 5 files
我的环境
$ node -v
v5.1.0
$ npm -v
3.3.12
$ gulp -v
[13:39:54] CLI version 1.0.0
[13:39:54] Local version 3.9.0
我的 gulpfile 有问题,无法弄清楚出了什么问题。
问题:autoprefixer 未按预期工作,它并不总是按预期正确输出 .css 和 .min.css 文件。
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var prefix = require('gulp-autoprefixer');
var minify = require('gulp-minify-css');
var rename = require('gulp-rename');
var config = {
sassMain: 'style/Main.scss',
sassFiles: 'style/**/*.scss',
cssfiles: ['style/Main.css'],
dest: 'style',
autoprefixerOptions: {
browsers: ['last 2 versions', '> 5%']
}
};
gulp.task('compile-sass', function () {
return gulp.src(config.sassMain)
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(prefix(config.autoprefixerOptions.browsers))
.pipe(sourcemaps.write())
.pipe(gulp.dest(config.dest))
.pipe(rename({ extname: '.min.css' }))
.pipe(minify())
.pipe(sourcemaps.write())
.pipe(gulp.dest(config.dest))
});
gulp.task('default', function () {
gulp.watch(config.sassFiles, ['compile-sass']);
});
有什么想法吗?
首先,我建议将所有源文件放入文件夹 src
,将构建文件放入 build
。这在下面有效,您可以逐步添加新管道以查看破坏它的原因
gulpfile.js
var gulp = require('gulp')
var sass = require('gulp-sass')
var autoprefixer = require('gulp-autoprefixer')
var minCss = require('gulp-minify-css')
var rename = require('gulp-rename')
var config = {
srcCss : 'src/scss/**/*.scss',
buildCss: 'build/css'
}
gulp.task('build-css', function(cb) {
gulp.src(config.srcCss)
// output non-minified CSS file
.pipe(sass({
outputStyle : 'expanded'
}).on('error', sass.logError))
.pipe(autoprefixer())
.pipe(gulp.dest(config.buildCss))
// output the minified version
.pipe(minCss())
.pipe(rename({ extname: '.min.css' }))
.pipe(gulp.dest(config.buildCss))
cb()
})
gulp.task('watch', function(cb) {
gulp.watch(config.srcCss, ['build-css'])
})
gulp.task('default', ['build-css', 'watch'])
main.scss
$degrees: '50%';
.rotated {
transform: $degrees;
}
package.json
{
"name": "",
"version": "1.0.0",
"private": true,
"devDependencies": {
"gulp": "^3.9.0",
"gulp-autoprefixer": "^3.1.0",
"gulp-minify-css": "^1.2.2",
"gulp-rename": "^1.2.2",
"gulp-sass": "^2.1.0"
}
}
生成的文件结构
这是您在 运行 $ gulp
之后将拥有的内容(不包括 node_modules
文件夹)
$ tree -I node_modules
.
├── build
│ └── css
│ ├── main.css
│ └── main.min.css
├── gulpfile.js
├── package.json
└── src
└── scss
└── main.scss
4 directories, 5 files
我的环境
$ node -v
v5.1.0
$ npm -v
3.3.12
$ gulp -v
[13:39:54] CLI version 1.0.0
[13:39:54] Local version 3.9.0