gulp初体验

1、下载nodejs

2、使用npm在全局环境安装gulp

npm install -g gulp

全局安装gulp后,还需要在每个要使用gulp的项目中都单独安装一次。把目录切换到你的项目文件夹中,然后在命令行中执行:

npm install gulp
3、使用webstorm创建一个项目(可以是一个空的文件夹),在settings里面输入node找到Node.js and NPM在Node interpreter里面选择你的node安装目录的node.exe,点击ok。

4、在项目文件夹根目录下新建一个js文件gulpfile.js,内容如下:

/**
 * Created by Administrator on 2016/8/21.
 */
var gulp=require("gulp");
var uglify=require("gulp-uglify");//js文件压缩
var minifycss=require("gulp-minify-css");//css文件压缩
var minifyhtml=require("gulp-minify-html");//html文件压缩
var concat=require("gulp-concat");//文件合并
var less=require("gulp-less");//编译less
//var sass=require("gulp-sass");//编译sass(目前暂时用不到)
var rename=require("gulp-rename");//重命名
var jshint=require("gulp-jshint");//语法检查
/*var imagemin=require("gulp-imagemin");//图片压缩*/
var livereload=require("gulp-livereload");//自动刷新(需安装谷歌的livereload chrome extension插件(http://www.cnplugins.com/devtool/livereload/download.html))
//编译less
gulp.task('compile-less', function () {
    gulp.src('less/*.less')
        .pipe(less())
        .pipe(gulp.dest('css')) //输出到css目录
        .pipe(livereload());//刷新css
});
//合并文件
gulp.task('concat', function () {
    gulp.src('js/*.js')  //要合并的文件
        .pipe(concat('all.js'))  // 合并匹配到的js文件并命名为 "all.js"
        .pipe(gulp.dest('build'))
        .pipe(uglify()) //执行压缩
        .pipe(rename('all.min.js')) //重命名
        .pipe(gulp.dest('build')); //在build目录输出压缩版
});
//js代码检查
gulp.task('jshint', function () {
    gulp.src('js/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter()); // 输出检查结果
});
//html代码压缩
gulp.task('minify-html', function () {
    gulp.src('html/*.html') // 要压缩的html文件
        .pipe(minifyhtml()) //压缩
        .pipe(gulp.dest('html'))
        .pipe(livereload());
});
//css代码压缩
gulp.task('minify-css', function () {
    gulp.src('css/*.css') // 要压缩的css文件
        .pipe(minifycss()) //压缩css
        .pipe(gulp.dest('css'));
});

gulp.task('watch', function() {
    livereload.listen(); //要在这里调用listen()方法
    gulp.watch(['less/*.less','html/*.html'], ['compile-less','minify-html']);//监听less文件和html文件的变化,发生变化后,执行后面的任务
});
gulp.task('default', ['jshint', 'watch']);
//将根目录里面所有文件夹里面的js文件,压缩合并后,每一个文件夹里面的所有js合并后生成一个压缩版文件和未压缩版文件
var fs = require('fs');
var path = require('path');
var merge = require('merge-stream');
var scriptsPath = 'src/scripts';
function getFolders(dir) {
    return fs.readdirSync(dir)
        .filter(function(file) {
            return fs.statSync(path.join(dir, file)).isDirectory();
        });
}

gulp.task('scripts', function() {
    var folders = getFolders(scriptsPath);

    var tasks = folders.map(function(folder) {
        // 拼接成 foldername.js
        // 写入输出
        // 压缩
        // 重命名为 folder.min.js
        // 再一次写入输出
        return gulp.src(path.join(scriptsPath, folder, '/*.js'))
            .pipe(concat(folder + '.js'))
            .pipe(gulp.dest(scriptsPath))
            .pipe(uglify())
            .pipe(rename(folder + '.min.js'))
            .pipe(gulp.dest(scriptsPath));
    });
    return merge(tasks);
});
var react=require('gulp-react');//jsx转换
var babel=require('gulp-babel');//将es6代码转换为es5版本
gulp.task('translate',function(){
    return gulp.src('./src/myui.js')
        .pipe(react())
        .pipe(babel({
            presets: ['babel-preset-es2015']
        }))
        .pipe(gulp.dest('./dest'))
});

5、gulp常用api说明:

5.1、gulp.src(globs,options);//options为可选参数,一般用不到

读取globs目录下的文件

globs是一个文件匹配模式,类似正则表达式(详情可以参考:http://www.cnblogs.com/2050/p/4198792.html)

5.2、gulp.dest(path,options)

将流文件(nodejs中的stream)写入path路径

5.3、gulp.task(name,tasksArray,fn)

定义一个任务,name为任务名,tasks是当前定义的任务需要依赖的其他任务,为一个数组。当前定义的任务会在所有依赖的任务执行完毕之后执行。如没有依赖,可省略。

fn为任务函数,把任务要执行的代码都写在这里。该参数也是可选

5.4、gulp.watch(glob,options,tasks)

glob为要监视的文件匹配模式,规则和用法与gulp.src()方法中的glob相同

tasks为文件变化后要执行的任务,为一个数组

6、关于nodejs的pipe()方法

readable.pipe(destination[, options])

pipe方法将一个写入流附加到readable里了,这个写入流会自动转换流模式(只读流,写入流),然后把这个流里面的数据写入到destination里面。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊哈前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值