首先,最基本也最重要的是,咱們須要搭建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/