前言:本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp。不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情。那就直接开始吧。
第一步:安装Node
首先,最基本也最重要的是,我们需要搭建node环境。访问 http://nodejs.org ,然后点击大大的绿色的 install 按钮,下载完成后直接运行程序,就一切准备就绪。 npm 会随着安装包一起安装,稍后会用到它。
第二步:使用命令行
也许现在你还不是很了解什么是命令行——OSX中的终端(Terminal),windows中的命令提示符(Command Prompt),但很快你就会知道。它看起来没那么简单,但一旦掌握了它的窍门,就可以很方便的执行很多命令行程序,比如Sass,Yeoman和Git等,这些都是非常有用的工具。
为了确保Node已经正确安装,我们执行几个简单的命令。
1 | node -v |
npm -v
1 | 这同样能得到npm的版本号。 |
sudo npm install -g gulp
1 | ####解析: |
sudo npm install –save-dev gulp
1 | 这里,我们使用 —-save-dev 来更新package.json文件,更新 devDependencies 值,以表明项目需要依赖gulp。 |
npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename –save-dev
```
注意:1)这里是一种复合写法 安装的是gulp-jshint、gulp-sass 、gulp-concat、gulp-uglify、gulp-renam这几种我们将要用到的插件 这里是可以一个一个安装的 方法同上
2)如果上面的命令出现错误时 可以在前面添加 sudo 再试一次 .
新建gulpfile文件
现在,组件都安装完毕,我们需要新建gulpfile文件以指定gulp需要为我们完成什么任务。
gulp只有五个方法: task , run , watch , src ,和 dest ,在项目根目录新建一个js文件并命名为 gulpfile.js ,把下面的代码粘贴进去:
代码图片如下:
代码如下:
gulpfile.js
// 引入 gulp
var gulp = require(‘gulp’);
// 引入组件
var jshint = require(‘gulp-jshint’);
var sass = require(‘gulp-sass’);
var concat = require(‘gulp-concat’);
var uglify = require(‘gulp-uglify’);
var rename = require(‘gulp-rename’);
// 检查脚本
gulp.task(‘lint’, function() {
gulp.src(‘./js/.js’)
.pipe(jshint())
.pipe(jshint.reporter(‘default’));
});
// 编译Sass
gulp.task(‘sass’, function() {
gulp.src(‘./scss/.scss’)
.pipe(sass())
pipe(gulp.dest(‘./css’));
});
// 合并,压缩文件
gulp.task(‘scripts’, function() {
gulp.src(‘./js/.js’)
.pipe(concat(‘all.js’))
.pipe(gulp.dest(‘./dist’))
.pipe(rename(‘all.min.js’))
.pipe(uglify())
.pipe(gulp.dest(‘./dist’));
});
// 默认任务
gulp.task(‘default’, function(){
gulp.run(‘lint’, ‘sass’, ‘scripts’);
// 监听文件变化
gulp.watch(‘./js/.js’, function(){
gulp.run(‘lint’, ‘sass’, ‘scripts’);
});
});
现在,分段解释下这段代码。
#####引入组件
// 引入 gulp
var gulp = require(‘gulp’);
// 引入组件
var jshint = require(‘gulp-jshint’);
var sass = require(‘gulp-sass’);
var concat = require(‘gulp-concat’);
var uglify = require(‘gulp-uglify’);
var rename = require(‘gulp-rename’);
这一步,我们引入了核心的gulp和其他依赖组件,接下来,分开创建lint, sass, scripts 和 default这四个不同的任务。
#####Lint任务会检查 js/ 目录下得js文件有没有报错或警告
gulp.task(‘lint’, function() {
gulp.src(‘./js/*.js’)
.pipe(jshint())
.pipe(jshint.reporter(‘default’));
});
#####scripts任务会合并 js/ 目录下得所有得js文件并输出到 dist/ 目录,然后gulp会重命名、压缩合并的文件,也输出到 dist/ 目录。
gulp.task(‘scripts’, function() {
gulp.src(‘./js/*.js’)
.pipe(concat(‘all.js’))
.pipe(gulp.dest(‘./dist’))
.pipe(rename(‘all.min.js’))
.pipe(uglify())
.pipe(gulp.dest(‘./dist’));
});
#####default任务 使用 .run() 方法关联和运行我们上面定义的任务,使用 .watch() 方法去监听指定目录的文件变化,当有文件变化时,会运行回调定义的其他任务。
gulp.task(‘default’, function(){
gulp.run(‘lint’, ‘sass’, ‘scripts’);
gulp.watch(‘./js/*.js’, function(){
gulp.run(‘lint’, ‘sass’, ‘scripts’);
});
});
#####运行gulp任务
gulp
上面的支行代码就是直接执行gulp里面的默认任务
如果要执行其他任务 方法如下代码:
gulp sass