前端开发自动化之gulp

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端开发自动化之gulp相关的知识,希望对你有一定的参考价值。

前端开发自动化之gulp


  在这里我们将用gulp来实现前端开发自动化,考虑到我们永远屹立的万里长城我们使用cnpm,同时本文内容以本人另一篇文章(http://www.cnblogs.com/izgl/p/6433105.html)为前提,请自行参考

  在工程目录下打开cmd

    1.cnpm install gulp -g --save-dev 
    2.cnpm install gulp --save-dev
    2.gulp -v  检测gulp有没有安装好
    3.到package.json中观察 "devDependencies": {"gulp": "^3.9.1"}  这个代码有,代表配置成功
    4. 到code下 建立一个gulpfile.js 文件
    5. 再建立两个文件  分别命名为src 和 distribution
    6  到src文件夹下 建立 index.html
    7. 将src文件夹下的  index.html 复制到  distribution

  环境的搭建需要安装以下功能插件以及安装命令行代码

  1.压缩css

  cnpm i gulp-cssnano --save-v

  2.压缩js

  cnpm i gulp-cancat --save-v

  3.压缩html

  cnpm i gulp-htmlmin --save-v

  4.混淆js

  cnpm i gulp-uglify --save-v

  5.浏览器同步测试

  //先安装

   cnpm install -g browser-sync

   cnpm i gulp-uglify --save-v

   //到src文件夹下 建立 index.html

  6.实现浏览器自动同步需要如下js代码(位于gulpfile.js)

//将index.htmlcopy到distribution
    var gulp = require(‘gulp‘);
    gulp.task(‘copy‘, function() {
    // 将你的默认的任务代码放在这
        gulp.src(‘src/index.html‘)
            .pipe(gulp.dest(‘distribution‘))
            .pipe(browserSync.reload({
                stream:true
            }));
        gulp.src(‘src/css/*.css‘)
            .pipe(gulp.dest(‘distribution/css‘))//把src/css里面css文件copy到distribution/css
        });

    var gulp = require(‘gulp‘);
    gulp.task(‘copyCss‘, function() {
    // 将你的默认的任务代码放在这
        gulp.src(‘src/css/*.css‘)
            .pipe(gulp.dest(‘distribution/css‘))//把src/css里面css文件copy到distribution/css
            .pipe(browserSync.reload({
            stream:true
        }));
    });


    //less转换成css 并且压缩
    var less = require(‘gulp-less‘);
    var cssnano = require(‘gulp-cssnano‘);
    gulp.task(‘less‘,function () {
        return gulp.src(‘src/style/*.less‘)
            .pipe(less()) //less转换成css
            .pipe(cssnano()) //压缩css
            .pipe(gulp.dest(‘distribution/css‘)) //把css文件copy到distribution/css
            .pipe(gulp.dest(‘src/css‘))//把css文件copy到src/css
            .pipe(browserSync.reload({
                stream:true
            }));
    });


    //压缩js并且混淆js
    var concat = require(‘gulp-concat‘);
    var uglify = require(‘gulp-uglify‘);
    gulp.task(‘concat‘, function() {
        return gulp.src(‘src/js/*.js‘)
            .pipe(concat(‘all.js‘)) //压缩到目标文件
            .pipe(uglify())//混淆js
            .pipe(gulp.dest(‘distribution/js‘)) //把文件copy到distribution/js
            .pipe(browserSync.reload({
                stream:true
            }))
    });


    //压缩HTML
    var htmlmin = require(‘gulp-htmlmin‘);
    gulp.task(‘minify‘, function() {
        return gulp.src(‘src/*.html‘)
            .pipe(htmlmin({collapseWhitespace: true}))
            .pipe(htmlmin({preserveLineBreaks: true}))
            .pipe(htmlmin({processConditionalComments: true}))
            .pipe(htmlmin({removeAttributeQuotes: true}))
            .pipe(htmlmin({removeComments: true}))
            .pipe(htmlmin({removeEmptyElements: true}))
            .pipe(htmlmin({removeScriptTypeAttributes: true}))
            .pipe(htmlmin({removeStyleLinkTypeAttributes: true}))
            .pipe(htmlmin({removeAttributeQuotes: true}))
            .pipe(gulp.dest(‘distribution‘))
            .pipe(browserSync.reload({
            stream:true
        }))
    });
    
    
    //自动监听文件内容变化,实现开发流自动化
    // gulp.task(‘auto‘,function () {
    //     gulp.watch(‘src/css/*.css‘,[‘less‘]);
    //     gulp.watch(‘src/js/*.js‘,[‘concat‘]);
    //     gulp.watch(‘src/style/*.less‘,[‘less‘]);
    //     gulp.watch(‘src/index.html‘,[‘minify‘]);
    // });
    
    
    
    // 代替上面“自动监听文件内容变化,实现开发流自动化”
    var browserSync = require(‘browser-sync‘).create();
    // Static server
    gulp.task(‘serve‘, function() {
        browserSync.init({
            server: {
                baseDir: "./distribution"
            }
        });
        gulp.watch(‘src/css/*.css‘,[‘less‘]);
        gulp.watch(‘src/js/*.js‘,[‘concat‘]);
        gulp.watch(‘src/style/*.less‘,[‘less‘]);
        gulp.watch(‘src/css/*.css‘,[‘copyCss‘]);
        gulp.watch(‘src/index.html‘,[‘minify‘]);
    });

 7.cmd运行gulp.serve

 

以上是关于前端开发自动化之gulp的主要内容,如果未能解决你的问题,请参考以下文章

前端工程化之gulp

前端笔试题之什么是gulp

前端自动化之gulp

前端自动化之路之gulp,node.js

构建工具gulp之入门指南

前端js和css的压缩合并之gulp