コマンドラインを使用してJavaScriptコードを美化するにはどうすればよいですか?


101

JavaScriptコードを美化するために、バッチスクリプトを作成しています。WindowsLinuxの両方で動作する必要があります。

コマンドラインツールを使用してJavaScriptコードを美化するにはどうすればよいですか?


私のPretty DiffツールはすべてJavaScriptで記述されているため、すべてのオペレーティングシステムで同様に機能します。JavaScript、CSS、HTMLを含むXMLスタイルの区切り文字を使用するマークアップ言語の美化と縮小をサポートしています。prettydiff.com/?m=beautify

回答:


64

まず、お気に入りの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を知っている場合でも、テキストストリームでこれを実行するのはそれほど難しくありません。


3
あなたが与えたリンクは壊れています、それは私が思うこれであるはずです、jsbeautifier.org
Sinan

2
方法::〜$ sudo apt-get install libv8-dev libv8-2.2.18:〜$ cd einars-js-beautify-f90ce72 / v8:〜$ g ++ -o jsbeautify jsbeautify.cpp -lv8 -Llib -lpthreadうまくいきます。Einar Lielmanisと関係者全員に感謝します。
Беров

1
これらは移動するターゲットのようです。今jsbeautifierサイトの情報はそれがpythonで書かれていると言います。
セス

:CMDLINEユーザー向けのアップデートは、以下のレポはかなり印刷jsのためだけではコマンドラインツールをスタンドにインストールするのは簡単ていgithub.com/einars/js-beautify.git
drhodes

使用現代のJSは、うなり声を使用してのアプローチ:stackoverflow.com/questions/18985/...
Tchakabam

33

2014年4月の更新

2010年に私がこれに回答してから、美容ツールが書き直されました。Pythonモジュールがそこにあり、nodejs用のnpmパッケージがあり、jarファイルはなくなりました。github.comプロジェクトページをお読みください。

Pythonスタイル:

 $ pip install jsbeautifier

NPMスタイル:

 $ npm -g install js-beautify

それを使用するには:

 $ js-beautify file.js

元の答え

@Alan Stormの回答に追加

http://jsbeautifier.org/に基づくコマンドラインビューティファイア は、rhino(javaベースのJSエンジン、パッケージ化)ではなくV8 javascriptエンジン(c ++コード)に基づいているため、使用が少し簡単になりました。 「js.jar」として)。したがって、rhinoの代わりにV8を使用できます。

使い方:

jsbeautifier.orgのzipファイルをhttp://github.com/einars/js-beautify/zipball/masterからダウンロードし ます。

(これは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でうまく機能します


3
または、v8よりもpythonを好む場合は、現在pythonモジュールあります。
keturn

1
npmパッケージはjs-
beautify

30

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

unexpandの詳細については、こちらをご覧ください。

結局のところ、次のようなファイルが作成されます。

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

2016年6月7日更新

インストールは同じですが、uglify-jsのメンテナがバージョン2で動作しているようです。


4
これは、正しいコマンドラインのJavaScriptコードbeautiferための答え。
bitek

uglifyjs -bインデントを修正するだけでなく、コードを再配置して書き直します。それは私が欲しかったものではありません。Ubuntu 14.04で古いバージョンを使用していました。
サムワトキンス

uglifyjs -bコードの並べ替えと書き換えの方法についてもう少し説明してください。
erapert 2017


3

コンソールでは、でアーティスティックスタイル(別名AStyle)を使用できます--mode=java
それは素晴らしく機能し、無料のオープンソースでクロスプラットフォーム(Linux、Mac OS X、Windows)です。


2

最新のJavaScriptの方法を使用します。

Gruntjsbeautifierプラグインと組み合わせてGruntを使用する

npmを使用すると、簡単にすべてを開発環境にインストールできます。

必要なのは、適切なタスクでGruntfile.jsを設定することだけです。これには、ファイルの連結、lint、uglify、minifyなども含まれ、gruntコマンドを実行できます。


2

承認された回答にコメントを追加できないため、そもそも存在すべきではないはずの投稿が表示されます。

基本的に、JavaコードにJavaScript美容ツールも必要でしたが、驚いたことに、私が見つけた限りでは利用できません。だから私は受け入れられた答えに完全に基づいて自分でコーディングしました(それはjsbeautifier.org beautifier .jsスクリプトをラップしますが、javaまたはコマンドラインから呼び出すことができます)。

コードはhttps://github.com/belgampaul/JsBeautifierにあります

rhinoとbeautifier.jsを使用しました

コンソールからの使用方法:java -jar jsbeautifier.jarスクリプトのインデント

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

Javaコードからの使用法:public static String jsBeautify(String jsCode、int indentSize)

コードを拡張することを歓迎します。私の場合、インデントのみが必要だったので、開発中に生成されたJavaScriptを確認できました。

プロジェクトの時間を節約できることを願っています。


1

JavaScript実装されコマンドラインJavaScript美化機能を5分以内に構築する方法を説明した記事を書きました。YMMV。

  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に追加するか、すでにそこにあるフォルダーに移動します。


1

コマンドラインツールについて尋ねたとき、すべてのjsファイルをバッチで美化したいと思ったと思います。

この場合、Intellij IDEA(11.5でテスト済み)がこれを実行できます。

プロジェクトファイルのいずれかを選択し、メインIDEメニューで[コード]-> [コードの再フォーマット...]を選択するだけです。次にダイアログで「ディレクトリ内のすべてのファイル...」を選択し、「Enter」を押します。JVMに十分なメモリを割り当てていることを確認してください。


0

ライナーの選択肢はいくつかあります。npmとともに使用するか、npxとともにスタンドアロンで使用します。

準標準

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

標準

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

きれい

npx prettier --single-quote --write --trailing-comma all "js/**/*.js"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.