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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python生成13位时间戳_python精确到毫秒时间戳

    python生成13位时间戳_python精确到毫秒时间戳Unix时间戳根据精度的不同,有10位(秒级),13位(毫秒级),16位(微妙级)和19位(纳秒级)。平时我们在linux命令行下,使用date+%s返回的是一个10位的unix时间,而在常用的http的响应头里,我们经常会发现有13位的unix时间戳。在python下可以比较容易的获取10和13位的时间戳并转换成常见的时间格式。一、10时间戳的使用和转换>>>…

    2022年10月2日
    1
  • Python暴力激活成功教程密码

    Python暴力激活成功教程密码一、导入包此处我们需要用到itertools和zipfile两个包importitertoolsimportzipfile我们先来简单认识一下itertools包的简单用法digital_list=list(itertools.permutations([‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9’],3))d_list=[”.join(x)forxindigital_list]print(digital_list)print(d_

    2022年8月22日
    7
  • spi,i2c,uart三种总线的区别_i2c接口是什么意思

    spi,i2c,uart三种总线的区别_i2c接口是什么意思一、SPI I2CUART通信速率比较:SPI>I2C>UART1、同步通信>异步通信;2、同步通信时必须有一根时钟线连接传输的两端;3、都是串行通信方式,并行通信用于内部存储间的通信,如flash;4、适合传输的距离和通信速率成反比关系;3-SPI:两条合一的数据线、1时钟线、1CS(设备片选线) SPI:2数据线、1时钟线、1CS(设备片选线)/串行同步通信…

    2022年9月14日
    2
  • MATLAB—-输入和输出

    MATLAB—-输入和输出文章目录 1 输入语句 1 1 输入数值或矩阵 1 2 输入字符串 2 输出语句 2 1 输出单个字段 2 2 输出多个字段 1 输入语句 1 1 输入数值或矩阵 value1 input 请输入一个数值 value2 input 请输入一个矩阵 1 2 输入字符串输入字符串 需要加第二个参数 s string input 请输入一个字符串 s 2 输出语句使用 disp 函数可以输出 输出多个字段时 需要将多个字段转

    2025年7月2日
    2
  • icem合并面网格_icem 混合网格 流沙

    icem合并面网格_icem 混合网格 流沙ICEMCFD中处理interface面_计算机软件及应用_IT/计算机_专业资料。Interface在CFD中应用得非常多,比如常见的应用MRF,SRF,MP以及滑移网格。其实在有限元计算……oaoaoaMMM使用ICEMCFD建立二维翼型流场网格rewrewrewAndrewMoandndndICEMCFD是一款专业的CFD前处…

    2022年5月26日
    74
  • 随机抽奖小程序_在线随机抽号小程序

    随机抽奖小程序_在线随机抽号小程序本实例使用随机数字生成5位抽奖号码,并显示在窗体的5个文本框中。当用户单击"开始"按钮时,将启动一个线程对象为5个文本框生成随机数字。单击"抽奖"按钮时,线程对

    2022年8月2日
    4

发表回复

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

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