gulp入门教程

https://segmentfault.com/a/1190000002698606

第1步:安装Node
首先,最基本也最重要的是,我们需要搭建node环境。访问 nodejs.org,下载完成后直接运行程序,就一切准备就绪。npm会随着安装包一起安装,稍后会用到它。

为了确保Node已经正确安装,我们执行几个简单的命令。

node -v
npm -v
如果这两行命令没有得到返回,可能node就没有安装正确,进行重装。

第2步:安装gulp
首先我们要全局安装一遍:

npm install -g gulp
运行时注意查看命令行有没有错误信息,安装完成后,你可以使用下面的命令查看gulp的版本号以确保gulp已经被正确安装。

gulp -v
接着我们要进去到项目的根目录再安装一遍

npm install gulp --save-dev
第3步:新建gulpfile.js文件
我们将要使用Gulp插件来完成我们以下任务:

sass的编译(gulp-sass)
自动添加css前缀(gulp-autoprefixer)
压缩css(gulp-minify-css)
js代码校验(gulp-jshint)
合并js文件(gulp-concat)
压缩js代码(gulp-uglify)
压缩图片(gulp-imagemin)
自动刷新页面(gulp-livereload)
图片缓存,只有图片替换了才压缩(gulp-cache)
更改提醒(gulp-notify)
安装这些插件需要运行如下命令:

npm install gulp-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache --save-dev
更多插件可以看这里gulpjs.com/plugins/

接着我们要创建一个gulpfile.js在根目录下,gulp只有四个API: task,watch,src,和 dest

task这个API用来创建任务,在命令行下可以输入 gulp test 来执行test的任务。
watch这个API用来监听任务。
src这个API设置需要处理的文件的路径,可以是多个文件以数组的形式[main.scss, vender.scss],也可以是正则表达式/**/*.scss。
dest这个API设置生成文件的路径,一个任务可以有多个生成路径,一个可以输出未压缩的版本,另一个可以输出压缩后的版本。

3.1 加载插件:
// Load plugins
var gulp = require(‘gulp’),
sass = require(‘gulp-sass’),
autoprefixer = require(‘gulp-autoprefixer’),
minifycss = require(‘gulp-minify-css’),
jshint = require(‘gulp-jshint’),
uglify = require(‘gulp-uglify’),
imagemin = require(‘gulp-imagemin’),
rename = require(‘gulp-rename’),
concat = require(‘gulp-concat’),
notify = require(‘gulp-notify’),
cache = require(‘gulp-cache’),
livereload = require(‘gulp-livereload’);
3.2 建立任务:
3.2.1 编译sass、自动添加css前缀和压缩
首先我们编译sass,添加前缀,保存到我们指定的目录下面,还没结束,我们还要压缩,给文件添加 .min 后缀再输出压缩文件到指定目录,最后提醒任务完成了:

// Styles任务
gulp.task(‘styles’, function() {
//编译sass
return gulp.src(‘stylesheets/main.scss’)
.pipe(sass())
//添加前缀
.pipe(autoprefixer(‘last 2 version’, ‘safari 5’, ‘ie 8’, ‘ie 9’, ‘opera 12.1’, ‘ios 6’, ‘android 4’))
//保存未压缩文件到我们指定的目录下面
.pipe(gulp.dest(‘stylesheets’))
//给文件添加.min后缀
.pipe(rename({ suffix: ‘.min’ }))
//压缩样式文件
.pipe(minifycss())
//输出压缩文件到指定目录
.pipe(gulp.dest(‘assets’))
//提醒任务完成
.pipe(notify({ message: ‘Styles task complete’ }));
});
3.2.2 js代码校验、合并和压缩
// Scripts任务
gulp.task(‘scripts’, function() {
//js代码校验
return gulp.src(‘javascripts/.js’)
.pipe(jshint())
.pipe(jshint.reporter(‘default’))
//js代码合并
.pipe(concat(‘all.js’))
//给文件添加.min后缀
.pipe(rename({ suffix: ‘.min’ }))
//压缩脚本文件
.pipe(uglify())
//输出压缩文件到指定目录
.pipe(gulp.dest(‘assets’))
//提醒任务完成
.pipe(notify({ message: ‘Scripts task complete’ }));
});
3.2.3 图片压缩
// Images
gulp.task(‘images’, function() {
return gulp.src('images/
’)
.pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))
.pipe(gulp.dest(‘images’))
.pipe(notify({ message: ‘Images task complete’ }));
});
3.2.4 事件监听
// Watch
gulp.task(‘watch’, function() {
// Watch .scss files
gulp.watch(‘stylesheets/.scss’, [‘styles’]);
// Watch .js files
gulp.watch('javascripts/
.js’, [‘scripts’]);
// Watch image files
gulp.watch(‘images/’, [‘images’]);
// Create LiveReload server
livereload.listen();
// Watch any files in assets/, reload on change
gulp.watch(['assets/
’]).on(‘change’, livereload.changed);
});
完整代码:

