如何使用命令行美化JavaScript代码?
我正在编写批处理脚本,以美化JavaScript代码。它需要同时在Windows和Linux上运行。
如何使用命令行工具美化JavaScript代码?
解决方案
回答
首先,选择我们最喜欢的基于Javascript的Pretty Print / Beautifier。我更喜欢http://jsbeautifier.org/上的那个,因为这是我首先发现的。下载其文件https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js
其次,下载并安装Mozilla组的基于Java的Javascript引擎Rhino。 "安装"有点误导;下载zip文件,解压缩所有内容,然后将js.jar放入Java类路径(或者OS X上的Library / Java / Extensions)。然后,我们可以使用与此类似的调用来运行脚本
java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js
使用第1步中的Pretty Print / Beautifier编写一个小的Shell脚本,该脚本将读取javascript文件,并通过第1步中的Pretty Print / Beautifier运行它。例如
//original code (function() { ... js_beautify code ... }()); //new code print(global.js_beautify(readFile(arguments[0])));
Rhino为javascript提供了一些额外的有用功能,这些功能不一定在浏览器上下文中有意义,而在控制台上下文中有用。函数print可以实现我们所期望的,并打印出一个字符串。函数readFile接受文件路径字符串作为参数,并返回该文件的内容。
我们将调用上面的类似
java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js
我们可以在Rhino运行脚本中混合并匹配Java和Javascript,因此,如果我们了解一点Java,也可以通过文本流使它运行起来并不难。
回答
2014年4月更新:
自从我在2010年回答这个问题以来,美化工具已被重写。现在那里有一个python模块,一个用于nodejs的npm包,而jar文件不见了。请阅读github.com上的项目页面。
Python样式:
$ pip install jsbeautifier
NPM样式:
$ npm -g install js-beautify
使用它:
$ js-beautify file.js
原始答案
添加到@Alan Storm的答案
基于http://jsbeautifier.org/的命令行美化器变得更易于使用,因为它现在(替代地)基于V8 javascript引擎(c ++代码)而不是基于rhino(基于Java的JS引擎)打包作为" js.jar")。因此,我们可以使用V8代替犀牛。
如何使用:
从下载jsbeautifier.org zip文件
http://github.com/einars/js-beautify/zipball/master
(这是链接到诸如http://download.github.com/einars-js-beautify-10384df.zip之类的zip文件的下载URL)
旧的(不再起作用,jar文件消失了)
java -jar js.jar name-of-script.js
新(替代)
从svn安装/编译v8 lib,请参见上述zip文件中的v8 / README.txt
./jsbeautify somefile.js
-与Rhino版本的命令行选项略有不同,
-并且在配置为"外部工具"时在Eclipse中效果很好
回答
我写了一篇文章,解释如何在5分钟内构建用JavaScript实现的命令行JavaScript美化器。 YMMV。
Download the latest stable Rhino and unpack it somewhere, e.g. ~/dev/javascript/rhino Download beautify.js which is referenced from aforementioned jsbeautifier.org then copy it somewhere, e.g. ~/dev/javascript/bin/cli-beautifier.js Add this at the end of beautify.js (using some additional top-level properties to JavaScript): // Run the beautifier on the file passed as the first argument. print( j23s_beautify( readFile( arguments[0] ))); Copy-paste the following code in an executable file, e.g. ~/dev/javascript/bin/jsbeautifier.sh: #!/bin/sh java -cp ~/dev/javascript/rhino/js.jar org.mozilla.javascript.tools.shell.Main ~/dev/web/javascript/bin/cli-beautifier.js $* (optional) Add the folder with jsbeautifier.js to PATH or moving to some folder already there.