前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >grunt集成Babel 实现ES6转ES5

grunt集成Babel 实现ES6转ES5

作者头像
全栈程序员站长
发布2022-09-28 10:52:46
5240
发布2022-09-28 10:52:46
举报

大家好,又见面了,我是你们的朋友全栈君。

grunt集成Babel 实现ES6转ES5

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

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

1. 配置package.json

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

代码语言:javascript
复制
"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的同级目录,打开控制命令窗口,执行

代码语言:javascript
复制
npm install  grunt-cli
npm install grunt
npm install webpack -g

3.配置Gruntfiles.js

代码语言:javascript
复制
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.cn/193120.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年9月2日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • grunt集成Babel 实现ES6转ES5
    • 1. 配置package.json
      • 2.下载项目依赖
        • 3.配置Gruntfiles.js
          • 4.打开控制命令窗口执行grunt
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档