grunt集成Babel 实现ES6转ES5

grunt集成Babel 实现ES6转ES5grunt集成Babel实现ES6转ES5背景:原来前端项目使用ES5开发,后来有个小伙伴使用了ES6的高级语言,导致项目无法通过grunt压缩。使用grunt集成babel,实现ES6转ES5,主要有一下几个步骤:1.配置package.jsondevDependencies里面是开发依赖,dependencies里面是项目依赖。”devDependencies”:{“babel-core”:”^6.26.3″,”babel-loader”:”^7.1.5″,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

grunt集成Babel 实现ES6转ES5

背景:原来前端项目使用ES5开发,后来有个小伙伴使用了ES6的高级语言,导致项目无法通过grunt压缩。

使用grunt 集成babel,实现ES6转ES5,主要有一下几个步骤:

1. 配置package.json

devDependencies里面是开发依赖,dependencies里面是项目依赖。

"devDependencies": { 
   
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.5",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015": "^6.24.1",
    "grunt": "^1.1.0",
    "grunt-babel": "^7.0.0",
    "grunt-contrib-copy": "^1.0.0",
    "grunt-contrib-cssmin": "^2.2.1",
    "grunt-contrib-jshint": "^1.1.0",
    "grunt-contrib-uglify": "^3.3.0"
  },
  "dependencies": { 
   
    "grunt-cli": "^1.3.2",
    "webpack": "^3.12.0"
  }

2.下载项目依赖

进入Gruntfiles.js的同级目录,打开控制命令窗口,执行

npm install  grunt-cli
npm install grunt
npm install webpack -g

3.配置Gruntfiles.js

grunt.initConfig({ 
   
        pkg: grunt.file.readJSON('package.json'),
        uglify : { 
   
            my_target: { 
   
                files: [{ 
   
                    expand: true,
                    src: [
                        'scripts/apps/*.js'
                    ],
                    dest: '', //输出目录
                    cwd: '../webapp' //给文件设置一个起点(gruntfiles的相对路径)
                }]
            }
        },
        
        babel: { 
   
            options: { 
   
                presets: ['babel-preset-es2015']
            },
            dist: { 
   
                files: [{ 
   
                    expand: true,
                    src: [
                        'scripts/apps/*.js'
                    ],
                    dest: '',
                    cwd: 'src'
                }]
            }
        }
    });
     // 加载 "uglify" 任务的插件。
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-babel');

    // 默认被执行的任务列表。
    grunt.registerTask('default', ['babel','uglify']);

4.打开控制命令窗口执行grunt

在这里插入图片描述
大功告成啦!

需要注意的是,由于原来项目代码是ES5和ES6混用的状态,所有有部分代码是不符合ES6的标准的。Babel将ES6的语法转化成ES5,会给每一个文件加上“use strict”,导致原来部分使用ES5的代码暴露在严格模式下,这在转化或者运行时会报错。

本人在转化和运行时就遇到了两个错误。一个是声明了一个变量叫interface,但interface是ES6的保留字,导致转化时报错,这个问题到文件里去把变量名改掉就行。
在这里插入图片描述
第二个问题是,变量没有声明就直接引用。这个问题在编译时不会报错,但是在严格模式下会导致项目运行不正常,比如下面的c_start和c_end。解决办法是给变量加上声明。在这里插入图片描述
所以总的来说,还是要统一代码的语法标准,养成良好的编码习惯,不然bug远源源不断。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193120.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月1日 下午6:43
下一篇 2025年12月1日 下午7:15


相关推荐

  • Tar命令之增量备份

    Tar命令之增量备份

    2021年5月30日
    113
  • 【学习记录】… ?…:… C语言问号表达式的用法感叹

    【学习记录】… ?…:… C语言问号表达式的用法感叹关于问号表达式 一般的用法就是用一次 比如 returnA gt B A B 即 前面的语句成立 返回 左边 否则返回 右边 但是 既然这个表达这么简单了 一定是有其简单之大道的 比如 intMax3 intA intB intC 返回 3 个整数中的最大值 returnA gt B A gt C A

    2026年3月19日
    2
  • 【题解】PTA-Python题库 浙大版《Python 程序设计》题目集题解索引[通俗易懂]

    【题解】PTA-Python题库 浙大版《Python 程序设计》题目集题解索引[通俗易懂]编程题标号标题第1章-1从键盘输入两个数,求它们的和并输出第1章-2从键盘输入三个数到a,b,c中,按公式值输出第1章-3输出“Python语言简单易学”第2章-1计算11+12+13+…+m第2章-2计算分段函数[1]第2章-3阶梯电价第2章-4特殊a串数列求和第2章-5求奇数分之一序列前N项和第2章-6求…

    2025年7月3日
    4
  • 前端技巧|vue双向绑定原理,助你面试成功「建议收藏」

    前端技巧|vue双向绑定原理,助你面试成功「建议收藏」在面试一些大厂的时候,面试官可能会问到你vue双向数据绑定的原理是什么?有些小伙伴不知道是什么东西,这样你在面试官的眼里就大打折扣了。今天小千就来给大家介绍一下vue的双向绑定原理,千万不要错过啦。vue双向绑定大家其实对于这个问题不会很陌生,vue中采用mvvm的模式,内置vm将view层与model层两者进行关联,任何一方的变化都会让另外一方受到影响。那回答完后,面试官还会继续追问,请回答一下你理解的双向数据绑定背后的原理是什么?那今天我们就一起探讨一下vue的背后的一些方式实现。所谓要实现双向数

    2022年10月10日
    5
  • html垂直居中的方法

    html垂直居中的方法1 行高法 line height 适用于单行或较少几个文字 设置文字的行高和容器的高度相同 divid div1 单行文本或几个字的垂直居中 style div1 width 300px height 100px 设置容器的宽高 margin 100pxauto 使容器水平边距自动相等 border 1pxsolidred 给文本加上边框可以更 style divid div1

    2026年3月19日
    1
  • GRPC Connection Backoff Protocol「建议收藏」

    GRPC Connection Backoff Protocol「建议收藏」GRPCConnectionBackoffProtocol当我们向一个失败的后端进行连接时,通常不希望立即重试(为了避免请求flooding网络或者服务器),而是去做一些某种形式的指数backoff。我们有几个参数:INITINAL_BACKOFF(第一次失败后的重试需要等待多长时间)MULTIPLIER(在一次失败的重试后,backoff的乘回因子)JITTER(随机backoffs的程度)MAX_BACKOFF(backoff的上界)MIN_CONNECT_TIMEOUT(我们

    2022年6月17日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号