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']);
......//其它任务
});

浙公网安备 33010602011771号