javascript gulp - 缩小 CSS 时排除文件

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22350791/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-27 22:59:00  来源:igfitidea点击:

gulp - exclude a file when minifying CSS

javascriptoptimizationpreprocessorgulp

提问by Oam Psy

Im new to Gulp.. I have been able to successfully install and concatenate and minify my .js and .css files, however, there is one .css file which i want to exclude - print.css

我是 Gulp 的新手。我已经能够成功安装、连接和缩小我的 .js 和 .css 文件,但是,我想排除一个 .css 文件 - print.css

Ive followed the instructions here: https://www.npmjs.org/package/gulp-ignoreinstall gulp-ignore in my local directory, and modified my gulpfile.js to:

我按照这里的说明操作: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'))
});

Within my CSS Task - Secure, i have included .pipe(exclude('Secure/css/print.css'))

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

When i run gulp minify-css-secure, the task completes but upon inspecting the new all.min.css, i cant see the contents of print.css within there too.

当我运行 gulp minify-css-secure 时,任务完成但在检查新的 all.min.css 时,我也看不到那里的 print.css 的内容。

回答by t3chn0b0y

It's unclear what you are trying to achieve. If I get it right, you want to:

目前尚不清楚您要实现的目标。如果我做对了,你想:

  1. minify all css files (including print.css)
  2. concat all files except print.css into all.min.css
  3. put minified all.min.css and print.css into destination folder
  1. 缩小所有 css 文件(包括 print.css)
  2. 将除 print.css 之外的所有文件连接到 all.min.css
  3. 将缩小的 all.min.css 和 print.css 放入目标文件夹

To achieve that, you can use StreamQueue. (source)

为此,您可以使用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'))
});

If you want to just exclude some files, you don't need gulp-ignore. Gulp supports ignore globs. Just prefix the path to exclude with bang.
Like this:

如果您只想排除某些文件,则不需要 gulp-ignore。Gulp 支持忽略全局。只需在要排除的路径前加上 bang。
像这样:

stylesAuth: ['Auth/css/*.css', '!Auth/css/print.css']