使用webpack4编译并压缩ES6代码的方法示例


Posted in Javascript onApril 24, 2019

前段时间第一次接触了layabox游戏引擎做了一个项目,由于ES6相当好用,所以在项目中使用了很多的ES6语法,但是在发布的时候发现该引擎无法压缩ES6的代码,而不进行压缩的话则代码体积比较大

然后其实该引擎会将自己写的代码打包在一个js文件中,所以也就只有一个js文件是没有压缩的,所以我就想到了自己使用webpack单独对这个文件进行压缩,并将ES6语法编译成ES5,做低版本浏览器的兼容。

第一步安装webpack

1) 全局安装webpack4

npm install webpack -g

创建一个文件夹(webpack4-babel-uglify),初始化项目

cd webpack4-babel-uglify
npm init -y
npm install webpack webpack-cli --save-dev

安装编译ES6的依赖插件

npm install babel-core babel-loader@7 babel-plugin-transform-runtime babel-preset-env --save-dev
npm install babel-polyfill babel-runtime --save

在根目录下创建src目录,将需要编译压缩的js放在src目录下

mkdir src

配置webpack.config.js

module.exports = {
 mode:'development',
 entry: {
 app: [
  "babel-polyfill", 
  "./src/index.js" //需要压缩的js,目前只支持单个文件一个一个压缩 = =!
 ],
 },
 output: {
 path: path.resolve(__dirname, 'dist'), //输出目录
 filename: 'index.js' //输出文件名称,建议与源文件同名
 },
 module: {
 rules: [{
  test: /\.js$/,
  exclude: /(node_modules)/,
  use: {
  loader: "babel-loader"
  }
 }]
 }
};

在根目录下新建.babel文件,设置babel相关配置

{
 "presets": [
 [
  "env",
  {
  "targets": {
   "browsers": [ //浏览器版本
   "> 1%",
   "last 2 versions",
   "not ie <= 8",
   "iOS >= 6",
   "safari >= 6",
   "Firefox >= 20",
   "Android > 4",
   "android >= 4.4"
   ]
  }
  }
 ]
 ],
 "plugins": ["transform-runtime"]
}

修改package.json中的打包命令

"scripts": {
  ...
 "build": "webpack" //新增这条命令
 }

将需要压缩编译的js文件放入src下,并修改第五步中的文件名,之后执行打包命令

npm run build

至此,压缩编译成功,压缩编译后的文件在dist目录下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 双色表格实现代码
Dec 08 Javascript
JavaScript中几种常见排序算法小结
Feb 22 Javascript
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 Javascript
js有关元素内容操作小结
Dec 20 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
Jul 31 Javascript
jquery垂直公告滚动实现代码
Dec 08 Javascript
详解vue2父组件传递props异步数据到子组件的问题
Jun 29 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
微信上传视频文件提示(推荐)
Nov 22 Javascript
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
layui table数据修改的回显方法
Sep 04 Javascript
vue弹出框组件封装实例代码
Oct 31 Javascript
页面内锚点定位及跳转方法总结(推荐)
Apr 24 #Javascript
详解Vue项目中实现锚点定位
Apr 24 #Javascript
微信小程序中使用echarts的实现方法
Apr 24 #Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 #Javascript
详解微信小程序开发用户授权登陆
Apr 24 #Javascript
微信小程序实现的一键拨号功能示例
Apr 24 #Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 24 #Javascript
You might like
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
php随机显示图片的简单示例
2014/02/15 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
python中的代码编码格式转换问题
2015/06/10 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
Python实现分段线性插值
2018/12/17 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
微信公众号token验证失败解决方案
2019/07/22 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
药剂学专业应届生自荐信
2013/09/29 职场文书
工商管理实习生自我鉴定范文
2013/12/18 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书