淘寶鏡像:$ npm install -g cnpm --registry=https://registry.npm.taobao.org
/* * @Author: liheyao * @Date: 2016-10-25 10:56:42 * @Last Modified by: liheyao * @Last Modified time: 2016-10-25 16:15:32 */ //引入gulp和組件 var gulp = require('gulp'),//gulp基礎庫 gulpLoadPlugins = require('gulp-load-plugins'),//引入依賴插件 del = require('del'),// 文件夾刪除清空 // 實時刷新 tinylr = require('tiny-lr'), browerSync = require('browser-sync'), server = tinylr(), port = 3080; // load all gulp plugins var plugins = gulpLoadPlugins(), //package.json中的gulp依賴項 env = process.env.NODE_ENV || 'development',//開發環境 dev 仍是pro isProduction = env == 'production', ipJS = isProduction ? "src/js/dev.js":"src/js/pro.js";//根據不一樣的開放環境引入不一樣的js /** css,js緩存配置 **/ var time = new Date(); var timeStamp = dateToString(time); var timeStamp_prod = time.valueOf(); function dateToString(time) { var year = time.getYear() + 1900; var month = time.getMonth() + 1; //月 var day = time.getDate(); //日 var hh = time.getHours(); //時 var mm = time.getMinutes(); //分 var str= year + "-"; if(month < 10){ str += "0"; } str += month + "-"; if(day < 10) str += "0"; str += day + " "; str += hh + ':'; str += mm; return(str); } //html處理 gulp.task('html',function(){ gulp.src('src/*.html') // 判斷 若是是pro 壓縮html .pipe(plugins.if(isProduction, plugins.htmlmin({ collapseWhitespace: true,//空白 removeComments: true//註釋 }))) // 判斷 若是是pro 加時間戳 .pipe(plugins.if(isProduction, plugins.replace(/_VERSION_/gi, '.min_'+timeStamp_prod), plugins.replace(/_VERSION_/gi, '.min'))) .pipe(gulp.dest('dist/')) // 實時監聽 .pipe(browerSync.reload({ stream: true })); }); //sass gulp.task('sass',function () { // 多個路徑用中括號 gulp.src(['src/sass/*.scss','!src/sass/_*.scss']) // 編輯scss .pipe(plugins.sass()) // 合併css .pipe(plugins.concat('index.css')) // 判斷 若是是pro 壓縮 .pipe(plugins.if(isProduction,plugins.minifyCss())) // 判斷 若是是pro 加時間戳 .pipe(plugins.if(isProduction,plugins.rename({suffix:'.min_'+timeStamp_prod}),plugins.rename({suffix:'.min'}))) .pipe(gulp.dest('dist/css')) .pipe(browerSync.reload({ stream: true })); }); //圖片處理 gulp.task('image',function(){ gulp.src('src/images/*.*') .pipe(plugins.imagemin()) .pipe(gulp.dest('dist/images')) .pipe(browerSync.reload({ stream: true })); }); //js處理 gulp.task('js',function () { gulp.src(['src/js/*.js',"!"+ipJS+""]) .pipe(plugins.babel()) .pipe(plugins.concat('main.js')) .pipe(plugins.if(isProduction,plugins.uglify())) .pipe(plugins.if(isProduction,plugins.rename({suffix:'.min_'+timeStamp_prod}),plugins.rename({suffix:'.min'}))) .pipe(gulp.dest('dist/js')) .pipe(browerSync.reload({ stream:true })); }); gulp.task('libs',function() { gulp.src('src/libs/**/*') .pipe(gulp.dest('dist/libs')) .pipe(browerSync.reload({ stream:true })); }) //清空圖片 樣式 js gulp.task('clean', del.bind(null, ['dist/*'])); // 實時監聽 gulp.task('serve',function(){ browerSync({ server:{ baseDir:['dist'] }, port: port },function(err,bs){ console.log(bs.options.getIn(["urls", "local"])); }); gulp.watch('src/sass/*.scss',['sass']); gulp.watch('src/js/*.js',['js']); gulp.watch('src/*.html',['html']); gulp.watch('src/images/*.*',['image']); }); gulp.task('build',['clean'],function() { gulp.start('libs','sass','js','html','image') })
package.jsonjavascript
{ "name": "gulp", "version": "1.0.0", "description": "", "main": "gulpfile.js", "scripts": { "watch": "gulp serve", "dev": "cross-env gulp build", "build": "cross-env NODE_ENV=production gulp build" }, "author": "lhy", "license": "ISC", "devDependencies": { "babel-preset-es2015": "^6.16.0", "browser-sync": "^2.17.5", "cross-env": "^3.1.2", "del": "^2.2.2", "gulp": "^3.9.1", "gulp-babel": "^6.1.2", "gulp-clean": "^0.3.2", "gulp-concat": "^2.6.0", "gulp-htmlmin": "^3.0.0", "gulp-if": "^2.0.1", "gulp-imagemin": "^3.0.3", "gulp-load-plugins": "^1.3.0", "gulp-minify-css": "^1.2.4", "gulp-rename": "^1.2.2", "gulp-replace": "^0.5.4", "gulp-sass": "^2.3.2", "gulp-sourcemaps": "^2.2.0", "gulp-uglify": "^2.0.0", "rename": "^1.0.3", "tiny-lr": "^1.0.2" } }
1.命令行建立npm的配置文件css
nam inithtml
2.添加一個gulp的依賴java
npm install gulp - - save-devnode
3.在項目根目錄下添加一個gulpfile.js文件 ,這個文件名是固定不變的git
4.在gulpfile.js中添加任務github
eg: 1.less編譯 壓縮 合併(沒有必要,通常預處理css都是導包)web
2.js合併 壓縮 混淆chrome
3.img複製npm
4.html壓縮
//先載入gulp的包 var gulp = require(‘gulp’); //註冊任務 //安裝 gulp-less gulp-concat 等包 //引入gulp-less 包 轉css用的 var less = require(‘gulp-less’); //引入gulp-cssnano包 壓縮用的 var cssnano = require(‘gulp-cssnano’); gulp.task(‘style’,function(){ gulp.src([’src/styles/*.less’,’!src/styles/_*.less’]) .pipe(less())//轉css .pipe(cssnano())//壓縮 //合併 .pipe(gulp.dest(‘dist/styles’)); });