使用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 相关文章推荐
一些经常会用到的Javascript检测函数
May 31 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
Jul 23 Javascript
javascript中数组方法汇总
Jul 07 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
May 12 Javascript
Node.js 数据加密传输浅析
Nov 16 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
Nov 29 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
Jan 25 Javascript
jQuery点击头像上传并预览图片
Feb 23 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
Sep 30 Javascript
js键盘事件实现人物的行走
Jan 17 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
页面内锚点定位及跳转方法总结(推荐)
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之第十天
2006/10/09 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
Prototype Class对象学习
2009/07/19 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
vue实现留言板todolist功能
2017/08/16 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python实现银行实战系统
2020/02/26 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
python字符串判断密码强弱
2020/03/18 Python
python和php学习哪个更有发展
2020/06/17 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
.net工程师笔试题
2012/06/09 面试题
项目开发计划书
2014/01/09 职场文书
事务机电主管工作职责
2014/02/25 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
病假证明模板
2015/06/19 职场文书