gulp完成javascript压缩合并,css压缩

最近需要对项目进行优化,主要是对js的压缩合并和css文件的压缩,查找相关资料之后发现gulp可以实现相关的功能,特此分享一下使用心得。

1.安装gulp

gulp是基于Node.js的前端构建工具。所以首先需要安装nodejs,安装nodejs。
完成nodejs安装之后,需要使用npm安装gulp。
先安装全局gulp

npm install -g gulp

后在项目根目录下安装本地gulp。
好的,现在gulp已经安装完成了,但是gulp本身不提供js压缩合并等功能,需要使用gulp的相关插件。目前只需要完成js压缩合并和css文件压缩的功能,先安装相应的插件:
1.css压缩    gulp-minify-css
2.js压缩    gulp-uglify
3.js合并    gulp-concat
4.图片压缩 gulp-imagemin
1)png压缩 imagemin-optipng
2)jpg压缩 imagemin-jpegtran
3.html压缩 gulp-minify-html
由于压缩之前需要对js代码进行代码检测,压缩完成之后需要加上min的后缀,我们还需要安装另外两个插件:
5.重命名   gulp-rename
6.js代码检测  gulp-jshint (或gulp-jslint)
在项目根目录下执行以下命令:

npm install  gulp-Name  --save-dev

安装好的插件会出现在上面提到的node_modules文件夹中。

2.使用gulp

ok,现在可以使用gulp了,在项目根目录下创建gulpfile.js文件。
在gulpfile.js中添加以下代码

var gulp = require('gulp'),
var minifycss = require('gulp-minify-css'),
var concat = require('gulp-concat'),
var uglify = require('gulp-uglify'),
var rename = require('gulp-rename'),
var jshint=require('gulp-jshint');
var uglify = require("gulp-uglify");//压缩js
var minifyCss = require("gulp-minify-css");//压缩css
var minifyHtml = require("gulp-minify-html");//压缩html
var concat = require("gulp-concat");//合并文件
var less = require("gulp-less");//less编译
var imagemin = require('gulp-imagemin');//压缩图片
var pngquant = require('imagemin-optipng'); //png图片压缩插件
var jpgquant = require('imagemin-jpegtran'); //jpg图片压缩插件

var rimraf = require('rimraf');//删除文件
var rename = require('gulp-rename');//重命名

// 压缩js
gulp.task('minify-js', function () {
  gulp.src(yeoman.app+'/scripts/**/*.js') // 要压缩的js文件
      .pipe(uglify())  //使用uglify进行压缩,更多配置请参考:
      .pipe(rename({suffix: '.min'}))//添加min后缀
      .pipe(gulp.dest('dist/js')); //压缩后的路径
});
// 压缩css
gulp.task('minify-css', function () {
  gulp.src('app/styles/*.css') // 要压缩的css文件
      .pipe(minifyCss()) //压缩css
      .pipe(rename({suffix: '.min'}))//添加min后缀
      .pipe(gulp.dest(yeoman.dist+'/css'));
});
gulp.task('mini-css', function () {
  gulp.src('css/*.css') // 要压缩的css文件
      .pipe(minifyCss()) //压缩css
      .pipe(rename({suffix: '.min'}))//添加min后缀
      .pipe(gulp.dest('dest/css'));
});
// 压缩HTML
gulp.task('minify-html', function () {
  gulp.src('app/views/**/*.html') // 要压缩的html文件
      .pipe(minifyHtml()) //压缩
      .pipe(rename({suffix: '.min'}))//添加min后缀
      .pipe(gulp.dest('dist/views'));
});
// 合并文件
gulp.task('concat', function () {
  gulp.src('js/*.js')  //要合并的文件
      .pipe(concat('all.js'))  // 合并匹配到的js文件并命名为 "all.js"
      .pipe(uglify())  //使用uglify进行压缩,更多配置请参考:
      .pipe(rename({suffix: '.min'}))//添加min后缀
      .pipe(gulp.dest('dist/js'));
});
// 使用less
gulp.task('compile-less', function () {
  gulp.src('less/*.css')
      .pipe(less())
      .pipe(gulp.dest('dist/css'));
});
// 图片压缩ipg
gulp.task('mini-jpg', function () {
  return gulp.src('app/images/*')
      .pipe(imagemin({
        progressive: true,
        use: [jpgquant()] //使用jpgquant来压缩jpg图片
      }))
      .pipe(gulp.dest('dist/images'));
});
gulp.task('mini-png', function () {
  return gulp.src('app/images/*')
      .pipe(imagemin({
        progressive: true,
        use: [pngquant()] //使用jpgquant来压缩jpg图片
      }))
      .pipe(gulp.dest('dist/images/png'));
});

相应的package.json文件

{
  "name": "gulp",
  "private": true,
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "2.3.1",
    "gulp-cache": "^0.2.10",
    "gulp-connect": "^2.2.0",
    "gulp-filter": "^2.0.2",
    "gulp-imagemin": "^2.4.0",
    "gulp-jshint": "^1.11.1",
    "gulp-less": "^3.1.0",
    "gulp-load-plugins": "^0.10.0",
    "gulp-minify-css": "^1.2.0",
    "gulp-minify-html": "^1.0.6",
    "gulp-ng-annotate": "^1.0.0",
    "gulp-plumber": "^1.0.1",
    "gulp-rename": "~1.2.0",
    "gulp-rev": "^5.0.1",
    "gulp-rev-replace": "^0.4.2",
    "gulp-uglify": "^1.2.0",
    "gulp-useref": "^3.0.0",
    "gulp-util": "^3.0.6",
    "gulp-watch": "^4.2.4",
    "jshint-stylish": "^1.0.0",
    "lazypipe": "^0.2.4",
    "open": "0.0.5",
    "rimraf": "^2.4.0",
    "run-sequence": "^1.1.1",
    "wiredep": "^2.2.2"
  },
  "engines": {
    "node": ">=0.10.0"
  }
}

(如果Js文件有问题时,会出现相应的error提示,按照提示的错误信息修改即可)

参考网页:http://www.cnblogs.com/2050/p/4198792.html

自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
评论