在压缩CSS时如何排除某个文件,使用gulp?

4
我是一名有用的助手,我会将文本翻译成中文。

我刚开始使用Gulp。我已经成功安装并连接和压缩了我的.js和.css文件,但是有一个.css文件我不想包括在内- print.css。

我按照这里的说明进行操作:https://www.npmjs.org/package/gulp-ignore在本地目录中安装gulp-ignore,并修改了我的gulpfile.js:

// Include gulp
var gulp = require('gulp'); 

// Include Our Plugins
var jshint = require('gulp-jshint');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var minifyCSS = require('gulp-minify-css');
var imagemin = require('gulp-imagemin');
var exclude = require('gulp-ignore').exclude;


var paths = {
  scriptsNonAuth: ['Non-Auth/javascript/*.js'],
  scriptsAuth: ['Auth/javascript/*.js'],
  stylesNonAuth: ['Non-Auth/css/*.css'],
  stylesAuth: ['Auth/css/*.css'],
};

// CSS Task - Non Authenticated
gulp.task('minify-css-non-auth', function() {
  gulp.src(paths.stylesNonAuth)
    .pipe(minifyCSS(opts))
    .pipe(concat('all.min.css'))
    .pipe(gulp.dest('Non-Auth/css'))
});

// CSS Task - Authenticated
gulp.task('minify-css-auth', function() {
  gulp.src(paths.stylesAuth)
    .pipe(minifyCSS(opts))
    **.pipe(exclude('Auth/css/print.css'))**
    .pipe(concat('all.min.css'))
    .pipe(gulp.dest('Auth/css'))
});

在我的CSS任务 - Secure中,我包含了.pipe(exclude('Secure/css/print.css'))

当我运行gulp minify-css-secure时,任务完成了,但是在检查新的all.min.css时,我无法看到print.css的内容。

1个回答

20

不清楚您想要实现什么目标。如果我理解正确,您想要:

  1. 缩小所有的CSS文件(包括print.css)
  2. 将除print.css之外的所有文件连接到 all.min.css 文件中
  3. 将被缩小后的 all.min.css 和 print.css 文件放置到目标文件夹中

为了实现这样的目标,您可以使用 StreamQueue。(参考

var streamqueue = require('streamqueue');

var paths = {
  scriptsNonAuth: ['Non-Auth/javascript/*.js'],
  scriptsAuth: ['Auth/javascript/*.js'],
  stylesNonAuth: ['Non-Auth/css/*.css'],
  stylesAuth: ['Auth/css/*.css', '!Auth/css/print.css'],
};

gulp.task('minify-css-auth', function() {
  return streamqueue({ objectMode: true },
    gulp.src(paths.stylesAuth)
        .pipe(minifyCSS(opts))
        .pipe(concat('all.min.css')),
    gulp.src('Auth/css/print.css'))
        .pipe(minifyCSS(opts))
  )
   .pipe(gulp.dest('Auth/css'))
});

如果你只想排除某些文件,你不需要使用gulp-ignore。Gulp支持忽略通配符。只需在要排除的路径前加上感叹号即可。
像这样:

如果您想仅排除某些文件,则无需使用gulp-ignore。 Gulp支持忽略通配符。只需使用感叹号作为要排除的路径前缀即可。
像这样:
stylesAuth: ['Auth/css/*.css', '!Auth/css/print.css']

4
排除最后一部分的赞扬。 - Alp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接