有什么好的独立JavaScript格式化程序可以修复丢失的分号?

b5buobof  于 2023-02-11  发布在  Java
关注(0)|答案(6)|浏览(109)

我试图翻新/修复大量的遗留Web代码,不幸的是,大部分都是格式很差的JavaScript。我正在寻找一个批处理/脚本化实用程序,可以修复JavaScript,这是在可执行语句的结尾丢失的simicolons。
我试过Rhino的beautify-cl.js脚本,但是没有添加分号。另外,我试过JSTidy,我想我可以修改它使其成为可脚本化的,但是它去掉了所有的注解。考虑到我们有2000-3000个文件,任何解决方案都必须是可脚本化的。
参考了以下主题,但由于各种原因,没有一个解决方案是充分的:Javascript Beautifier-不处理分号Best source code formatter for Javascript?-不可编写脚本
有什么想法/解决方案吗?先谢了。

yyhrrdl8

yyhrrdl81#

我在js-beautify和Google的Closure Linter中找到了一个成功的组合:

# legacy.js is your poorly formatted JavaScript file, and will be modified in-place
js-beautify -s 2 -n -b end-expand -x -r legacy.js && fixjsstyle legacy.js

js-beautify选项说明:

  • -s 2:缩进两个空格
  • -n:确保在文件末尾换行
  • -b end-expand:将{大括号放在行尾,但始终为}大括号指定自己的行。
  • -x:unescape \xNN-字符串中的转义字符
  • -r:就地进行更改

fixjsstyle随Closure Linter套件一起安装,默认情况下会就地进行更改。
这个管道保留注解(!),缩进我喜欢的任何内容(大部分),在适当的地方添加分号,甚至在可行的地方将双引号改为单引号。这两个命令都可以被赋予一个文件列表(例如,**/*.js),而不仅仅是一个。
要在Mac OS X上安装所需的软件包:

npm install -g js-beautify
brew install closure-linter
sirbozc5

sirbozc52#

显然,如果你想在部署时缩小文件,你就需要这样做。缺少分号可能是JS文件不能正确缩小的首要原因,所以我理解你的动机。
编写一个小的Python(或其他)脚本,通过jslint运行文件,然后使用jslint的输出查看哪些行需要分号,然后遍历js源代码并添加分号。
我认为您在这里可以毫不畏惧,因为JavaScript无论如何都会隐式地添加分号。
更新:This set of tools may be what you are looking for。“格式”选项卡提供了缺失的分号插入。

4nkexdtk

4nkexdtk3#

如果您在http://jsutility.pjoneil.net上使用JavaScript Utlity V2并使用格式化功能,它将自动替换丢失的分号。
此外,如果使用压缩功能,它还会替换丢失的分号,这样压缩就不会导致任何错误。

xxb16uws

xxb16uws4#

你不应该担心仅仅为了插入分号而对大量遗留代码进行大规模更新,这是“做错了”的典型案例。
你将如何测试结果?你将如何确保没有“功能”(作为一个分号丢失导致的bug的副作用)丢失?
你认为在所有这些文件中添加分号会给你带来什么?除了更大的文件(我不是在批评分号的使用)和大量未经测试的代码更改之外?
就像gumbo说的,使用jslint。我会在你编辑日常工作中的文件时使用它。当你编辑这些文件时,可能你会在那个时候测试对文件的修改。那将是疯狂插入分号的最理想的时间。
此外,如果您关心的是保持2000-3000个遗留javascript文件的存活和支持,那么您遇到的问题远比分号要大

ha5z0ras

ha5z0ras5#

如果http://jsutility.pjoneil.net抛出太多错误(并且无法格式化它),您可以尝试使用以下命令压缩它:http://refresh-sf.com/yui/(这将添加缺少的分号),然后返回pjoneil.net格式化程序以获得带有分号的漂亮代码。

8aqjt8rx

8aqjt8rx6#

如果您使用的是Visual Studio代码,那么Prettier格式设置程序是您的选择:https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
您只需安装它,然后在键盘快捷键上格式化文档,js文件被重新格式化,而且任何丢失的分号也会自动填充。
好好享受吧!

相关问题