提问者:小点点

处理目录中的所有文件


我有一个目录(和子目录)中的css和js文件。我正在寻找不同的工具来压缩所有目录中的资产。我试图找到一种方法,让古普压缩这些目录中的所有文件,并将压缩文件保存在同一目录中,并用以下约定命名:[name]。min.css或[name]。min.js.所以example.js将成为example.min.js.

有没有办法做到这一点?

我读过以下关于这个的文章:

http://gulpjs.com/plugins/

https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md

https://github.com/gulpjs/gulp/blob/master/docs/API.md


共1个答案

匿名用户

您通常不希望在与原始文件相同的目录中生成缩小的文件。将生成脚本生成的所有文件写入单个输出目录。这种方法的一些优点是:

  • 使清理构建和从头开始重新创建所有内容变得更容易:只需删除一个输出文件夹
  • 您不必担心生成的文件会意外地被构建拾取并再次处理

但是既然你问了,这里有一个解决方案,可以在与原始文件相同的目录中创建缩小的文件。这将为每个. css. js文件创建一个.min.css.min.js文件。所有CSS文件都被假定在一个名为css(或其子目录)的目录中,所有JS文件都被假定在一个名为js(或其子目录)的目录中:

var gulp = require('gulp');
var rename = require('gulp-rename');
var cssnano = require('gulp-cssnano');
var uglify = require('gulp-uglify');

gulp.task('css', function () {
  return gulp.src([
      'css/**/*.css',
      '!css/**/*.min.css',
     ])
    .pipe(cssnano())
    .pipe(rename(function(path) {
      path.extname = ".min.css";
    }))
    .pipe(gulp.dest('css'));
});

gulp.task('js', function () {
  return gulp.src([
      'js/**/*.js',
      '!js/**/*.min.js',
     ])
    .pipe(uglify())
    .pipe(rename(function(path) {
      path.extname = ".min.js";
    }))
    .pipe(gulp.dest('js'));
});

gulp.task('default', ['css', 'js']);

注意否定模式!css/***。min.css用于防止已缩小的css在下一次构建时再次缩小。JavaScript也是如此。

我使用gulp cssnano和gulp uglify来缩小CSS和JS,但是还有很多其他选项可以作为替代品。