• 通用版gulp


    gulpfile.js内容

    const gulp = require('gulp');
    // 压缩css文件
    const cssmin = require('gulp-clean-css');
    // 压缩html,可以压缩页面javascript、css,去除页面空格、注释,删除多余属性等操作
    const htmlmin = require('gulp-htmlmin');
    // 只操作有过修改的文件
    const changed = require('gulp-changed');
    // 压缩javascript文件,减小文件大小
    const uglify = require('gulp-uglify');
    // 文件清理
    const clean = require('gulp-clean');
    // es6转es5
    const babel = require('gulp-babel');
    // 加版本号
    const assetRev = require('gulp-asset-rev');

    // 使用gulp-htmlmin压缩html
    gulp.task('htmlminTask', function () {
    var options = {
    removeComments: true, // 清除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('src/index.html')
    .pipe(changed('dist'))
    .pipe(assetRev())
    .pipe(htmlmin(options))
    .pipe(gulp.dest('dist/'))
    gulp.src('src/html/*.html')
    .pipe(changed('dist'))
    .pipe(assetRev())
    .pipe(htmlmin(options))
    .pipe(gulp.dest('dist/html'))
    })
    // 使用gulp-clean-css压缩css文件
    gulp.task('cssminTask', function() {
    var option = {
    advanced: true,//类型:Boolean 默认:true [是否开启高级优化(合并选择器等)]
    compatibility: 'ie7',//保留ie7及以下兼容写法 类型:String 默认:''or'*' [启用兼容模式; 'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]
    keepBreaks: false,//类型:Boolean 默认:false [是否保留换行]
    keepSpecialComments: '*'//保留所有特殊前缀 当你用autoprefixer生成的浏览器前缀,如果不加这个参数,有可能将会删除你的部分前缀
    }
    gulp.src('src/style/*.css')
    .pipe(assetRev())
    .pipe(cssmin(option)) // 压缩css
    .pipe(gulp.dest('dist/style/')) // 将会在dist/css下生成index.css
    })
    // 使用gulp-uglify压缩javascript文件,减小文件大小。
    gulp.task('uglifyTask', function () {
    gulp.src(['src/js/*.js'])
    .pipe(assetRev())
    .pipe(changed('dist/js')) // 对应匹配的文件
    .pipe(babel({
    presets: ['es2015'] // es5检查机制
    }))
    // .pipe(uglify()) // 使用uglify进行压缩,并保留部分注释
    .pipe(gulp.dest('dist/js/'));
    });
    // 文件复制
    gulp.task('copyTask', function () {
    gulp.src('src/favicon.ico')
    .pipe(gulp.dest('dist/'))
    gulp.src('src/img/*')
    .pipe(gulp.dest('dist/img/'))
    gulp.src('src/img/about_us/*')
    .pipe(gulp.dest('dist/img/about_us'))
    gulp.src('src/img/active-img/*')
    .pipe(gulp.dest('dist/img/active-img'))
    gulp.src('src/img/footer/*')
    .pipe(gulp.dest('dist/img/footer'))
    gulp.src('src/img/index/*')
    .pipe(gulp.dest('dist/img/index'))
    gulp.src('src/img/zhaopin_img/*')
    .pipe(gulp.dest('dist/img/zhaopin_img'))
    gulp.src('src/fonts/*')
    .pipe(gulp.dest('dist/fonts'))
    })

    // 清理文件
    gulp.task('cleanTask', function() {
    var stream = gulp.src( 'dist', {read: false} ) // 清理maps文件
    .pipe(clean())
    return stream
    })
    // 打包
    gulp.task('dev',['cleanTask','htmlminTask', 'copyTask', 'cssminTask','uglifyTask'])

    package.json

    {
    "name": "demo",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-preset-es2015": "^6.24.1",
    "gulp": "^3.9.1",
    "gulp-asset-rev": "0.0.15",
    "gulp-babel": "^7.0.1",
    "gulp-changed": "^3.1.0",
    "gulp-clean": "^0.3.2",
    "gulp-clean-css": "^3.8.0",
    "gulp-copy": "^1.0.1",
    "gulp-htmlmin": "^3.0.0",
    "gulp-uglify": "^3.0.0"
    },
    "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
    },
    "author": "",
    "license": "ISC"
    }

  • 相关阅读:
    7617:输出前k大的数
    2991:2011
    7620:区间合并
    1688 求逆序对
    Magento How To Display Product Custom Option On list.phtml
    大二实习使用的技术汇总(中)
    codility上的问题 (22)
    poj 3321
    使用ViewPager实现左右“无限”滑动的万年历
    数论练习专题
  • 原文地址:https://www.cnblogs.com/hanhaiyuntao/p/11507689.html
Copyright © 2020-2023  润新知