Gulp壓縮前端CS,JS,圖片文件

jopen 9年前發布 | 47K 次閱讀 前端技術 gulp

 

Gulp 基于Node.js的前端構建工具,Gulp有許多插件( 這里是插件 ),使用Gulp可以實現前端代碼的編譯(sass、less)、壓縮、圖片的壓縮等,當然主要是前端工程化,不過我目前只是需要壓縮文件就,至于Grunt,相比于Gulp太慢了, Gulp API

假如有個本地目錄,如下圖:

Gulp壓縮前端CS,JS,圖片文件

環境:

Windows,安裝Node https://nodejs.org/en/

安裝Gulp:

1,全局安裝,執行:npm install gulp -g

2,本地目錄安裝,cmd 到你的項目根目錄,執行: npm install gulp --save-dev

安裝插件:

執行:npm install gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache del --save-dev

加載插件:

在根目錄創建 gulpfile.js

// 引入 gulp及組件
var gulp = require('gulp'),
  autoprefixer = require('gulp-autoprefixer'),
  minifycss = require('gulp-minify-css'),       //壓縮css
  jshint = require('gulp-jshint'),          //js代碼校驗
  uglify = require('gulp-uglify'),          //壓縮JS
  imagemin = require('gulp-imagemin'),      //壓縮圖片
  rename = require('gulp-rename'),          //合并js文件
  concat = require('gulp-concat'),
  notify = require('gulp-notify'),
  cache = require('gulp-cache'),
  livereload = require('gulp-livereload'),
  del = require('del');

建立任務:

// Styles
gulp.task('styles', function() {
  return gulp.src('src/styles/*.css')
    .pipe(rename({ suffix: '.min' }))
    .pipe(minifycss())
    .pipe(gulp.dest('dist/styles'))
    .pipe(notify({ message: 'Styles task complete' }));
});
// Scripts
gulp.task('scripts', function() {
  return gulp.src('src/scripts/**/*.js')
    .pipe(jshint('.jshintrc'))
    .pipe(jshint.reporter('default'))
    .pipe(concat('main.js'))
    .pipe(rename({ suffix: '.min' }))
    .pipe(uglify())
    .pipe(gulp.dest('dist/scripts'))
    .pipe(notify({ message: 'Scripts task complete' }));
});
// Images
gulp.task('images', function() {
  return gulp.src('src/images/**/*')
    .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))
    .pipe(gulp.dest('dist/images'))
    .pipe(notify({ message: 'Images task complete' }));
});

// Clean  任務執行前,先清除之前生成的文件
gulp.task('clean', function(cb) {
    del(['dist/assets/css', 'dist/assets/js', 'dist/assets/img'], cb)
});

// Default task  設置默認任務
gulp.task('default', ['clean'], function() {
    gulp.start('styles', 'scripts', 'images');
});

監聽文件:

// Watch
gulp.task('watch', function() {
  // Watch .scss files
  gulp.watch('src/styles/**/*.css', ['styles']);
  // Watch .js files
  gulp.watch('src/scripts/**/*.js', ['scripts']);
  // Watch image files
  gulp.watch('src/images/**/*', ['images']);
  // Create LiveReload server
  livereload.listen();
  // Watch any files in dist/, reload on change
  gulp.watch(['dist/**']).on('change', livereload.changed);

});

然后在 cdm執行任務就可以了,例如:壓縮css執行 [ gulp styles ],等待執行完成,你就可以在dist目錄下找到壓縮好了的文件,如下圖

Gulp壓縮前端CS,JS,圖片文件

看看壓縮后和壓縮前的大小:

Gulp壓縮前端CS,JS,圖片文件

還是很給力的吧。

windows 下刪除 node_modules 文件夾會提示源路徑太長無法刪除什么的,找到個方法

在gulpDemo 下新建個空文件夾,隨便命名:r

然后cmd 進入gulpDemo,輸入命令: Robocopy /MIR r node_modules

等待命令執行完,時間可能有點長,然后刪除空文件夾即可。

demo的源碼來了: https://github.com/jreey/LearningDemo/tree/master/gulpDemo

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!