gulp 学习——es6+sass+rev

gulp 环境搭建

git地址: https://github.com/Ez-Z/gulp

1. 安装gulp

cnpm i -g gulp  //安装全局gulp

2.gulp Api 学习

var gulp = requrie('gulp'); //引入gulp
    
    gulp.task('taskName',['task1', 'task2', ...],function(){
        gulp.src('fileSrc',[,opts]) //gulp.src文件路径可为路径字符串的数组,opts(可选)
            .pipe(fn()) //执行
            .pipe(gulp.dest('destSrc',[,opts]))//gulp.dest文件写入路径,opts(可选)
    });/*
        gulp.task 有三个参数:
        1.任务名称;(必填)
        2.按顺序异步执行任务数组;(可选)
        3.任务执行函数,等数组内任务执行完后再执行;(必填)
        */
    gulp.task('watch',function(){
       gulp.watch(['fileSrc1',...],[,opts],['task1',...],function(evt){
           
       }) 
        /*
          gulp.watch 有四个参数:
          1.需要监听的文件;(必填)
          2.opts;(可选)
          3.tasks;(可选,3. 4.必须填一个)
          4.cb(evt);(可选)
        */
    })

3.npm 初始化和依赖包安装

cnpm init 
cnpm i --save-dev gulp
//一些依赖包和版本号如下
    "babel-preset-es2015": "^6.24.1",//babel标准es2015
    "babel-preset-stage-0": "^6.24.1",//es7以及以上
    "browserify": "^14.4.0", //打包工具
    "babelify": "^7.3.0", //用于打包时用
    "gulp": "^3.9.1",
    "gulp-babel": "^6.1.2", //babel
    "gulp-clean": "^0.3.2", //用于清理文件
    "gulp-concat": "^2.6.1", //合并文件
    "gulp-cssnano": "^2.1.2", //压缩css
    "gulp-livereload": "^3.8.1", //自动刷新页面
    "gulp-rename": "^1.2.2", //重命名
    "gulp-sass": "^3.1.0", //sass
    "gulp-uglify": "^3.0.0", //压缩丑化js
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0"

cnpm i --save 
//版本控制依赖
    "gulp-rev": "^7.1.2",
    "gulp-rev-collector": "^1.2.2",

4.配置gulpfile

const gulp = require('gulp');

const babel = require('gulp-babel');

const babelify = require('babelify');

const uglify = require('gulp-uglify');
const buffer = require('vinyl-buffer');
const rename = require('gulp-rename');
const cssnano = require('gulp-cssnano');
const concat = require('gulp-concat');

const browserify = require('browserify'); //打包
const source = require('vinyl-source-stream'); //

const sass = require('gulp-sass'); //sass 依赖

const livereload  = require('gulp-livereload'); //文件改变刷新页面

const rev = require('gulp-rev');
const revCollector = require('gulp-rev-collector');

const clean = require('gulp-clean');

//清除文件
gulp.task('clean', function(){
  return gulp.src(['dist/js/','dist/css/','dist/*.html','dist/rev'])
    .pipe(clean());
});

// 编译并压缩js rev
gulp.task('convertJS', function(){
  gulp.src(['app/js/**/*.js'])
    .pipe(babel({
      presets: ['es2015','stage-0']
    }))
    .pipe(uglify())
    .pipe(rev())
    .pipe(gulp.dest('dist/js'))
    .pipe(rev.manifest())
    .pipe(gulp.dest('dist/rev/js'))
});

// 合并并压缩css rev
gulp.task('convertCSS', function(){
  gulp.src(['app/css/*.css','app/css/*.scss'])
	.pipe(sass().on('error', sass.logError))
	.pipe(concat('app.css'))
	.pipe(cssnano())
	.pipe(rev())
	.pipe(gulp.dest('dist/css'))
	.pipe(rev.manifest())
    .pipe(gulp.dest('dist/rev/css'));
});


gulp.task('testRev',function() {
	return gulp.src(['dist/rev/**/*.json','app/*.html'])
		.pipe(revCollector())
		.pipe(gulp.dest('dist'));

});

// 打包
// gulp.task("build", function () {
// 	var b = browserify({
// 		entries: "app/js/app.js"
// 	});

// 	return b.transform(babelify, {  //此处babel的各配置项格式与.babelrc文件相同
// 		  presets: [
// 			'es2015',  //转换es6代码
// 			'stage-0',  //指定转换es7代码的语法提案阶段
// 		  ]
// 		})
// 		.bundle()
// 		.pipe(source("app.js"))
// 		.pipe(buffer())
// 		.pipe(sourcemaps.init())
// 		.pipe(uglify())
// 		.pipe(sourcemaps.write('./maps'))
// 		.pipe(gulp.dest("dist/js"));
// });

// 监视文件变化,自动执行任务
gulp.task('watch', function(){
  	gulp.watch(['app/css/*.css','app/css/*.scss'], ['convertCSS']);
  	gulp.watch(['app/js/*.js'], ['convertJS'];
});

gulp.task('min', ['convertCSS', 'convertJS']);

// 执行 gulp clean 
// gulp min
// gulp testRev
问题:gulp异步执行和执行顺序需要思考

5.文件目录结构

//执行前
├── app
│   ├── app.html
│   ├── css
│   │   ├── app.css
│   │   └── style.scss
│   ├── index.html
│   └── js
│       ├── app.js
│       ├── bbb.js
│       └── ccc.js
├── dist
│   ├── css
│   └── js
├── gulpfile.js
└── package.json
//执行后

├── app
│   ├── app.html
│   ├── css
│   │   ├── app.css
│   │   └── style.scss
│   ├── index.html
│   └── js
│       ├── app.js
│       ├── bbb.js
│       └── ccc.js
├── dist
│   ├── app.html
│   ├── css
│   │   └── app-186b633846.css
│   ├── index.html
│   ├── js
│   │   ├── app-63eba027ee.js
│   │   ├── bbb-d070049c74.js
│   │   └── ccc-903a18ed22.js
│   └── rev
│       ├── css
│       │   └── rev-manifest.json
│       └── js
│           └── rev-manifest.json
├── gulpfile.js
└── package.json
posted @ 2017-06-29 17:08  一纸折寒  阅读(262)  评论(0编辑  收藏  举报