zoukankan      html  css  js  c++  java
  • gulp使用

    gulpfile.js:从开发到生产,功能有:压缩合并、添加版本号

    var gulp = require('gulp'),                                      //引入gulp核心文件包
        concat = require('gulp-concat'),                            //- 多个文件合并为一个
        minifyCss = require('gulp-minify-css'),                   //- 压缩CSS为一行
        rev = require('gulp-rev'),                                //- 对文件名加MD5后缀
        revCollector = require('gulp-rev-collector'),              //- 路径替换
        cleanCSS = require('gulp-clean-css'),                      //清除css
        uglify = require('gulp-uglify'),                           //- 压缩js为一行
        rename = require('gulp-rename'),                           //重命名
        jshint=require('gulp-jshint'),                             //js语法检查
        htmlmin = require('gulp-htmlmin'),                         //html压缩
        connect = require('gulp-connect'),                         //服务器包 
        less = require('gulp-less');
        path = require('path'),
        domSrc = require('gulp-dom-src'),
        cheerio = require('gulp-cheerio'),
        gulpSequence = require('gulp-sequence'),
        imagemin = require('gulp-imagemin'),//图片压缩
        notify = require('gulp-notify'),
        pngcrush = require('imagemin-pngcrush'),
        runSequence = require('run-sequence'),
        del = require('del');
    
    //[开发使用]
    // 将less文件编译为css文件
    gulp.task('less',function(){
        gulp.src('app/less/*.less')
            .pipe(less())
            .pipe(gulp.dest('app/css'));
    })
    //监督任务一:less文件改变更新css文件
    gulp.task('changeLess',function(){
        gulp.watch('app/**/*.less',['less']);
    })
    
    //开启服务器,并监听实时更新文件
    gulp.task('serve',function(){
        connect.server({
            root:'app',
            livereload:true
        });
        gulp.watch('app/**/*.*',['reload','changeLess']);
    })
    //监督任务二:自动更新
    gulp.task('reload',function(){
        gulp.src('app/**/*.*')
            .pipe(connect.reload());
    });
    
    //[生产使用]
    //压缩,合并css 到对应目录下
    gulp.task('minifycss', function() {
        return gulp.src('app/css/*.css')    //需要操作的文件
            .pipe(concat('main.css'))    //合并所有css到main.css
            .pipe(gulp.dest('app/css'))       //输出到文件夹
            .pipe(rename({suffix: '.min'}))   //rename压缩后的文件名
            .pipe(cleanCSS({compatibility: 'ie7'}))   //执行压缩
            .pipe(gulp.dest('dist/css'));   //输出文件夹
    });
    
    //压缩,合并 js到对应目录下
    gulp.task('minifyjs', function() {
        return gulp.src('app/js/*.js')      //需要操作的文件
            .pipe(concat('main.js'))    //合并所有js到main.js
            .pipe(gulp.dest('app/js'))       //输出到文件夹
            .pipe(rename({suffix: '.min'}))   //rename压缩后的文件名
            .pipe(uglify())    //压缩
            .pipe(gulp.dest('dist/js'));  //输出
    });
    
    //压缩html到对应目录下
    gulp.task('minifyhtml', function() {
      return gulp.src('app/*.html')
        .pipe(htmlmin({collapseWhitespace: true}))
        .pipe(gulp.dest('dist'));
    });
    
    //压缩img 到对应目录下
    gulp.task('minifyimg', function() {
      return gulp.src('app/images/*')
        .pipe(imagemin({
            progressive: true,
            svgoPlugins: [{removeViewBox: false}],
            use: [pngcrush()]
        }))
        .pipe(gulp.dest('dist/images/'));
        
    });
    
    
    
    //更改生产文件下引入css和js链接
    gulp.task('newindex', function() {
        return gulp.src('dist/index.html')
            .pipe(cheerio(function ($) {
                $('script').remove();
                $('link').remove();
                $('body').append('<script src="js/main.min.js"></script>');
                $('head').append('<link rel="stylesheet" href="css/main.min.css">');
            }))
            .pipe(gulp.dest('dist/'));
    });
    
    //一次性执行多个任务
    gulp.task('allmini',['minifycss','minifyjs','minifyhtml','minifyimg']);
    
    //生产时只需要执行这一个任务'product'
    gulp.task('product',gulpSequence('allmini','newindex'));
    
    
    //生产使用基础上添加版本 //定义css、js源文件路径
    var cssSrc = 'dist/css/*.css',
        jsSrc = 'dist/js/*.js';
    
    
    //CSS生成文件hash编码并生成 rev-manifest.json文件名对照映射
    gulp.task('revCss', function(){
        return gulp.src(cssSrc)
            .pipe(rev())
            .pipe(gulp.dest('view/css'))
            .pipe(rev.manifest())
            .pipe(gulp.dest('rev/css'));
    });
    
    
    //js生成文件hash编码并生成 rev-manifest.json文件名对照映射
    gulp.task('revJs', function(){
        return gulp.src(jsSrc)
            .pipe(rev())
            .pipe(gulp.dest('view/js'))
            .pipe(rev.manifest())
            .pipe(gulp.dest('rev/js'));
    });
    
    
    //Html替换css、js文件版本
    gulp.task('revHtml', function () {
        return gulp.src(['rev/**/*.json', 'dist/*.html'])
            .pipe(revCollector())
            .pipe(gulp.dest('view'))
            .pipe(notify({ message: 'all task ok' }));
    });
    
    
    //加版本
    gulp.task('dev', function (done) {
        runSequence(
            ['revCss'],
            ['revJs'],
            ['revHtml']
            );
    });
    
    //开发之前清除文件
    gulp.task('clean', function (cb) {
      del([
        // 这里我们使用一个通配模式来匹配 `mobile` 文件夹中的所有东西
        'dist/**/*',
        'view/**/*',
        'rev/*',
        // 我们不希望删掉这个文件,所以我们取反这个匹配模式
      ], cb);
    });
    
    
    
    
    //任务排序打包
    gulp.task('default', function (done) {
        runSequence(
            ['product'],
            ['dev']
            );
    });
  • 相关阅读:
    雷少东_百度百科
    180China丨the Agency for Brand Engagement and Experience
    建立可信连接
    【行业干货】2013中国零售商排名
    30万左右买什么车好?_百度知道
    极速入职-拉勾网-专注互联网职业机会
    python
    关于幂律分布的一个笔记_哈克_新浪博客
    幂律分布_百度百科
    使用firefox直接 打开pdf文件可以破解禁止打印的功能
  • 原文地址:https://www.cnblogs.com/yunrundetizi/p/5889855.html
Copyright © 2011-2022 走看看