gulp的简单使用

1、在你的项目目录下安装package.json(请先看看自己有没有安装nodejs)

npm install

2、gulp全局安装

cnpm install gulp -g

3、根据需求调节gulpfile.js(gulpfile.js如下,可根据需求删除与添加)

// lastUpdateDate: 2016.09 .17 
// description: gulp是通过构建一个个任务机械化的帮我们完成重复性质的工作
'use strict'
// 在gulpfile中先载入gulp包,因为这个包提供了一些API
var gulp = require('gulp');
// 用来压缩hmtl的依赖包
var htmlmin = require('gulp-htmlmin');
// 用来压缩css的依赖包
var cssnano = require('gulp-cssnano');
// 最小化css文件
var minifycss = require('gulp-minify-css');
// 用于缓存的依赖包
var cache = require('gulp-cache');
// 在html里面用来压缩图片的依赖包
var imagemin = require('gulp-imagemin');
var pngcrush = require('imagemin-pngcrush');
// 用来合并js或css的依赖包
var concat = require('gulp-concat');
// 用来压缩js的依赖包
var uglify = require('gulp-uglify');
// plumber配合jshint在控制台打印JS错误日记并继续把gulp流程走完的依赖包
var plumber = require('gulp-plumber');
// 给css文件自动加上浏览器前缀
var autoprefixer = require('gulp-autoprefixer');
// 用来提醒任务是否执行完毕的依赖包
var notify = require('gulp-notify');
// 引入了nodemon来做express服务器的自动重启功能
var nodemon = require('gulp-nodemon');
var browserSync = require('browser-sync');
var bs = browserSync.create();
// path
var path = require('path');
// sourcemaps...
var sourcemaps = require('gulp-sourcemaps');
//path的定义  start
var basedir = './';
var publicdir = './public';
var filepath = {
    'views': path.join(basedir, 'views/**/*.html'),
    'css': path.join(publicdir, '*/css/**/*.css'),
    'js': path.join(publicdir, '*/js/**/*.js'),
    'routes': path.join(basedir, '/routes/**/*.js')
};

/*
 * 用来拷贝和压缩views下html的任务  start
 */
gulp.task('views', function() {
    return gulp.src(['./views/**/*.html'])
        // 最小化html
         .pipe(htmlmin({
             collapseWhitespace:true,
             collapseBooleanAttributes:true,
             removeAttributeQuotes:true,
             removeComments:true,
             removeEmptyAttributes:true,
             removeScriptTypeAttributes:true,
             removeStyleLinkTypeAttributes:true
         }))
        // 指定生成到哪个目录下去
        .pipe(gulp.dest('./dist/views/'))
        .pipe(bs.reload({stream:true}))
});
/*
 * 用来拷贝和压缩views下html的任务  end
 */

/*
 * public的下的css同步拷贝  end
 */
gulp.task('styles', function() {
    return gulp.src('./public/css/**/*.css')
        //加上兼容性前缀
        .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
        //压缩css
        .pipe(cssnano())
        // 最小化CSS代码
        .pipe(minifycss())
        // 指定生成到哪个目录下去
        .pipe(gulp.dest('./dist/public/css'))
        .pipe(bs.reload({stream:true}))
});
/*
 * public的下的css同步拷贝  end
 */

/*
 * 图片同步拷贝和压缩  start
 */
gulp.task('images', function() {
  return gulp.src('./public/images/**/*')
      .pipe(imagemin({
          progressive: true,
          svgoPlugins: [{removeViewBox: false}],
          use: [pngcrush()]
      }))
    .pipe(gulp.dest('./dist/public/images'))
});
/*
 * 图片同步拷贝和压缩  end
 */

/*
 * 同步拷贝public下的js文件到dist目录的public下   start
 */
gulp.task('scripts', function() {
    return gulp.src('./public/js/**/*.js')
        // 对报错的js代码进行错误提示
        .pipe(plumber())
        // JS文件合并,这里不需要直接先注释,根据实际需求来就行了
        //.pipe(concat('all.js'))
        // JS代码压缩  如果我们写的js是语法错误之类的
        .pipe(uglify())
        // 指定生成到哪个目录下去
        .pipe(gulp.dest('./dist/public/js'))
        .pipe(bs.reload({stream:true}))
});
/*
 * 同步拷贝public下的js文件到dist目录的public下  end
 */

/*
 * 同步拷贝public下的js文件下插件样式及图片到dist目录的public下   start
 */
gulp.task('lib', function() {
    return gulp.src(['./public/js/**/*.css','./public/js/**/*.png','./public/js/**/*.jpg'])
        // 指定生成到哪个目录下去
        .pipe(gulp.dest('./dist/public/js'))
        .pipe(bs.reload({stream:true}))
});
/*
 * 同步拷贝public下的js文件下插件样式及图片到dist目录的public下  end
 */

/*
 * router的同步拷贝和压缩  start
 */
gulp.task('routes', function() {
    return gulp.src('./routes/**/*.js')
        // 对报错的js代码进行错误提示
        .pipe(plumber())
        // JS文件合并,这里不需要直接先注释,根据实际需求来就行了
        //.pipe(concat('all.js'))
        // JS代码压缩
        .pipe(uglify())
        // 指定生成到哪个目录下去
        .pipe(gulp.dest('./dist/routes/'))
        .pipe(bs.reload({stream:true}))
});
/*
 * router的同步拷贝和压缩  end
 */

/*
 * 重要配置文件的拷贝  start
 */
gulp.task('configFile', function() {
    return gulp.src(['./*.js', '!./gulpfile.js'])
        // 对报错的js代码进行错误提示
        .pipe(plumber())
        // JS文件合并,这里不需要直接先注释,根据实际需求来就行了
        //.pipe(concat('all.js'))
        // JS代码压缩
        .pipe(uglify())
        // 指定生成到哪个目录下去
        .pipe(gulp.dest('./dist/'))
        .pipe(bs.reload({stream:true}))
});
/*
 * 重要配置文件的拷贝  start
 */

/*
 * 同步和拷贝bin目录过去  start
 */
gulp.task('bin', function() {
    return gulp.src('./bin/*')
    .pipe(gulp.dest('./dist/bin/'))
});
/*
 * 同步和拷贝bin目录过去  end
 */
//字体文件
// gulp.task("font",function(){
// 	return gulp.src(['./sass/*/stylesheets/**/*.eot','./sass/*/stylesheets/**/*.svg','./sass/*/stylesheets/**/*.ttf','./sass/*/stylesheets/**/*.woff'])
// 	.pipe(gulp.dest('./dist/public/'))
// 	.pipe(gulp.dest('./public/'))
// 	.pipe(bs.stream());
// })


/*
 * 通过gulp一下自动执行默认的任务  start 
 */
gulp.task('default', ['views','styles','images','scripts','lib','routes','configFile'],function(cb){
	//开启nodemon自动重启服务
	  var started = false;
	  return nodemon({
	    script: './bin/www'
	  }).on('start', function() {
	    if (!started) {
	      cb();
	      started = true;
	    }
	  });
});
/*
 * 通过gulp一下自动执行默认的任务  end
 */

4、当然少不了安装各个依赖,为了方便直接引用淘宝的镜像

npm install cnpm -g --registry=https://registry.npm.taobao.org

5、最后直接输入gulp就可以自动打包压缩了

posted @ 2017-03-10 10:29  kimingw  阅读(175)  评论(0编辑  收藏  举报