gulp 入门

公司项目中用的代码构建工具是gulp,现在对用到的gulp插件的用法做一下总结。

gulp是基于node.js的自动任务运行器,我们用它来完成javascript、css、sass/less、html/css、image等文件的合并和压缩,以及浏览器自动刷新、监听文件等等。

首先要安装node.js环境,然后全局安装gulp(使用的是淘宝镜像的cnpm)): 

cnpm install gulp -g

然后在项目文件夹下新建一个名为gulpfile.js的文件,这个文件就是gulp的主文件,在这个文件中编写gulp任务。

var gulp = require('gulp');

这行代码告诉node去node_modules中查找gulp包,先局部查找,找不到再去全局环境中找,然后将其赋给变量gulp,就可以使用了。

在项目文件夹下打开node命令行窗口,安装gulp包,--save-dev是为了将安装的gulp的版本信息写入package.json文件中,这个文件中保存了和项目相关的各种依赖关系,在这里就是项目所安装的插件:

cnpm install gulp --save-dev

OK,现在我们就可以使用gulp了。gulp的使用方法非常简单:

gulp.task('taskName',function(){  
  return gulp.src('文件地址')
      .pipe(导入到gulp插件中)
      .pipe(someplugin())
      .pipe(gulp.dest('要输出文件的地址'));
});

任务名称是自己起的,然后在node命令行窗口中执行命令即可:

gulp taskName

我们的项目中用到了如下插件:

var less = require('gulp-less'),//css预处理
    concat = require('gulp-concat'),//合并插件
    uglify = require('gulp-uglify'),//压缩js的插件
    minifyCss = require('gulp-minify-css'),//压缩CSS插件
    rename = require('gulp-rename'),//重命名插件
    plumber = require('gulp-plumber'),//错误监听处理
    autoprefixer = require('gulp-autoprefixer');

将它们依次安装并保存在package.json文件中后,就可以使用了。

gulp API主要有四个:gulp.src,gulp.dest,gulp.task,gulp.watch;只要合理使用这四个API就可以方便迅速的配置文件,gulp真的是很方便.

//将less文件编译成css并压缩

gulp.task('less',function(){
   return gulp.src('app/src/less/*.less')
       .pipe(autoprefixer({
          browsers:['last 2 versions','Android >= 4.0'],
          cascade:true,//是否美化属性值 默认:true 像这样:
          //-webkit-transform:rotate(45deg);
          //        transform:rotate(45deg);
          remove:true //是否去掉不必要的前缀 默认:true
       }))
       .pipe(less())
       .pipe(gulp.dest('app/src/css'))
       .pipe(minifyCss())
       .pipe(rename({suffix:'.min'}))
       .pipe(gulp.dest('app/bulid/css'));
});

//合并压缩js文件

gulp.task('concatjs',function(){
   return gulp.src('app/src/js/cat/*.js')
       .pipe(plumber())//防止出错停止
       .pipe(concat('index.js'))
       .pipe(uglify())
       .pipe(rename({suffix:'.min'}))
       .pipe(gulp.dest('app/bulid/js/'))
});

//移动文件

gulp.task('remove',function(){
   return gulp.src('app/src/*/**.html')
       .pipe(gulp.dest('app/bulid'));
});

  

//监听事件

gulp.task('watch',['remove','concatjs','less'],function(){
   gulp.watch('app/src/less/*.less',['less']);
    gulp.watch('app/src/js/**/*.js',['js']);
  ......//其它任务
});

  

  

 

posted @ 2017-05-05 17:37  Yukiee  阅读(227)  评论(0编辑  收藏  举报