当前位置: 首页 > news >正文

gulp+es6 配置

这个gulp配置能够在生产环境下压缩代码, 使用lessES6开发 自动热更新自动刷新页面

关于每一个插件的解释我都已经写上了

gulp 相对而言比 webpack 简单得多,就这四条执行函数,流程化很简洁

// gulp.src()
// gulp.dest()
// gulp.task()
// gulp.watch()
复制代码

但是坑还是有的, 尤其是es6降级这里,弄了好久才发现是版本问题。 我把自己写的配置贴出来供大家参考

重点 (版本错误会导致无法输出)

一定要好好检查babel 和 gulp-babel版本

如果你的电脑再使用babel7 版本, 请下载 gulp-babel 8 版本

npm install --save-dev gulp-babel @babel/core @babel/preset-env

如果你和我的一样,babel是6版本, 请下载 gulp-babel 7 版本

npm install --save-dev gulp-babel@7 babel-core babel-preset-env

插件版本

"devDependencies": {
    "autoprefixer": "^9.5.1",
    "babel-core": "^6.26.3",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015":"^6.24.1",
    "gulp": "^3.9.1",
    "gulp-babel": "^7.0.1",
    "gulp-clean-css": "^4.2.0",
    "gulp-connect": "^5.7.0",
    "gulp-connect-reproxy": "^0.0.98",
    "gulp-htmlclean": "^2.7.22",
    "gulp-imagemin": "^5.0.3",
    "gulp-less": "^4.0.1",
    "gulp-postcss": "^8.0.0",
    "gulp-strip-debug": "^3.0.0",
    "gulp-uglify": "^3.0.2"
  },

复制代码

gulpfile.js文件

var gulp = require('gulp');

// 在命令行设置为生产环境或者开发环境
//开发环境不要使用压缩,会影响找错
// windows: set NODE_ENV = development 或 production  
//(可能会有问题, 建议使用 :var environment = process.env.NODE_ENV || 'development';)
// mac  linux : export NODE_ENV = development 或 production

var environment = process.env.NODE_ENV || 'development';

//根据自己开发的实际需求自行设置, src放开发文件, dist是打包压缩后的导出目录
const folder = {
    src: "src/",
    dist: 'dist/'
}

// 压缩html代码
const htmlClean = require('gulp-htmlclean');

// 图片类: 压缩PNG, JPEG, GIF and SVG
const imageMin = require('gulp-imagemin');

// uglify 不支持压缩 es6 , 需要先使用babel降级才行 */
const uglifyJS = require('gulp-uglify')
//es6 降级到es5    请使用  "gulp-babel": "^7.0.1", 
//切记不要用 8版本, 会出现无法输出的情况
const babel = require('gulp-babel');
//去除掉 注释, console 和 debugger
const removeComments = require('gulp-strip-debug')

//less 转 css
const less = require('gulp-less');
//css3 兼容各类浏览器脚本
const postCss = require('gulp-postcss');
const autoPrefixer = require('autoprefixer');
//css代码压缩
const cleanCss = require('gulp-clean-css');

//创建服务器环境插件 支持热更新
const connect = require("gulp-connect");

gulp.task('html', function () {
    const step = gulp.src(folder.src + "html/*")
        .pipe(connect.reload())
    if (environment == 'production') {
        step.pipe(htmlClean())
    }
    step.pipe(gulp.dest(folder.dist + "html/"))
})

gulp.task('img', function () {
    gulp.src(folder.src + "img/*")
        .pipe(imageMin())
        .pipe(gulp.dest(folder.dist + "img/"))
})

gulp.task('css', function () {
    var step = gulp.src(folder.src + "css/*")
        .pipe(connect.reload())
        .pipe(less())
        .pipe(postCss([autoPrefixer()]))
    if (environment == 'production') {
        step.pipe(cleanCss())
    }
    step.pipe(gulp.dest(folder.dist + "css/"))
})

gulp.task('js', function () {
    var step = gulp.src(folder.src + "js/*")
        .pipe(connect.reload())
        .pipe(babel({
            presets: ['es2015']
        }))
    if (environment == 'production') {
        step.pipe(removeComments())
            .pipe(uglifyJS())
    }
    step.pipe(gulp.dest(folder.dist + "js/"))
})

gulp.task('server', function () {
    //设置默认服务器接口, livereload: true 是否监视文件变化
    connect.server({
        port: 8888,
        livereload: true
    })
})

//自动刷新页面
gulp.task('watch', () => {
    gulp.watch(folder.src + "html/*", ['html']);
    gulp.watch(folder.src + "css/*", ['css']);
    gulp.watch(folder.src + "js/*", ['js'])
})

gulp.task("default", ["html", "img", "css", "js", "server", "watch"]);
// default任务一定要写,不然会报警告: Task 'default' is not in your gulpfile
// 数组中写哪一个执行哪一个任务, 从左到右执行

复制代码

相关文章:

  • 因为看见,所以发现:QBotVariant谢绝落幕
  • (转)重识new
  • ubuntu 安装微信
  • Vue基础起步
  • 如何动态获取Dubbo服务提供方地址列表
  • 谷歌智能音箱更新,玩转摄像头,但名归Nest麾下
  • C++STL算法
  • math模块
  • cs6.8-oracle挂载ceph
  • centos7二进制安装mysql8.0.16
  • PHP应用如何对接微信公众号JSAPI支付
  • Leetcode 11 - Container With Most Water
  • Oracle 12c:ORA-28040
  • 002-QC的使用
  • JavaScript 函数式编程技巧 - 反柯里化
  • 77. Combinations
  • Android 控件背景颜色处理
  • angular2 简述
  • Apache Spark Streaming 使用实例
  • Debian下无root权限使用Python访问Oracle
  • flask接收请求并推入栈
  • Hibernate【inverse和cascade属性】知识要点
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • isset在php5.6-和php7.0+的一些差异
  • Java Agent 学习笔记
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript DOM 10 - 滚动
  • KMP算法及优化
  • Laravel 菜鸟晋级之路
  • SpringCloud集成分布式事务LCN (一)
  • 项目实战-Api的解决方案
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 自动记录MySQL慢查询快照脚本
  • No resource identifier found for attribute,RxJava之zip操作符
  • 白色的风信子
  • postgresql行列转换函数
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 如何正确理解,内页权重高于首页?
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ###项目技术发展史
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • ${ }的特别功能
  • (2020)Java后端开发----(面试题和笔试题)
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转)用.Net的File控件上传文件的解决方案
  • .equals()到底是什么意思?
  • .Net 代码性能 - (1)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET企业级应用架构设计系列之结尾篇