首先,最基本也最重要的是,咱们须要搭建node环境。访问 nodejs.org,下载完成后直接运行程序,就一切准备就绪。npm会随着安装包一块儿安装,稍后会用到它。javascript
为了确保Node已经正确安装,咱们执行几个简单的命令。css
node -v
npm -v
若是这两行命令没有获得返回,可能node就没有安装正确,进行重装。java
首先咱们要全局安装一遍:node
sudo npm install -g gulp
运行时注意查看命令行有没有错误信息,安装完成后,你能够使用下面的命令查看gulp的版本号以确保gulp已经被正确安装。android
gulp -v
接着咱们要进去到项目的根目录再安装一遍ios
sudo npm install gulp
咱们将要使用Gulp插件来完成咱们如下任务:git
安装这些插件须要运行以下命令:github
npm install gulp-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache
更多插件能够看这里gulpjs.com/plugins/正则表达式
接着咱们要建立一个gulpfile.js在根目录下,gulp只有四个API: task
,watch
,src
,和 dest
sql
task
这个API用来建立任务,在命令行下能够输入gulp test
来执行test的任务。watch
这个API用来监放任务。src
这个API设置须要处理的文件的路径,能够是多个文件以数组的形式[main.scss, vender.scss]
,也能够是正则表达式/**/*.scss
。dest
这个API设置生成文件的路径,一个任务能够有多个生成路径,一个能够输出未压缩的版本,另外一个能够输出压缩后的版本。
// Load plugins var gulp = require('gulp'), sass = require('gulp-sass'), autoprefixer = require('gulp-autoprefixer'), minifycss = require('gulp-minify-css'), jshint = require('gulp-jshint'), uglify = require('gulp-uglify'), imagemin = require('gulp-imagemin'), rename = require('gulp-rename'), concat = require('gulp-concat'), notify = require('gulp-notify'), cache = require('gulp-cache'), livereload = require('gulp-livereload');
首先咱们编译sass,添加前缀,保存到咱们指定的目录下面,还没结束,咱们还要压缩,给文件添加 .min
后缀再输出压缩文件到指定目录,最后提醒任务完成了:
// Styles任务 gulp.task('styles', function() { //编译sass return gulp.src('stylesheets/main.scss') .pipe(sass()) //添加前缀 .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) //保存未压缩文件到咱们指定的目录下面 .pipe(gulp.dest('stylesheets')) //给文件添加.min后缀 .pipe(rename({ suffix: '.min' })) //压缩样式文件 .pipe(minifycss()) //输出压缩文件到指定目录 .pipe(gulp.dest('assets')) //提醒任务完成 .pipe(notify({ message: 'Styles task complete' })); });
// Scripts任务 gulp.task('scripts', function() { //js代码校验 return gulp.src('javascripts/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')) //js代码合并 .pipe(concat('all.js')) //给文件添加.min后缀 .pipe(rename({ suffix: '.min' })) //压缩脚本文件 .pipe(uglify()) //输出压缩文件到指定目录 .pipe(gulp.dest('assets')) //提醒任务完成 .pipe(notify({ message: 'Scripts task complete' })); });
// Images gulp.task('images', function() { return gulp.src('images/*') .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true }))) .pipe(gulp.dest('images')) .pipe(notify({ message: 'Images task complete' })); });
// Watch gulp.task('watch', function() { // Watch .scss files gulp.watch('stylesheets/*.scss', ['styles']); // Watch .js files gulp.watch('javascripts/*.js', ['scripts']); // Watch image files gulp.watch('images/*', ['images']); // Create LiveReload server livereload.listen(); // Watch any files in assets/, reload on change gulp.watch(['assets/*']).on('change', livereload.changed); });
完整代码:
/*! * gulp * $ npm install gulp-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache --save-dev */ // Load plugins var gulp = require('gulp'), sass = require('gulp-sass'), autoprefixer = require('gulp-autoprefixer'), minifycss = require('gulp-minify-css'), jshint = require('gulp-jshint'), uglify = require('gulp-uglify'), imagemin = require('gulp-imagemin'), rename = require('gulp-rename'), concat = require('gulp-concat'), notify = require('gulp-notify'), cache = require('gulp-cache'), livereload = require('gulp-livereload'); // Styles gulp.task('styles', function() { return gulp.src('stylesheets/main.scss') .pipe(sass()) .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) .pipe(gulp.dest('stylesheets')) .pipe(rename({ suffix: '.min' })) .pipe(minifycss()) .pipe(gulp.dest('assets')) .pipe(notify({ message: 'Styles task complete' })); }); // Scripts gulp.task('scripts', function() { return gulp.src('javascripts/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')) .pipe(concat('all.js')) .pipe(rename({ suffix: '.min' })) .pipe(uglify()) .pipe(gulp.dest('assets')) .pipe(notify({ message: 'Scripts task complete' })); }); // Images gulp.task('images', function() { return gulp.src('images/*') .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true }))) .pipe(gulp.dest('images')) .pipe(notify({ message: 'Images task complete' })); }); // Default task gulp.task('default', function() { gulp.start('styles', 'scripts', 'images'); }); // Watch gulp.task('watch', function() { // Watch .scss files gulp.watch('stylesheets/*.scss', ['styles']); // Watch .js files gulp.watch('javascripts/*.js', ['scripts']); // Watch image files gulp.watch('images/*', ['images']); // Create LiveReload server livereload.listen(); // Watch any files in assets/, reload on change gulp.watch(['assets/*']).on('change', livereload.changed); });
能够运行单独的任务,例如
gulp default gulp watch
也能够运行整个任务
gulp
安装Node
安装gulp
新建gulpfile.js文件
运行
最后是我本身设置的项目文件路径
|--/assets/--------压缩后样式和脚本存放的目录 |--/images/--------图片存放目录 |--/javascripts/---脚本存放目录 |--/stylesheets/---样式存放目录 |--/plugin/--------插件存放目录 |--gulpfile.js
参考连接:http://markgoodyear.com/2014/01/getting-started-with-gulp/