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 を使用して、javascript ファイルを読み取り、ステップ 1 の 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年にこれに回答して以来、beautifierは書き直されました。そこにはpythonモジュール、nodejs用のnpmパッケージがあり、jarファイルはなくなりました。github.com のプロジェクト ページをお読みください。
パイソン スタイル:
$ pip install jsbeautifier
NPM スタイル:
$ npm -g install js-beautify
それを使用するには(これにより、端末上に整形されたjsファイルが返されますが、メインファイルは変更されません):
$ js-beautify file.js
変更をファイルに有効にするには、次のコマンドを使用する必要があります。
$ js-beautify -r file.js
元の答え
@Alan Storm の回答に追加
http://jsbeautifier.org/に基づくコマンド ライン ビューティファイアー は、(代わりに) rhino (Java ベースの JS エンジン、パッケージ化された) の代わりに V8 javascript エンジン (c++ コード) に基づいているため、少し使いやすくなりました。 「js.jar」として)。したがって、rhino の代わりに V8 を使用できます。
使い方:
http://github.com/einars/js-beautify/zipball/masterから jsbeautifier.org zip ファイルをダウンロードし ます。
(これはhttp://download.github.com/einars-js-beautify-10384df.zipなどの zip ファイルにリンクされたダウンロード URL です)
古い (動作しなくなった、jar ファイルがなくなった)
java -jar js.jar name-of-script.js
新しい (代替)
svn から v8 lib をインストール/コンパイルします。上記の zip ファイルの v8/README.txt を参照してください。
./jsbeautify somefile.js
-rhino バージョンとはわずかに異なるコマンド ライン オプションがあります。
-「外部ツール」として構成すると、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 スペースのインデントをタブに変換したい場合は、unexpand
Ubuntu 12.04 に付属している方法で実行できます。
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に取り組んでいるようです。
コンソールでは、 Artistic Style (別名 AStyle) を で使用できます--mode=java
。
それは素晴らしく機能し、無料で、オープンソースで、クロスプラットフォーム (Linux、Mac OS X、Windows) です。
受け入れられた回答にコメントを追加できないため、そもそも存在しないはずの投稿が表示されます。
基本的に、私はJavaコードにJavaScriptビューティファイアも必要でしたが、驚いたことに、私が見つけた限りでは何も利用できませんでした。そのため、受け入れられた回答に基づいて自分でコーディングしました(jsbeautifier.org beautifier .jsスクリプトをラップしますが、Javaまたはコマンドラインから呼び出すことができます)。
コードはhttps://github.com/belgampaul/JsBeautifierにあります。
rhino と beautifier.js を使用しました
コンソールからの使用法: java -jar jsbeautifier.jar スクリプトのインデント
例: java -jar jsbeautifier.jar "関数 ff() {return;}" 2
Java コードからの使用法: public static String jsBeautify(String jsCode, int indentSize)
コードの拡張は大歓迎です。私の場合、開発中に生成されたJavaScriptを確認できるように、インデントのみが必要でした。
プロジェクトの時間を節約できることを願っています。
JavaScriptで実装されたコマンドラインJavaScriptビューティファイアを5分以内に構築する方法を説明する記事を書きました。YMMV。
- 最新の安定したRhinoをダウンロードして、どこかで解凍します。例:〜/ dev / javascript / rhino
- 前述のjsbeautifier.orgから参照されているbeautify.jsをダウンロードし、どこかにコピーします。例:〜/ dev / javascript / bin / cli-beautifier.js
beautify.jsの最後にこれを追加します(JavaScriptにいくつかの追加のトップレベルプロパティを使用します):
// Run the beautifier on the file passed as the first argument. print( j23s_beautify( readFile( arguments[0] )));
次のコードを実行可能ファイル(例:〜/ 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 $*
(オプション)jsbeautifier.jsのあるフォルダーをPATHに追加するか、すでにそこにあるフォルダーに移動します。
コマンド ライン ツールについて質問されたとき、すべての js ファイルをバッチで美しくしたかっただけだと思います。
この場合、Intellij IDEA (11.5 でテスト済み) でこれを実行できます。
プロジェクト ファイルのいずれかを選択し、メインの IDE メニューで [コード] -> [コードの再フォーマット] を選択するだけです。次に、ダイアログで「ディレクトリ内のすべてのファイル...」を選択し、「Enter」を押します。JVM に十分なメモリを割り当てていることを確認してください。