Gulp 基于Node.js的前端构建工具,Gulp有许多插件(这里是插件),使用Gulp能够实现前端代码的编译(sass、less)、压缩、图片的压缩等,固然主要是前端工程化,不过我目前只是须要压缩文件就,至于Grunt,相比于Gulp太慢了,Gulp API;css
假若有个本地目录,以下图:前端
环境:node
Windows,安装Node https://nodejs.org/en/git
安装Gulp:github
1,全局安装,执行:npm install gulp -gnpm
2,本地目录安装,cmd 到你的项目根目录,执行: npm install gulp --save-devgulp
安装插件:windows
执行: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目录下找到压缩好了的文件,以下图
windows 下删除 node_modules 文件夹会提示源路径太长没法删除什么的,找到个方法
在gulpDemo 下新建个空文件夹,随便命名:r
而后cmd 进入gulpDemo,输入命令: Robocopy /MIR r node_modules
等待命令执行完,时间可能有点长,而后删除空文件夹便可。
demo的源码来了:https://github.com/jreey/LearningDemo/tree/master/gulpDemo