前端构建工具gulp

AndyYang|阅读:221发表时间:2016-11-06 17:44:51开发工具
摘要:首先,最基本也最重要的是,我们需要搭建node环境。访问 http://nodejs.org ,然后点击大大的绿色的 install 按钮,下载完成后直接运行程序,就一切准备就绪。 npm 会随着安装包一起安装,稍后会用到它。
1、安装Node
首先,最基本也最重要的是,我们需要搭建node环境。访问 http://nodejs.org ,然后点击大大的绿色的 install 按钮,下载完成后直接运行程序,就一切准备就绪。 npm 会随着安装包一起安装,稍后会用到它。

安装完:
node -v
npm -v
可以查看node的版本,和node版本安装工具的版本。

2、安装gulp
cd切换到项目目录:
npm install -g gulp
-g表示在全局环境安装,以便任何项目都能使用它。
安装完gulp后
gulp -v
查看是否能正常显示版本号。

3、安装所需扩展
在项目目录下放package.json
{
  "name": "cf",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "del": "^2.2.2",
    "gulp": "^3.9.1",
    "gulp-amd-optimize": "^0.4.3",
    "gulp-autoprefixer": "^3.1.1",
    "gulp-clean-css": "^2.0.13",
    "gulp-concat": "^2.6.0",
    "gulp-css-spritesmith": "0.0.5",
    "gulp-imagemin": "^3.0.3",
    "gulp-jshint": "^2.0.1",
    "gulp-livereload": "^3.8.1",
    "gulp-notify": "^2.2.0",
    "gulp-rename": "^1.2.2",
    "gulp-ruby-sass": "^2.1.0",
    "gulp-uglify": "^2.0.0",
    "gulp.spritesmith": "^6.2.1",
    "jshint": "^2.9.4"
  }
}
包可以根据自己需要选择性修改。
npm install运行,自动安装package.json中的扩展。

4、新建Gulpfile文件,运行gulp
var gulp = require('gulp'),
    jshint = require('gulp-jshint'),
    uglify = require('gulp-uglify'),
    concat = require('gulp-concat'),
    rename = require('gulp-rename'),
    notify = require('gulp-notify'),
    amdOptimize = require('gulp-amd-optimize'),
    minifycss = require('gulp-clean-css'),
    imagemin = require('gulp-imagemin'),
    autoprefixer = require('gulp-autoprefixer'),
    sass = require('gulp-ruby-sass'),
    spritesmith = require('gulp.spritesmith'),
    cssSprite = require('gulp-css-spritesmith'),
    livereload = require('gulp-livereload'),
    del = require('del');

//清理文件
gulp.task('clean', function(cb) {
    del(['dist'], cb);
});

//处理css文件,合并压缩
gulp.task('css',function(){
    return gulp.src( ['css/*.css'])
        .pipe(autoprefixer({
            borwsers: ['last 2 versions'," > 5% "]
        }))
        .pipe(concat('main.css'))
        .pipe(gulp.dest('dist/css'))
        .pipe(rename({suffix: '.min'}))
        .pipe(minifycss())
        .pipe(gulp.dest('dist/css'))
        .pipe(notify({ message: 'Css task complete' }));
});

gulp.task('cfjs-chat', function() {
  return gulp.src(['js/socket.io.js','js/json2.js','js/face.js','js/chat.js'])
    .pipe(jshint('.jshintrc'))
    .pipe(jshint.reporter('default'))
    //.pipe(amdOptimize( 'main'))
    .pipe(concat('cf-chat.js'))
    .pipe(gulp.dest('dist/js'))
    .pipe(rename('cf-chat.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest('dist/js'))
    .pipe(uglify())
    .pipe(notify({ message: 'Scripts task complete' }));
});

//合并压缩JS文件
gulp.task('scripts',['js'],function(){
    return gulp.src('js/util/*.js')
        .pipe(uglify())
        .pipe(gulp.dest('dist/js/util'))
});

//压缩图片
gulp.task('img',function () {
    gulp.src('images/min/*')
        .pipe(imagemin({
            progressive: true
        }))
        .pipe(gulp.dest('dist/img'))
        .pipe(notify({ message: 'Images task complete' }));
});

//css精灵
gulp.task('sprite',function ( cb ) {
    var spriteData = gulp.src('dist/img/*.png').pipe(spritesmith({
        imgName: 'sprite.png',
        cssName: 'sprite.css',
        padding: 2
    }));
    return spriteData.pipe(gulp.dest('sprite'));
});

//文件监控
gulp.task( 'watch',function(){
    gulp.watch( 'css/**/*.*',[ 'css' ] );
    gulp.watch( 'js/**/*.*',[ 'scripts' ] );
});

有需要要完整gulpfile.js的可以留言。 不过这些都是比较老的技术了,现在流行的是:webpack。

本文为AndyYang原创,转载请注明出处!
如果您觉得好,可以打赏作者:

已有0条评论

昵称:
邮箱:

  • 最新评论

反馈
微信订阅号