js 压缩合并

gulp = require "gulp"
jshint = require "gulp-jshint"
concat = require "gulp-concat"
uglify = require "gulp-uglify"

gulp.task "script", ->
    gulp.src ["xxx", "yyy"]
    .pipe jshint()
    .pipe concat "base.min.js"
    .pipe uglify()   # 混淆
    .pipe gulp.dest "输出目录"

 

js 压缩不合并

gulp = require "gulp"
jshint = require "gulp-jshint"
rename = require "gulp-rename"
uglify = require "gulp-uglify"
sourcemaps = require "gulp-sourcemaps"

gulp.task "script", ->
    gulp.src ["xxx.js", "!xxx.min.js", "yyy.js", "!yyy.min.js"]
    .pipe sourcemaps.init()
    .pipe jshint()
    .pipe rename
        extname: ".min.js"
    .pipe uglify
        mangle: no  # 不混淆
    .pipe sourcemaps.write "./"
    .pipe gulp.dest "./"

 

js 压缩加版本号

path = require "path"
gulp = require "gulp"
plumber = require "gulp-plumber"
jshint = require "gulp-jshint"
rename = require "gulp-rename"
uglify = require "gulp-uglify"
rev = require "gulp-rev"

gulp.task "script", ->
    gulp.src ["xxxx.js", "!xxx.min.js"]
    .pipe plumber()
    .pipe jshint()
    .pipe rename
        extname: ".min.js"
    .pipe uglify
        managle: no
    .pipe rev()          # 加版本号
    .pipe gulp.dest "压缩文件"
    .pipe rev.manifest   # 这部分解决 js html 同时压缩时映射文件被覆盖问题
        path    : path.join __dirname, "映射文件目录/#{appName}/rev-manifest.json"
        cwd     : path.join __dirname, "映射文件目录"
        merge   : yes
    .pipe gulp.dest "版本文件输出目录"

 

css 压缩合并

gulp = require "gulp"
rename = require "gulp-rename"
cssImport = require "gulp-cssimport"
cssmin = require "gulp-cssmin"

gulp.task "css", ->
    gulp.src ["xxx", "yyy"]
    .pipe rename
        extname: ".min.css"
    .pipe cssImport()
    .pipe cssmin
        compatibility: "ie7"
    .pipe gulp.dest "输出目录"

 

html 压缩

gulp = require "gulp"
plumber = require "gulp-plumber"
htmlmin = require "gulp-htmlmin"
rename = require "gulp-rename"

gulp.task "html", ->
    options =
        removeComments                  : false     # 清除HTML注释
        collapseWhitespace              : true      # 压缩HTML
        collapseBooleanAttributes       : true      # 省略布尔属性的值 <input checked="true"/> ====> <input />
        removeEmptyAttributes           : true      # 删除所有空格作属性值 <input id="" /> ====> <input />
        removeScriptTypeAttributes      : true      # 删除<script>的type="text/javascript"
        removeStyleLinkTypeAttributes   : true      # 删除<style>和<link>的type="text/css"
        minifyJS                        : true      # 压缩页面JS
        minifyCSS                       : true      # 压缩页面CSS

    gulp.src ["xxx/**/*.html", "!xxx/**/*.min.html"]
    .pipe plumber()  # 出错不跳出
    .pipe htmlmin options
    .pipe rename
        extname: ".min.html"
    .pipe gulp.dest "输出目录"

 

html 压缩加版本号

path = require "path"
gulp = require "gulp"
plumber = require "gulp-plumber"
htmlmin = require "gulp-htmlmin"
rename = require "gulp-rename"
rev = require "gulp-rev"

gulp.task "html", ->
    options =
        removeComments                  : false     # 清除HTML注释
        collapseWhitespace              : true      # 压缩HTML
        collapseBooleanAttributes       : true      # 省略布尔属性的值 <input checked="true"/> ====> <input />
        removeEmptyAttributes           : true      # 删除所有空格作属性值 <input id="" /> ====> <input />
        removeScriptTypeAttributes      : true      # 删除<script>的type="text/javascript"
        removeStyleLinkTypeAttributes   : true      # 删除<style>和<link>的type="text/css"
        minifyJS                        : true      # 压缩页面JS
        minifyCSS                       : true      # 压缩页面CSS

    gulp.src ["xxx/**/*.html", "!xxx/**/*.min.html"]
    .pipe plumber()  # 出错不跳出
    .pipe htmlmin options
    .pipe rename
        extname: ".min.html"
    .pipe rev()
    .pipe gulp.dest "压缩文件输出目录"
    .pipe rev.manifest
        path    : path.join __dirname, "映射文件输出目录/rev-manifest.json"
        cwd     : path.join __dirname, "映射文件输出目录"
        merge   : yes
    .pipe gulp.dest "版本文件输出目录"

基本上平时会用到的功能都覆盖到了,高级用法控制文件流的找时间再整理整理