前面讲了很多理论,那么这一节我们将讲一些实战的例子

安装Node.js

先在命令行下输入 node -v 检查一下是否装了node, 如果没有请参考 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager 安装

然后再用 npm -v 来确保Node.js 安装正确

安装 Gulp

我们可以使用npm来安排装Gulp, 为了可以在命令行全局使用,我们安装到全局,另外确保其它的程序员可以使用,我们保存到项目的package.json里

npm install gulp -g

创建项目

创建一个文件目录,然后建立对应的文件夹

  • src — 源文件:

    • images
    • scripts
    • styles
  • build — 编译后文件输出到的生产文件夹:

    • images
    • scripts
    • styles

我们先使用npm init来创建类似Nuget package的package.config一样的文件,这样我们就知道项目依赖哪些插件,而且我们不需要把插件提交到代码库,其它程序员只需要使用 npm install 就可以安装所有配置的插件

然后我们需要创建一个gulpfile.js文件,gulp默认是调用这个文件的。

我们在目录下使用

  npm install gulp --save-dev  # 这样可以把gulp安装到本地

使用插件

比如我们想检查我们的js文件,那么我们需要安装 gulp-jshint插件

  npm install gulp-jshint --save-dev

然后添加一个test.js文件到src/scripts下,内容如下

var hi="hello"

function sayHello(){
console.log("Jack "+hi)
}

jshint 代码检查

然后我们修改gulpfile.js内容如下

// include gulp
var gulp = require('gulp'); // include plug-ins
var jshint = require('gulp-jshint'); // JS hint task
gulp.task('jshint', function() {
gulp.src('./src/scripts/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});

然后运行

gulp jshint

看控制台输出就知道我们少了分号。

代码合并压缩

我们新建一个 ./scripts/b.js, 然后我们把js文件合并然后压缩并输出到./build/scripts/all.js 下,同时移除debug信息

我们需要安装一下插件

npm install gulp-concat --save-dev
npm install gulp-strip-debug --save-dev
npm install gulp-uglify --save-dev

修改gulpfile.js

var gulp = require('gulp');
var concat = require('gulp-concat');
var stripDebug = require('gulp-strip-debug');
var uglify = require('gulp-uglify'); gulp.task('scripts', function() {
gulp.src(['./src/scripts/*.js'])
.pipe(concat('all.js'))
.pipe(stripDebug())
.pipe(uglify())
.pipe(gulp.dest('./build/scripts/'));
});

我们看到gulp已经把我们文件合并了,移除了console.log, 而且进行了压缩。

至此,已经基本上知道gulp怎么使用了,下面展示一些其它的功能的代码

npm install gulp-autoprefixer --save-dev
npm install gulp-minify-css --save-dev

示例代码

var gulp = require('gulp');
var concat = require('gulp-concat');
var stripDebug = require('gulp-strip-debug');
var uglify = require('gulp-uglify');
var autoprefix = require('gulp-autoprefixer');
var minifyCSS = require('gulp-minify-css'); gulp.task('scripts', function() {
gulp.src(['./src/scripts/*.js'])
.pipe(concat('all.js'))
.pipe(stripDebug())
.pipe(uglify())
.pipe(gulp.dest('./build/scripts/'));
}); // CSS concat, auto-prefix and minify
gulp.task('styles', function() {
gulp.src(['./src/styles/*.css'])
.pipe(concat('styles.css'))
.pipe(autoprefix('last 2 versions'))
.pipe(minifyCSS())
.pipe(gulp.dest('./build/styles/'));
}); // default gulp task
gulp.task('default', [ 'scripts', 'styles'], function() { // watch for JS changes
gulp.watch('./src/scripts/*.js', function() {
gulp.run('jshint', 'scripts');
});
// watch for CSS changes
gulp.watch('./src/styles/*.css', function() {
gulp.run('styles');
});
});

至此,大家应该熟悉gulp的使用,尽情去挖掘gulp plugin的宝藏吧。

最新文章

  1. “fixed+relative==absolute”——对BFC的再次思考
  2. C# 对象锁——Monitor
  3. 【BZOJ】1019: [SHOI2008]汉诺塔
  4. WPF控件模板
  5. php-fpm参数优化【转】
  6. 基于HTTP协议的下载功能实现
  7. openGL学习----光照
  8. vs相同变量高亮显示
  9. ~/.ssh/config 配置格式
  10. django 如何动态使用Q查询函数
  11. mysql 登录远程数据库 失败
  12. Docker 镜像上传到docker hub仓库
  13. iOS 各种控件默认高度(图示)
  14. chrome二维码插件 – w3cways QR Code Generator
  15. python synflood test
  16. Spring Security编程模型
  17. 洛谷 P4301 [CQOI2013]新Nim游戏 解题报告
  18. Win2D 中的游戏循环:CanvasAnimatedControl
  19. pthread调度策略,优先级和竞争范围
  20. 021.4 IO流——字节、字符桥梁(编码解码)

热门文章

  1. Python高手之路【六】python基础之字符串格式化
  2. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
  3. Ajax 概念 分析 举例
  4. 用神奇的currentColor制作简洁的颜色动画效果
  5. Asp.Net 操作XML文件的增删改查 利用GridView
  6. 自己写的数据交换工具——从Oracle到Elasticsearch
  7. Kafka副本管理—— 为何去掉replica.lag.max.messages参数
  8. Entity Framework 教程——DBContext
  9. iptables
  10. Git分布式版本控制教程