博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gulp真实项目用例
阅读量:5936 次
发布时间:2019-06-19

本文共 5994 字,大约阅读时间需要 19 分钟。

包括了less预编译,css压缩,html文件include引入,js混淆压缩,本地开发热刷新服务器,html压缩,版本号添加

github地址:

gulpfile.js

var gulp = require('gulp'),                         //基础库    imagemin = require('gulp-imagemin'),            //图片压缩    less = require('gulp-less'),                    // less    minifycss = require('gulp-minify-css'),         //css压缩    fileinclude  = require('gulp-file-include'),    // 文件包含    //jshint = require('gulp-jshint'),              //js检查    uglify  = require('gulp-uglify'),               //js压缩    rename = require('gulp-rename'),                //重命名    //concat  = require('gulp-concat'),             //合并文件    //clean = require('gulp-clean'),                //清空文件夹    notify = require('gulp-notify'),                // 信息提示    plumber = require('gulp-plumber'),    connect = require('gulp-connect'),              //本地开发web服务器,包括实时刷新    rev = require('gulp-rev'),    revCollector  = require('gulp-rev-collector'),    revReplace = require('gulp-rev-replace'),    minifyHTML = require('gulp-minify-html');var devDir = 'dist';/** less编译 **/gulp.task('less', function () {    gulp.src('./src/less/mspei.less')        .pipe(less())        //.pipe(rename({ suffix: '.min' }))        //.pipe(minifycss())        .pipe(gulp.dest('./'+devDir+'/css/'));});/** js **/gulp.task('js', function () {    gulp.src(['./src/js/**/*'])        .pipe(gulp.dest('./'+devDir+'/js/'));});/** 通用文件包含 **/gulp.task('fileinclude', function() {    gulp.src(['./src/views/**/*.html', '!./src/views/include/**.html'])        .pipe(fileinclude({            prefix: '@@',            basepath: '@file'        }))        .pipe(gulp.dest('./'+devDir+'/'));});/** 图片处理 **/gulp.task('images', function () {    gulp.src(['./src/images/**/*'])        .pipe(gulp.dest('./'+devDir+'/images/'));});/** 字体图标 **/gulp.task('fonts', function () {    gulp.src(['./src/fonts/**/*'])        .pipe(gulp.dest('./'+devDir+'/fonts/'));});/** 使用connect启动一个Web服务器 **/gulp.task('connect', function () {    connect.server({        root: './'+devDir+'/',        livereload: true    });});/** 刷新页面 **/gulp.task('reload', function () {    gulp.src('./'+devDir+'/**/*.html')        .pipe(connect.reload());});/** 监测文件变动,设置自动执行的任务 **/gulp.task('watch', function () {    gulp.watch('./src/less/**/*.less', ['less', 'reload']);                   // 当所有less文件发生改变时,调用less任务    gulp.watch('./src/js/**/*.js', ['js', 'reload']);                   // 当所有js文件发生改变时,调用js任务    gulp.watch('./src/views/**/*.html', ['fileinclude', 'reload']); // 当所有模板文件变化时,重新生成生成页面到根目录    gulp.watch('./src/images/**/*', ['images']);                    // 监听images});/** 开发时,运行 'gulp dev' **/gulp.task('dev', ['connect', 'less', 'js', 'fileinclude', 'images', 'fonts', 'reload', 'watch']);/***************************************************************** * dist版本,压缩版 ****************************************************************//** less编译 **/gulp.task('lessDist', function () {    gulp.src('./src/less/mspei.less')        .pipe(less())        //.pipe(rename({ suffix: '.min' }))        .pipe(minifycss())        .pipe(rev())        .pipe(gulp.dest('./dist/css/'))        .pipe(rev.manifest())        .pipe(gulp.dest('./src/rev/css'));});/** js **/gulp.task('jsDist', function () {    gulp.src(['./src/js/**/*', '!./src/js/**/*.js'])        .pipe(gulp.dest('./dist/js'));    gulp.src(['./src/js/**/*.js'])        .pipe(uglify({            mangle: {except: ['require', 'exports', 'module', '$']}        }))        .pipe(rev())        .pipe(gulp.dest('./dist/js/'))        .pipe(rev.manifest())        .pipe(gulp.dest('./src/rev/js'));});/** 通用文件包含 **/gulp.task('fileincludeDist', function() {    gulp.src(['./src/views/**/*.html', '!./src/views/include/*.html'])        .pipe(fileinclude({            prefix: '@@',            basepath: '@file'        }))        .pipe(gulp.dest('./dist/'));});/** 图片处理 **/gulp.task('imagesDist', function () {    gulp.src(['./src/images/**/*'])        .pipe(gulp.dest('./dist/images/'));});/** 字体图标 **/gulp.task('fontsDist', function () {    gulp.src(['./src/fonts/**/*'])        .pipe(gulp.dest('./dist/fonts/'));});gulp.task('commonRev', function () {    return gulp.src(['src/rev/**/*.json', 'dist/**/*.html'])        .pipe( revCollector({            replaceReved: true,            dirReplacements: {                'css': 'css',                'js': 'js',                //'cdn/': function(manifest_value) {
// return '//cdn' + (Math.floor(Math.random() * 9) + 1) + '.' + 'exsample.dot' + '/img/' + manifest_value; //} } }) ) .pipe( minifyHTML({ empty:true, spare:true }) ) .pipe( gulp.dest('dist') );});//处理seajs脚本的模块引用gulp.task("seaRev", function() { var jsManifest = gulp.src('./src/rev/js/*.json'); return gulp.src(["src/js/config.js"], { base: "src/js" }) .pipe(revReplace({ manifest: jsManifest })) .pipe(rev()) .pipe(gulp.dest("dist/js")) .pipe(rev.manifest("rev-manifest-seajs.json", { merge: true })) .pipe(gulp.dest("src/rev/js"));});/** 发布时,运行 'gulp dist' **//** 需版本号,再运行 'gulp rev' **/gulp.task('dist', ['lessDist', 'jsDist', 'fileincludeDist', 'imagesDist', 'fontsDist']);gulp.task('rev', ['commonRev', 'seaRev']);

 

