2

値が(ネストされた)オブジェクトリテラルである変数を持つfile.jsファイルがあります。何かのようなもの

var ojb = {
    foo: {
        bar: 'baz'
    },
    quux: [
        { /* stuff */ },
        { /* stuff */ }
    ]
};

--formatting=PRETTY_PRINT私はオプションと組み合わせてグーグルクロージャーコンパイラを使用し--compilation_level=WHITESPACE_ONLY、出力を「クリーン」にしたいので(コメントを削除し、中かっこを統一します...)、オブジェクトリテラルを「インライン」にします。出力には次のものが含まれます。

 var obj = {"foo":{"bar":"baz"},"quux":[{...},{...}]};

これは「判読不能」です。

コンパイラにさまざまな行のオブジェクトリテラルにまたがるように指示する方法はありますか(理想的には、http://jsonlint.comの出力のような構文が必要です)

4

1 に答える 1

1

私のコメントあなたの質問に対する実際の回答なので、ここに投稿します。コンパイルはすべて
コンパイルモードWHITESPACE_ONLYの中で最も侵襲的ではないかもしれませんが、ドキュメントが明確に述べているように:

WHITESPACE_ONLY コンパイル レベルでは、コードからコメントが削除され、改行、不要なスペース、およびその他の空白も削除されます。出力 JavaScript は、ソース JavaScript と機能的に同じです。

ドキュメントから、コンパイルモードについて。このページで読めるように、WHITESPACE_ONLYコンパイルはすべてのモードの中で最も人間が読めるコードを返します。他のすべてのモードはWHITESPACE_ONLYコンパイルを実行し、それに加えて他のことを行います。
あなたの質問に答えるには:いいえ、一部のコードで余分な空白を変更せずに残して、コードの他の部分で夢中になるようにコンパイラに指示する方法はありません。あなたができる唯一のことは、保存したいオブジェクトリテラルを抽出して別のファイルに保存するスクリプトを書くことです。オリジナルをコンパイルした後、これらのオブジェクト リテラルのインライン バージョンを「空白が多い」対応物に置き換えることができます。

しかし、あなたはコードを読みやすくすることに熱心なので、何も縮小しないか、コンソールのきれいな印刷ボタンを使用して、コンソールがオブジェクトを検査するために提供する他の優れた機能と連携させることを強くお勧めします。
さらに良いアプローチは、コードを書き、それを広範囲にテストし、本番用にのみ縮小/コンパイルすることです (IE: コーディング/デバッグが完了したら)。結局のところ、これらのツールはそのように使用されることを意図していたのです。

于 2012-09-03T11:39:42.157 に答える