繁体   English   中英

如何使用命令行美化 JavaScript 代码?

[英]How can I beautify JavaScript code using Command Line?

我正在编写批处理脚本以美化 JavaScript 代码。 它需要在WindowsLinux 上运行

如何使用命令行工具美化 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年回答这个问题以来,美化器已经被重写了。现在那里有一个python模块,一个用于nodejs的npm包,jar文件不见了。 请阅读github.com 上项目页面

蟒蛇风格:

 $ 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 代替 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,尽管安装是相同的。

在 Ubuntu LTS 上

$ sudo apt install jsbeautifier
$ js-beautify ugly.js > beautiful.js

对于就地美化,任何以下命令:

$ js-beautify -r file.js
$ js-beautify --replace file.js

在控制台中,您可以使用带有 --mode --mode=java艺术风格(又名 AStyle)。
它运行良好,而且免费、开源且跨平台(Linux、Mac OS X、Windows)。

我无法对已接受的答案添加评论,这就是为什么您会看到一开始不应该存在的帖子。

基本上我还需要一个 java 代码中的 javascript 美化器,令我惊讶的是,据我所知,没有一个可用。 所以我完全根据接受的答案自己编写了一个代码(它包装了 jsbeautifier.org beautifier .js 脚本,但可以从 java 或命令行调用)。

代码位于https://github.com/belgampaul/JsBeautifier

我用犀牛和beautifier.js

来自控制台的用法:java -jar jsbeautifier.jar 脚本缩进

示例:java -jar jsbeautifier.jar "function ff() {return;}" 2

来自 java 代码的用法:public static String jsBeautify(String jsCode, int indentSize)

欢迎您扩展代码。 就我而言,我只需要缩进,这样我就可以在开发时检查生成的 javascript。

希望它能为您的项目节省一些时间。

使用现代 JavaScript 方式:

GruntGruntjsbeautifier 插件结合使用

您可以使用npm轻松地将所有内容安装到您的开发环境中。

您所需要的只是使用适当的任务设置 Gruntfile.js,其中还可能涉及文件连接、lint、uglify、minify 等,并运行 grunt 命令。

您有几种单衬选择。 与NPM或独立与使用NPX

半标准

npx semistandard "js/**/*.js" --fix

标准

npx standard "js/**/*.js" --fix

更漂亮

npx prettier --single-quote --write --trailing-comma all "js/**/*.js"

我相信当您询问命令行工具时,您只是想批量美化所有 js 文件。

在这种情况下,Intellij IDEA(用 11.5 测试)可以做到这一点。

您只需要选择任何项目文件,然后在主 IDE 菜单中选择“代码”->“重新格式化代码..”。 然后在对话框中选择“目录中的所有文件...”并按“输入”。 只要确保您为 JVM 分配了足够的内存。

我写了一篇文章,解释了如何在 5 分钟内构建在 JavaScript实现命令行 JavaScript 美化器 天啊。

  1. 下载最新的稳定版 Rhino 并在某处解压,例如 ~/dev/javascript/rhino
  2. 下载从上述 jsbeautifier.org 引用的 beautify.js,然后将其复制到某处,例如 ~/dev/javascript/bin/cli-beautifier.js
  3. 在 beautify.js 的末尾添加这个(使用一些额外的 JavaScript 顶级属性):

     // Run the beautifier on the file passed as the first argument. print( j23s_beautify( readFile( arguments[0] )));
  4. 将以下代码复制粘贴到可执行文件中,例如 ~/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 $*
  5. (可选)将带有 jsbeautifier.js 的文件夹添加到 PATH 或移动到已经存在的某个文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM