淘宝镜像:$ 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’)); });