zoukankan      html  css  js  c++  java
  • Gulp常用前端流程自动化配置

    前言

    近期的项目全部由Grunt + LESS 转向改用Gulp + SASS 进行前端开发,也就奔着Gulp那比较好用的自定义函数而来的。

    一、package.json文件配置如下:

    {
        "name": "your app's name",
        "version": "0.1.0",
        "description": "your app's description",
        "main": "index.js",
        "scripts": {
            "test": "echo "Error: no test specified" && exit 1"
        },
        "keywords": [
            "your app's keywords"
        ],
        "author": "your name",
        "license": "MIT",
        "repository": {
            "type": "git",
            "url": "your git rep address"
        },
        "devDependencies": {
            "gulp": "^3.9.1",
            "gulp-autoprefixer": "^3.1.0",
            "gulp-clean": "^0.3.2",
            "gulp-concat": "^2.6.0",
            "gulp-jshint": "^2.0.0",
            "gulp-minify-css": "^1.2.4",
            "gulp-rename": "^1.2.2",
            "gulp-ruby-sass": "^2.0.6",
            "gulp-uglify": "^1.5.3",
            "jshint": "^2.9.1"
        }
    }

    二、gulpfile.js文件配置如下:

    // 引入 gulp
    var gulp = require('gulp');
    var connect = require('gulp-connect');
    // 引入组件 var jshint = require('gulp-jshint'), // 检查脚本 sass = require('gulp-ruby-sass'), // 编译Sass minifycss = require('gulp-minify-css'), // css压缩 autoprefixer = require('gulp-autoprefixer'),// 自动添加css3前缀 concat = require('gulp-concat'), // 合并 uglify = require('gulp-uglify'), // js压缩 clean = require('gulp-clean'), // 清空文件夹 rename = require('gulp-rename'); // 重命名 // 检查脚本 gulp.task('jshint', function () { var jsSrc = './src/js/*.js', jsDst = './dist/js'; gulp.src(jsSrc) .pipe(jshint('.jshintrc')) .pipe(jshint.reporter('default')); }); // 编译Sass gulp.task('sass', function () { var cssSrc = './src/scss/*.scss', cssDst = './dist/css'; return sass(cssSrc, { style: 'expanded' }) .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) .pipe(gulp.dest(cssDst)) .pipe(rename({ suffix: '.min' })) .pipe(minifycss()) .pipe(gulp.dest(cssDst)); }); // 压缩js文件 gulp.task('jsuglify', function () { var jsSrc = './src/js/*.js', jsDst = './dist/js'; gulp.src(jsSrc) .pipe(rename({ suffix: '.min' })) .pipe(uglify()) .pipe(gulp.dest(jsDst)); }); // 合并,压缩js文件 gulp.task('jsconcat', function () { var jsSrc = './src/js/*.js', jsDst = './dist/js'; gulp.src(jsSrc) .pipe(concat('all.js')) .pipe(gulp.dest(jsDst)) .pipe(rename('all.min.js')) .pipe(uglify()) .pipe(gulp.dest(jsDst)); }); // 清空样式、js gulp.task('clean', function () { gulp.src(['./dist/css', './dist/js'], { read: false }) .pipe(clean()); });

    // 使用connect启动一个Web服务器 http://localhost:1988/ 或者查看自己电脑本地的IP
    gulp.task('webserver', function () {
      connect.server({
        livereload: true,
        port: 1988
      });
    });

    // 默认任务
    gulp.task('default', function () {
        gulp.run('jshint', 'sass', 'jsuglify', 'webserver');
    
        // 监听文件变化
        var jsSrc = './src/js/*.js',
            cssSrc = './src/scss/*.scss';
        gulp.watch([jsSrc, cssSrc], function () {
            gulp.run('jshint', 'sass', 'jsuglify');
        });
    });

    三、.jshintrc文件配置如下:

    {
        "globals": {
            "jasmine": false,
            "spyOn": false,
            "it": false,
            "console": false,
            "describe": false,
            "expect": false,
            "beforeEach": false,
            "waits": false,
            "waitsFor": false,
            "runs": false
        },
    
        "node" : true,
        "es5" : true,
        "browser" : true,
    
        "boss" : false,
        "curly": false,
        "debug": false,
        "devel": false,
        "eqeqeq": true,
        "evil": true,
        "forin": false,
        "immed": true,
        "laxbreak": false,
        "newcap": true,
        "noarg": true,
        "noempty": false,
        "nonew": false,
        "nomen": false,
        "onevar": true,
        "plusplus": false,
        "regexp": false,
        "undef": true,
        "sub": true,
        "strict": false,
        "white": true,
        "unused": true
    }
  • 相关阅读:
    js画矩形
    js加载pdf截屏生成图片调用ocr识别成文字
    C#List或者Set集合相同的key合并Value的值
    Oracle学习笔记读懂执行计划(十八)
    Java 阻塞队列
    SpringMVC(三):参数绑定、输入输出转换
    springMVC(二): @RequestBody @ResponseBody 注解实现分析
    Spring Security 4.2.3 Filters 解析
    MySQL 加锁处理分析
    Innodb semi-consistent 简介
  • 原文地址:https://www.cnblogs.com/fastmover/p/5613073.html
Copyright © 2011-2022 走看看