自制js编译压缩小工具

自制js编译压缩小工具

点点

2021-03-25 09:13 阅读 478 喜欢 0

关于js的编译和压缩,之前做过一个小工具了,主要就是自己项目成员大都没有这部分的技能,导致发布的时候总需要去编译压缩下.. 最终做了个命令行小工具.. 问题不在这里,前一阵子做压缩的时候发现压缩后竟然是undefined.最终才发现是es6的语法问题。

bug : 通过uglify-js 压缩js文件后文件内容为undefined

在对某个项目内的js文件做压缩的时候,发现了这个问题。结果发现是uglify-js不支持es6的语法和api。

最终只能通过babel来进行编译。

解决: compress 命令行工具

对之前封装的命令行工具compressj2 做了改版。

核心代码

let babel = require('@babel/core'); let baseCode = let {a} = {a :'name'}; babel.transform(baseCode, { presets: [ ['@babel/preset-env', { "useBuiltIns": "entry", "modules": false, "corejs": 2, // 新版本的@babel/polyfill包含了core-js@2和core-js@3版本,所以需要声明版本,否则webpack运行时会报warning,此处暂时使用core-js@2版本(末尾会附上@core-js@3怎么用) }] ] }, function(erra, result) { if (erra) { console.log('>>:' + filePath); console.log(erra); } else { console.log(result.code); } }); babel的版本是7以上,与之前的老版本会有差异。这个一定要注意。

关于babel的使用,参考https://segmentfault.com/a/1190000019718925

命令行的使用

安装

npm install compressjs2 -g

使用

compress //压缩当前目录下所有js并替换 compress -d /home/js //压缩目标目录下js并替换 compress -d /home/js -o /home/build //压缩目标目录下js并输出到/home/build目录下 compress -c //美化压缩后的js文件 compress -l //递归循环调用所有目录,否则只有当前级别

注意

//本工具中对js的编译的以上代码,很多api并没有增加,主要是对语法进行编译。 对babel的使用很粗浅,不过目前可以满足现有的环境要求。 以后项目再发布做编译压缩的时候.. 只需要一个简单的命令compress 就OK啦。

转载请注明出处: http://sdxlp.cn/article/压缩.html


如果对你有用的话,请赏给作者一个馒头吧 ...或帮点下页面底部的广告,感谢!!

赞赏支持
提交评论
评论信息(请文明评论)
暂无评论,快来快来写想法...
推荐
随着科技的发展,钉钉的出现让很多的小伙伴们吃尽苦头,动不动的好忘记打卡,还得走回去再打,还有时间限制,动不动就罚钱,领导还会告诉小伙伴们,罚钱不是目的,目的是让小伙伴们养成好习惯,帮助小伙伴一起成长,嘿嘿,好东西来了,免费的呦!
互联网应用经常需要存储用户上传的图片,比如facebook相册。
我们日常生活,工作中,会经常用微信接收和发送一些重要文件,那么微信电脑版下载文件在哪,电脑文件夹怎么发送到微信,会有很多小伙伴为此困扰,小编今天就和小伙伴们一起看一下吧。
使用PC电脑的时候小伙伴们要接触全新的名词,尤其是在硬盘中的各种文件夹,其中program files(x86)文件夹是什么意思呢?
钉钉电子签名基于钉钉强大的安全保障体系,确保用户签名的真实性和不可篡改性。用户可以在钉钉应用中轻松完成签名操作,无论是审批流程、合同签署还是其他需要签名的场景,都能快速完成签名任务。可以帮到小伙伴们涨知识呦!
日常生活工作中,智能手机已经成为必备,手机的耗电量也是比较大的,智能手机后台耗电量过大是很正常的现象,小编教小伙伴们几招,可以尽量的减少手机电量的过快消耗。
小红书是现在非常流行的一款生活、社交软件,有些小伙伴不知道如何将小红书中的笔记设为置顶,接下来小编就给小伙伴们介绍一下具体的操作步骤。
我们经常使用微信,每天很多小伙伴都会发几条朋友圈。撒狗粮的,发心情的,发动态的,发广告的,发游戏链接等,可是朋友圈不显示怎么办那?下面请跟我来,分分钟钟学会。