<p>I am writing a batch script in order to beautify JavaScript code. It needs to work on both <strong>Windows</strong> and <strong>Linux</strong>. </p>

<p>How can I beautify JavaScript code using the command line tools? </p>

First, pick your favorite Javascript based Pretty Print/Beautifier.  I prefer the one at
http://jsbeautifier.org/
, because it's what I found first.  Downloads its file
https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js
Second, download and install The Mozilla group's Java based Javascript engine,
Rhino
.  "Install" is a little bit misleading;  Download the zip file, extract everything, place js.jar in your Java classpath (or Library/Java/Extensions on OS X).  You can then run scripts with an invocation similar to this
```
```
java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js
```
```
Use the Pretty Print/Beautifier from step 1 to write a small shell script that will read in your javascript file and run it through the Pretty Print/Beautifier from step one.  For example
```
```
//original code    
(function() { ... js_beautify code ... }());

//new code
print(global.js_beautify(readFile(arguments[0])));
```
```
Rhino gives javascript a few extra useful functions that don't necessarily make sense in a browser context, but do in a console context. The function print does what you'd expect, and prints out a string.  The function readFile accepts a file path string as an argument and returns the contents of that file.
You'd invoke the above something like
```
```
java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js
```
```
You can mix and match Java and Javascript in your Rhino run scripts, so if you know a little Java it shouldn't be too hard to get this running with text-streams as well.