Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.0k views
in Technique[技术] by (71.8m points)

使用正则校验打包文件es6语法问题

部署代码的时候,构建时可能有些插件包未进行babel处理,容易造成线上兼容事故。
所以需对构建的js文件进行es6语法检查。

我认为一般只需要检测const|let|=>即可。

一开始想的很简单就针对这三个字符匹配不就好了嘛,reg = /(const | let |=>)/

后来发现打包后代码还有 var $bullet = bullets.eq(current);,这种写法也被检测出来了,其实这种也算比较常见的写法,其实应该忽略掉,修改后

const regEs6 = /(let|const)s+$?w*?|=>/;

各位大佬看下还有什么遗漏或者未检测的情况么?

简单列了几条,欢迎补充探讨...
/**
 * 需要检测的情况
 * let (a|_a|$a) = 1;
 * let (a|_a|$a);
 * 
 let a = 1
 * ;let a = 1
 * for(let i = 1; ...)
 */

 /**
  * 需要忽略的情况
  * var $bullet = bullets.eq(current);
  * var _let|$let;
  */

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

不要搞这种半拉子的事儿, 没有被babel拷打过的包一律进去走一遭。 这个时候正是babel这类工具体现价值的时候。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...