/*!

  • gulp
  • $ npm install gulp-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache --save-dev
    /
    // Load plugins
    var gulp = require(‘gulp’),
    sass = require(‘gulp-sass’),
    autoprefixer = require(‘gulp-autoprefixer’),
    minifycss = require(‘gulp-minify-css’),
    jshint = require(‘gulp-jshint’),
    uglify = require(‘gulp-uglify’),
    imagemin = require(‘gulp-imagemin’),
    rename = require(‘gulp-rename’),
    concat = require(‘gulp-concat’),
    notify = require(‘gulp-notify’),
    cache = require(‘gulp-cache’),
    livereload = require(‘gulp-livereload’);
    // Styles
    gulp.task(‘styles’, function() {
    return gulp.src(‘stylesheets/main.scss’)
    .pipe(sass())
    .pipe(autoprefixer(‘last 2 version’, ‘safari 5’, ‘ie 8’, ‘ie 9’, ‘opera 12.1’, ‘ios 6’, ‘android 4’))
    .pipe(gulp.dest(‘stylesheets’))
    .pipe(rename({ suffix: ‘.min’ }))
    .pipe(minifycss())
    .pipe(gulp.dest(‘assets’))
    .pipe(notify({ message: ‘Styles task complete’ }));
    });
    // Scripts
    gulp.task(‘scripts’, function() {
    return gulp.src('javascripts/
    .js’)
    .pipe(jshint())
    .pipe(jshint.reporter(‘default’))
    .pipe(concat(‘all.js’))
    .pipe(rename({ suffix: ‘.min’ }))
    .pipe(uglify())
    .pipe(gulp.dest(‘assets’))
    .pipe(notify({ message: ‘Scripts task complete’ }));
    });
    // Images
    gulp.task(‘images’, function() {
    return gulp.src(‘images/’)
    .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))
    .pipe(gulp.dest(‘images’))
    .pipe(notify({ message: ‘Images task complete’ }));
    });
    // Default task
    gulp.task(‘default’, function() {
    gulp.start(‘styles’, ‘scripts’, ‘images’);
    });
    // Watch
    gulp.task(‘watch’, function() {
    // Watch .scss files
    gulp.watch('stylesheets/
    .scss’, [‘styles’]);
    // Watch .js files
    gulp.watch(‘javascripts/.js’, [‘scripts’]);
    // Watch image files
    gulp.watch('images/
    ’, [‘images’]);
    // Create LiveReload server
    livereload.listen();
    // Watch any files in assets/, reload on change
    gulp.watch([‘assets/*’]).on(‘change’, livereload.changed);
    });
    第4步:运行
    可以运行单独的任务,例如

gulp default
gulp watch
也可以运行整个任务

gulp
总结
安装Node
安装gulp
新建gulpfile.js文件
运行
最后是我自己设置的项目文件路径

|–/assets/--------压缩后样式和脚本存放的目录
|–/images/--------图片存放目录
|–/javascripts/—脚本存放目录
|–/stylesheets/—样式存放目录
|–/plugin/--------插件存放目录
|–gulpfile.js

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值