命令行在Windows和Linux上工作的JavaScript代码美化器

我正在寻找一个支持JavaScript的代码美化工具,可以在Windows和Linux上运行,并且可以在批处理脚本中使用。 任何build议?

首先,select你最喜欢的Javascript基于漂亮打印/美化。 我更喜欢http://jsbeautifier.org/上的那个,因为这是我第一次find的。; 下载文件https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

其次,下载并安装Mozilla集团的基于Java的Javascript引擎Rhino 。 “安装”有点误导; 下载zip文件,提取所有内容,将js.jar放在Java类path(或OS X上的Library / Java / Extensions)中。 然后,您可以使用类似于此的调用来运行脚本

java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js 

使用漂亮打印/美化从第1步写一个小的shell脚本,将读取您的JavaScript文件,并通过漂亮打印/美化从第一步运行它。 例如

 //original code (function() { ... js_beautify code ... }()); //new code print(global.js_beautify(readFile(arguments[0]))); 

犀牛给了一些额外的有用的function,不一定在浏览器上下文有意义,但在控制台上下文。 function打印做你所期望的,并打印出一个string。 函数readFile接受一个文件pathstring作为参数并返回该文件的内容。

你会调用上面的东西

 java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js 

你可以在你的Rhino运行脚本中混合使用Java和Javascript,所以如果你知道一点Java,那么使用文本stream来运行它也不会太难。

如果您使用的是nodejs,那么请尝试uglify -js

在Ubuntu 12.04上,假设你已经安装了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转换为制表符,我可以通过展开Ubuntu 12.04来运行它:

unexpand --tabs=4 cutefoo.js > cuterfoo.js

或者你可以一口气做到这一点:

uglifyjs foo.js --beautify | unexpand --tabs=4 > cutestfoo.js

你可以在这里find更多关于未解决的问题

所以毕竟这个文件看起来像这样:

 function foo(bar, baz) { console.log("something something"); return true; } 

更新2016-06-07

看来uglify-js的维护者现在正在使用版本2,尽pipe安装是一样的。

更新2014年4月

自2010年我回答这个问题以来,美化器已经被重写了。现在有一个python模块,一个用于nodejs的npm Package,而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 ++代码)而不是犀牛(基于java的JS引擎,打包作为“js.jar”)。 所以你可以用V8代替犀牛。

如何使用:

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 

新(替代)

安装/编译v8 lib从svn,请参阅上述zip文件中的v8 / README.txt

  ./jsbeautify somefile.js 

与犀牛版本有略微不同的命令行选项,

– 在Eclipse中configuration为“外部工具”时效果很好

我漂亮的差异工具是完全用JavaScript编写的,所以在所有的操作系​​统上都能很好地工作。 它支持JavaScript,CSS和使用XML风格分隔符(包括HTML)的任何标记语言的美化和缩小。

http://prettydiff.com/?m=beautify

到目前为止,我find了几个在线的:

  • JavaScript美化
  • 美化Javascript

还在寻找可以从命令行运行的东西。

我无法为接受的答案添加评论,所以这就是为什么你看到一个本来不应该存在的post。

基本上我还需要在java代码中的一个JavaScript美化工具,我惊讶地没有可用的,只要我能find。 所以我完全基于接受的答案编写了一个(它包装了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。

希望能在你的项目中节省一些时间。

这是一个非常有用的网站来美化/缩进你的js文件。 我经常使用它。 检查这个: http : //jsbeautifier.org/

下面是一个用.NET编写的javascript美化工具,它支持命令行和交互模式: http : //www.rahulsingla.com/blog/2010/12/jsbeautifier-net-javascript-beautifier-in-net

除.Net 2.0之外,没有外部依赖。

我写了一篇文章,解释如何在5分钟内构build一个用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或移动到已经存在的文件夹。

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

在这种情况下,Intellij IDEA(testing11.5)可以做到这一点。

您只需要select您的任何项目文件,然后在主IDE菜单中select“代码” – >“重新格式化代码..”。 然后在对话框中select“目录中的所有文件…”并按“Enter”。 只要确保你为JVM专用了足够的内存。

使用现代的JavaScript方式:

与Grunt的jsbeautifier插件结合使用Grunt

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

所有你需要的是build立一个Gruntfile.js与适当的任务,这也可以涉及文件连接,lint,uglify,minify等,并运行grunt命令。

在控制台中,你可以用–mode --mode=java来使用艺术风格 (又名AStyle)。
它工作的很好,它是免费的,开源的和跨平台的(Linux,Mac OS X,Windows)。

美化者的问题是输出和过滤的select以及严重缺乏命令行美化的问题。 我最近开始修改YUI压缩器来美化代码。 如果你想使自己美化,我必须强烈推荐这种方法。 YUI是开源的,并且附带一个ant构build文件,使得它很容易被修改和编译。

我使用这个( http://jsbeautifier.atomproject.net/ )美化。 它的在线和免费。

如果你使用记事本+ +这里是一个记事本++插件http://www.sunjw.us/jsminnpp/

尝试记事本+ +插件JSMinNpp(从1.15更名为JSTool)

http://www.sunjw.us/jsminnpp/

这是一个免费的独立美化(以及更多):

http://www.yaldex.com/Free_JavaScript_Editor.htm