为了美化JavaScript代码,我正在编写一个批处理脚本。它需要同时在和Linux上工作。
如何使用命令行工具美化JavaScript代码?
发布于 2008-08-26 03:22:40
首先,选择您最喜欢的基于Javascript的漂亮打印/美化。我更喜欢http://jsbeautifier.org/的那个,因为这是我最先发现的。下载其文件https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js
其次,下载并安装Mozilla组的基于Java的Javascript引擎犀牛。“安装”有点误导;下载zip文件,解压缩所有内容,将js.jar放入您的Java (或OS上的库/Java/扩展名)。然后,可以使用类似于以下内容的调用运行脚本
java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js使用步骤1中的漂亮Print/Beautifier来编写一个小的shell脚本,该脚本将在您的javascript文件中读取,并从第一步开始运行这个漂亮的Print/Beautifier。例如
//original code
(function() { ... js_beautify code ... }());
//new code
print(global.js_beautify(readFile(arguments[0])));犀牛为javascript提供了一些额外的有用函数,这些函数在浏览器上下文中不一定有意义,但在控制台上下文中却是如此。函数print执行您预期的操作,并打印出一个字符串。函数readFile接受文件路径字符串作为参数,并返回该文件的内容。
您可以调用上面的内容,比如
java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js您可以在Rhino运行脚本中混合和匹配Java和Javascript,因此,如果您了解一些Java,那么也可以通过文本流来运行Java和Javascript。
发布于 2010-10-28 09:38:19
2014年4月更新
自我在2010年回答这个问题以来,美容师已经被重写了。现在那里有一个python模块,一个用于nodejs的npm包,jar文件也不见了。请阅读github.com上的项目页面。
Python风格:
$ pip install jsbeautifier国家预防机制风格:
$ npm -g install js-beautify要使用它(这将在终端上返回经过美化的js文件,主文件保持不变):
$ js-beautify file.js要使更改对文件生效,您应该使用以下命令:
$ js-beautify -r file.js原始答案
加入“艾伦·斯托姆”的答案
基于http://jsbeautifier.org/的命令行美化器已经变得更容易使用了,因为它现在(或者)是基于V8 javascript引擎(c++代码)而不是犀牛(基于java的JS引擎,打包为"js.jar")。所以你可以用V8代替犀牛。
使用方法:
从jsbeautifier.org下载http://github.com/einars/js-beautify/zipball/master压缩文件
(这是一个链接到压缩文件(如http://download.github.com/einars-js-beautify-10384df.zip)的下载URL )
旧的(不再起作用了,jar文件不见了)
java -jar js.jar name-of-script.js新的(备选方案)
从svn安装/编译v8库,请参阅上述zip文件中的v8/README.txt
./jsbeautify somefile.js-has命令行选项与犀牛版本略有不同,
当配置为“外部工具”时,-and在Eclipse中工作得很好
发布于 2013-05-12 23:55:27
如果您正在使用nodejs,那么尝试丑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空间缩进转换为制表符,我可以通过Ubuntu12.04附带的unexpand运行它:
unexpand --tabs=4 cutefoo.js > cuterfoo.js
或者你可以一蹴而就:
uglifyjs foo.js --beautify | unexpand --tabs=4 > cutestfoo.js
您可以了解更多关于未展开这里的信息。
因此,在这一切之后,我得到了一个类似于以下内容的文件:
function foo(bar, baz) {
console.log("something something");
return true;
}更新2016-06-07
尽管安装方式是相同的,但uglify-js的维护者现在似乎正在第2版上工作。
https://stackoverflow.com/questions/18985
复制相似问题