zoukankan      html  css  js  c++  java
  • 前端自动化部署之gulp

    1.首先需要安装node+npm(这里不再叙述,网上教程一大堆)

    2.gulp全局安装:npm install -g gulp

    3.cd进入到你的项目目录,这里使用demo文件夹为我的示例项目

    4.在demo项目中新建dist和src两个文件夹,再在src文件夹下新建images,sass,js三个文件夹和index.html文件

    5.命令行cd进入到项目根目录,在项目中安装gulp模块,npm install gulp

    6.安装gulp相关需要模块

    npm install gulp-util gulp-imagemin gulp-ruby-sass gulp-minify-css gulp-jshint gulp-uglify gulp-rename gulp-concat gulp-clean gulp-livereload tiny-lr

    关于各模块介绍及连接(也可通过gulp plugins,寻找相应功能的gulp模块):

    gulp-imagemin: 压缩图片
    gulp-ruby-sass: 支持sass
    gulp-minify-css: 压缩css
    gulp-jshint: 检查js
    gulp-uglify: 压缩js
    gulp-concat: 合并文件
    gulp-rename: 重命名文件
    gulp-htmlmin: 压缩html
    gulp-clean: 清空文件夹
    gulp-livereload: 服务器控制客户端同步刷新(需配合chrome插件LiveReloadtiny-lr

    6.安装后在项目根目录下新建gulpfile.js文件,插入以下代码:

    /**
     * 组件安装
     * npm install gulp-util gulp-imagemin gulp-ruby-sass gulp-minify-css gulp-jshint gulp-uglify gulp-rename gulp-concat gulp-clean gulp-livereload tiny-lr --save-dev
     */
    
    // 引入 gulp及组件
    var gulp    = require('gulp'),                 //基础库
        imagemin = require('gulp-imagemin'),       //图片压缩
        sass = require('gulp-ruby-sass'),          //sass
        minifycss = require('gulp-minify-css'),    //css压缩
        jshint = require('gulp-jshint'),           //js检查
        uglify  = require('gulp-uglify'),          //js压缩
        rename = require('gulp-rename'),           //重命名
        concat  = require('gulp-concat'),          //合并文件
        clean = require('gulp-clean'),             //清空文件夹
        tinylr = require('tiny-lr'),               //livereload
        server = tinylr(),
        port = 35729,
        livereload = require('gulp-livereload');   //livereload
    
    // HTML处理
    gulp.task('html', function() {
        var htmlSrc = './src/*.html',
            htmlDst = './dist/';
    
        gulp.src(htmlSrc)
            .pipe(livereload(server))
            .pipe(gulp.dest(htmlDst))
    });
    
    // 样式处理
    gulp.task('css', function () {
        var cssSrc = './src/scss/*.scss',
            cssDst = './dist/css';
    
        gulp.src(cssSrc)
            .pipe(sass({ style: 'expanded'}))
            .pipe(gulp.dest(cssDst))
            .pipe(rename({ suffix: '.min' }))
            .pipe(minifycss())
            .pipe(livereload(server))
            .pipe(gulp.dest(cssDst));
    });
    
    // 图片处理
    gulp.task('images', function(){
        var imgSrc = './src/images/**/*',
            imgDst = './dist/images';
        gulp.src(imgSrc)
            .pipe(imagemin())
            .pipe(livereload(server))
            .pipe(gulp.dest(imgDst));
    })
    
    // js处理
    gulp.task('js', function () {
        var jsSrc = './src/js/*.js',
            jsDst ='./dist/js';
    
        gulp.src(jsSrc)
            .pipe(jshint('.jshintrc'))
            .pipe(jshint.reporter('default'))
            .pipe(concat('main.js'))
            .pipe(gulp.dest(jsDst))
            .pipe(rename({ suffix: '.min' }))
            .pipe(uglify())
            .pipe(livereload(server))
            .pipe(gulp.dest(jsDst));
    });
    
    // 清空图片、样式、js
    gulp.task('clean', function() {
        gulp.src(['./dist/css', './dist/js', './dist/images'], {read: false})
            .pipe(clean());
    });
    
    // 默认任务 清空图片、样式、js并重建 运行语句 gulp
    gulp.task('default', ['clean'], function(){
        gulp.start('html','css','images','js');
    });
    
    // 监听任务 运行语句 gulp watch
    gulp.task('watch',function(){
        livereload.listen();
            // 监听html
            gulp.watch('./src/*.html', function(event){
                gulp.run('html');
            })
    
            // 监听css
            gulp.watch('./src/scss/*.scss', function(){
                gulp.run('css');
            });
    
            // 监听images
            gulp.watch('./src/images/**/*', function(){
                gulp.run('images');
            });
    
            // 监听js
            gulp.watch('./src/js/*.js', function(){
                gulp.run('js');
            });
    });
    

    7.安装npm的http-server模块,快速建立http服务:npm install -g http-server

    8.安装浏览器LiveReload插件,目前我知道的关于Safari、Firefox、Chrome都有此插件,网上搜下吧,我就不提供了

    9.运行http-server,在重新打开一个命令行窗口启动gulp:

      第一个cmd窗口:

    http-server

      第二个cmd窗口:

    gulp watch
    

    这时,打开安装过livereload插件的浏览器输入localhost:8080就可以了,并点击livereload插件图标激活链接即可(http-server默认为8080端口),这时更改src文件夹下的文件(可以拿html文件更改试下【最好结构完整,不要连html,head,body都不写】)时,保存后,就会看到浏览器自动刷新了。

    关于这个插件网上大部分人介绍的都是chrome的,但我更建议用Firefox的,因为Firefox的体验更好些,因为在chrome中时保存后又是页面没变化,需要多按几下ctrl+s才会刷新页面,但在firefox下我就没有发现这个问题。

    10.到此,初步的尝试gulp前端自动化开发就完事了,但继续探索gulp的步伐才刚刚开始,如果有更好的gulp教程,希望能介绍给我和大家知道,先在这里谢过了,好了,我也要休息下,看看影视了,就到这里吧。

  • 相关阅读:
    luogu_1168: 中位数
    luogu_4762: [CERC2014]Virus synthesis
    luogu_4287:双倍回文
    回文自动机学习笔记
    luogu_3645: 雅加达的摩天楼
    python爬今日头条(ajax分析)
    Python多进程multiprocessing.Pool()
    Python爬微博(ajax+mongo)
    python实用函数之join()
    python之tuple与list
  • 原文地址:https://www.cnblogs.com/woleicom/p/4285930.html
Copyright © 2011-2022 走看看