简单介绍一下
一种前端自动化构建工具,方便对一堆前端文件进行批量处理,比如:
- js压缩,var x,xname,混淆
- 合并
- css压缩
- html压压缩
其常见的框架grunt
,webpack
...等,为什么要使用gulp
呢,主要是轻量,简单的批处理完全够用。
gulp的安装
使用npm
进行安装
npm install gulp-cli -g #全局安装gulp命令行
核心概念
管道流水线pipe
gulp
处理文件就像是流水线一样,写好处理功能,然后使用.pipe()
连接组装,最后,放入task
来实现。
task
gulp
中是一个个任务
的形式来实现功能。
task('任务名',function(){
//.....
});
src
对要处理的文件路径的指定
src('./*.js')
dest
指定处理后的文件的输出路径.
dest('./minjs/')
watch
watch('./*.js',['任务名1','任务名2']);
run
执行指定的任务。
run('任务名');
开始使用
- 在要使用项目位置中通过
npm
非全局安装gulp
npm install gulp --save-dev
- 还需要在当前项目根目录添加一个
gulpfile.js
文件来写具体的任务代码,参考如下:
var gulp = require('gulp');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
var useref = require('gulp-useref');
var filter = require('gulp-filter');
var zip = require('gulp-zip');
var clean = require('gulp-clean');
gulp.task('clean-dist', function () {
return gulp.src('dist', {read: false})
.pipe(clean());
});
gulp.task('copy', function() {
return gulp.src(['src/**/*', '!**/*.js'])
.pipe(gulp.dest('dist/h5'))
});
gulp.task("rev", function() {
var indexHtmlFilter = filter(['**/*', '!**/index.html'], { restore: true });
return gulp.src(["src/*.js","src/**/*.js","src/**/*.html"])
.pipe(useref()) // Concatenate with gulp-useref
.pipe(indexHtmlFilter)
.pipe(rev()) // Rename the concatenated files (but not index.html)
.pipe(indexHtmlFilter.restore)
.pipe(revReplace()) // Substitute in new filenames
.pipe(gulp.dest('dist/h5'));
});
gulp.task('zip', () =>
gulp.src('dist/**/*')
.pipe(zip('h5.zip'))
.pipe(gulp.dest('dist'))
);
gulp.task('default', ['copy', 'rev']);
gulp
的一些插件
也是使用npm安装
- 对js代码进行压缩 gulp-uglify
- 对代码进行合并 gulp-concat
- 对css进行压缩 gulp-cssnano
- 对html进行压缩 gulp-htmlmin
举个例子gulpfile.js
var fileinclude = require('gulp-file-include');
// 引用其他文件
function fileincludeTask() {
return gulp
.src('main/*.html')
.pipe(fileinclude({
prefix: '@@',
basepath: '@file'
}))
.pipe(gulp.dest('dist'));
}
exports.fileincludeTask = fileincludeTask;
命令行
gulp fileincludeTask #执行任务
评论