package.json

{  "name": "mspei_front",  "version": "1.0.0",  "description": "",  "main": "index.js",  "devDependencies": {    "gulp": "^3.9.1",    "gulp-asset-rev": "^0.0.15",    "gulp-connect": "^4.1.0",    "gulp-file-include": "^0.13.7",    "gulp-imagemin": "^3.0.1",    "gulp-less": "^3.1.0",    "gulp-livereload": "^3.8.1",    "gulp-minify-css": "^1.2.4",    "gulp-notify": "^2.2.0",    "gulp-plumber": "^1.1.0",    "gulp-rename": "^1.2.2",    "gulp-rev": "^7.1.2",    "gulp-rev-collector": "^1.0.5",    "gulp-uglify": "^2.0.0",    "gulp-rev-replace": "^0.4.3",    "gulp-minify-html": "^1.0.6"  },  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1"  },  "author": "nuanfeng",  "license": "ISC"}

 

转载地址:http://yfjtx.baihongyu.com/

你可能感兴趣的文章
SACC 2018:区块链的世界没有权威!
查看>>
汽车之家数据库服务化平台从0到1的实践过程
查看>>
恒大健康:合资公司再向仲裁中心申请剥夺时颖资产抵押权
查看>>
《我爱我家》主创重聚北京台春晚 宋丹丹感谢英达
查看>>
「每天一道面试题」CountDownLatch实现原理及适用场景?
查看>>
中科院海洋所破译对虾基因组并获国际首个高质量对虾基因组参考图谱
查看>>
中国鄂西地区页岩气调查取得重大突破
查看>>
美国机场安检人员计划外缺席率达10% 创历史纪录
查看>>
花呗能不能不还?支付宝说春节集五福中彩蛋可帮还
查看>>
贵州荔波:十四年办好一个节带富一方人
查看>>
匈牙利公开赛给国乒提醒 周雨违规被取消资格
查看>>
大佬 都赞不绝口的 “宅男程序员之作”,竟如此精辟!
查看>>
人工智能推动人机交互创新 三星Bixby中文(普通话)版正式发布
查看>>
数据挖掘中的十大实用分析方法
查看>>
插入排序就这么简单
查看>>
Swift iOS : YYText计算文字占用高度
查看>>
【1分钟知识点】利用「占位块」弥补 space-between 的不足
查看>>
使用 redux-observable 实现组件自治
查看>>
构建你的第一个Flutter视频通话应用
查看>>
React之setState
查看>>