我正在编写批处理脚本以美化 JavaScript 代码。它需要在Windows和Linux 上运行。
如何使用命令行工具美化 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 文件并通过第一步中的 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年回答这个问题以来,美化器已经被重写了。现在那里有一个pythonmodule,一个用于nodejs的npm包,jar文件不见了。请阅读github.com 上的项目页面。
python风格:
$ pip install jsbeautifier
NPM 风格:
$ npm -g install js-beautify
使用它(这将在终端上返回优美的 js 文件,主文件保持不变):
$ js-beautify file.js
要使更改对文件生效,您应该使用以下命令:
$ js-beautify -r file.js
原答案
添加到@Alan Storm的答案
基于http://jsbeautifier.org/的命令行美化器 已经变得更容易使用了,因为它现在(或者)基于 V8 javascript 引擎(c++ 代码)而不是 Rhino(基于 Java 的 JS 引擎,打包作为“js.jar”)。所以你可以用 V8 代替 Rhino。
如何使用:
从http://github.com/einars/js-beautify/zipball/master下载 jsbeautifier.org zip 文件
(这是链接到 zip 文件的下载 URL,例如http://download.github.com/einars-js-beautify-10384df.zip)
旧的(不再有效,jar 文件不见了)
java -jar js.jar name-of-script.js
新的(替代)
从 svn 安装/编译 v8 lib,参见上述 zip 文件中的 v8/README.txt
./jsbeautify somefile.js
- 与犀牛版本的命令行选项略有不同,
- 配置为“外部工具”时,在 Eclipse 中运行良好
如果您使用的是 nodejs,请尝试 uglify -js
在 Linux 或 Mac 上,假设您已经安装了 nodejs,您可以使用以下命令安装 uglify:
sudo npm install -g uglify-js
然后得到选项:
uglifyjs -h
所以如果我有一个foo.js
看起来像这样的源文件:
// foo.js -- minified
function foo(bar,baz){console.log("something something");return true;}
我可以这样美化它:
uglifyjs foo.js --beautify --output cutefoo.js
uglify
默认情况下使用空格进行缩进,因此如果我想将 4-space-indentation 转换为制表符,我可以通过unexpand
Ubuntu 12.04 来运行它:
unexpand --tabs=4 cutefoo.js > cuterfoo.js
或者,您可以一次性完成所有操作:
uglifyjs foo.js --beautify | unexpand --tabs=4 > cutestfoo.js
您可以在此处找到有关 unexpand 的更多信息
所以在这一切之后,我最终得到了一个看起来像这样的文件:
function foo(bar, baz) {
console.log("something something");
return true;
}
更新 2016-06-07
看起来 uglify-js 的维护者现在正在开发版本 2,尽管安装是相同的。
$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js
对于就地美化,以下任何命令:
$ js-beautify -r file.js
$ js-beautify --replace file.js
在控制台中,您可以将艺术风格(又名 AStyle)与--mode=java
.
它运行良好,而且免费、开源且跨平台(Linux、Mac OS X、Windows)。