自制js编译压缩小工具

自制js编译压缩小工具

月光魔力鸭

2019-11-14 13:26 阅读 717 喜欢 0 js编译 js压缩

关于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啦。

转载请注明出处: https://chrunlee.cn/article/js-babel-uglify-tool.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
发布自己的nodejs应用后,需要进行管理,目前一般都pm2来进行管理,这里记录下常用的命令。
从豆瓣转到网易云后,发现了不少好听的歌曲,然鹅..当我想把这些歌拿下来扔车上听的时候发现竟然不允许下载..能听不能下?这不科学,作为一名程序猿,必然要迎难而上啊.
获取文件夹内所有的文件。支持递归获取、异步或同步、过滤、返回信息处理。
从上面那篇文章过来的,这里分享下nodejs对文件夹以及子文件进行批量删除的实现。
学习爬虫的时候突然有想到想做一个音乐播放小站,可以给自己或朋友听,但是音乐哪里来呢??想到自己常听的豆瓣FM,就越发的想把这些音乐都拿下来,因此有了下文通过豆瓣FM批量抓取上万首音乐,目前已经3W+。
在使用puppeteer 跳转窗口的时候,发现waitForNavigator 并不起作用,最后找到通过browser 获得page 并继续操作。
写文章总会需要一些素材,但是好多素材都是收费或有限制的,还是我要求不高,在千库网看了下还不错,有各签到还送VIP,于是就有了想法....
也不知道咋回事 ... 哈哈,忽然想研究下磁力网站,其实并不是很想懂里面的原理,只是搞不明白他们的资源是从哪里来的..很是纳闷?