gulp是一个自动化构建工具,它可以帮助你缩短开发时间,处理重复的任务,简化你的开发工作流,在web开发中它可以帮助你进行css的预处理,js的切割和最小化,即时重载等,它可以很多IDE工具进行集成,比如webstrom,你也可以把它用在PHP, .NET, Node.js, Java 开发工作中,有 1700 个插件供你使用,强大gulp让你开发更加自动化,接下来让我们体验一下gulp,并且实现在修改node express框架中的js文件时,自动重启node进程,让gulp更好的为你工作
安装gulp
$ npm install --global gulp
在项目文件中创建gulpfile.js文件 ,并且添加以下内容到gulpfile.js文件中
var gulp = require('gulp');
gulp.task('default', function() {
// place code for your default task here
console.info('start gulp..........');
});
运行gulp
$ gulp
你将会在控制台中看到
start gulp..........
在运行不带任何参数运行gulp时,它将会执行默认任务
gulp文件处理
gulp.src(globs[, options])
gulp.dest(path[, options])
在开发的过程中你可能每次修改sass文件时都要将它编译为css文件,每次都敲一个长长的命令,gulp的gulp.src,gulp.dest Api简化执行工作流程
在的项目目录中新建一个app.js文件,并写入以下内容
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('start gulp .....!');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
并且在gulpfile.js文件中添加
gulp.src('*.js')
.pipe(minify())
.pipe(gulp.dest('build'));
执行gulp,你将会看你项目当前目录下的js文件都被压缩后并输出build目录中
pipe管道方法,它会让文件流通过管道并且调用相关插件对文件进行各种处理,比如切割,压缩,sass文件编译
gulp任务
gulp.task(name[, deps], fn)
定义简单任务
gulp.task('somename', function() {
// Do stuff 执行某些操作
});
执行多个多任务
gulp.task('mytask', ['array', 'of', 'task', 'names'], function() {
// Do stuff
});
执行完mytask任务后,自动执行array,of,task,names任务
gulp监听文件变化
gulp.watch(glob[, opts], tasks)
下面将会监听项目的当前目录下所有js文件的变化,并且执行reload任务
var watcher = gulp.watch('*.js', ['reload']);
watcher.on('change', function(event) {
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});
Node Express 框架node进程自动重启
安装重启node进程插件
npm install --save-dev gulp-nodemon
在express项目的根目录gulpfile.js填写以下内容
// Gulpfile.js
var gulp = require('gulp')
var nodemon = require('gulp-nodemon');
gulp.task('develop', function () {
nodemon({ script: 'app.js'
, ext: 'html js'
, ignore: ['ignored.js']
}
).on('restart', function () {
console.log('restarted!')
})
})
gulp.task('serve',['develop'], function () {
gulp.watch(['route/*.js','*.js']);
})
gulp会监听route文件夹和项目根目录所有js文件的变化,并且重启node进程