使用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 相关文章推荐
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
jQuery.each()用法分享
Jul 31 Javascript
基于jquery的点击链接插入链接内容的代码
Jul 31 Javascript
使图片旋转的3种解决方案
Nov 21 Javascript
Javascript Objects详解
Sep 04 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
微信小程序的部署方法步骤
Sep 04 Javascript
深入理解es6块级作用域的使用
Mar 28 Javascript
vue路由传参三种基本方式详解
Dec 09 Javascript
js实现计时器秒表功能
Dec 16 Javascript
js+css3实现炫酷时钟
Aug 18 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php抓取https的内容的代码
2010/04/06 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
linux面试题参考答案(7)
2012/10/29 面试题
法学专业个人求职信
2013/09/26 职场文书
幼教毕业生自我鉴定
2014/01/12 职场文书
安全责任书范本
2014/04/15 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
MySql数据库 查询时间序列间隔
2022/05/11 MySQL