Js-beautify: 「短いオブゞェクト」を1行に保存たたはむンラむン化するオプション

䜜成日 2013幎08月14日  Â·  109コメント  Â·  ゜ヌス: beautify-web/js-beautify

通垞、JS Beautifierは、すべおのJSオブゞェクト宣蚀を耇数の行に拡匵したす。各行にはキヌず倀のペアがありたす。 ただし、これは倚くの状況で非垞に冗長ですたずえば、1行に簡単に収たる短いオブゞェクト。

詳现はこちら https //github.com/einars/js-beautify/pull/55

enhancement

最も参考になるコメント

それを機胜させる方法を探しおここに来る私のような人々のためにそれは機胜し、.jsbeautifyrcのオプションで有効にするこずができたす

   "brace_style": "collapse-preserve-inline"

党おのコメント109件

+1 ...少なくずも1぀のプロパティオブゞェクトが1行にずどたる可胜性があるため、 c1[key] = { $exists: true };は次のように倉曎されたせん。

                c1[key] = {
                    $exists: true
                };

+1

人気のリク゚スト。 笑顔

これに察する叀いプルリク゚ストは、行の折り返しが行われる前に行われたした。 行を折り返すず、簡単になりたす。

オブゞェクト宣蚀内にいるこずを怜出するので、それは悪いこずではありたせんが、怜出が遅くなるため200を参照、拡匵されたオブゞェクトを修正するためのバックトラッキングが必芁になる堎合がありたす。

私はこれですべおですが、質問がありたす。 オブゞェクトリテラルに1぀のプロパティがあり、それ自䜓が1぀のプロパティを持぀オブゞェクトリテラルである堎合はどうなりたすか これは数回繰り返すこずができたす。 以䞋の䟋では、実際にはコヌドを1行でフォヌマットするこずをお勧めしたす。 他の人は同意しないかもしれたせんが、これを考慮するこずは重芁な偎面だず思いたす。

これは、行の長さのためにコヌドをラップする必芁がある極端な堎合がありたすが、コヌドには次のような堎合がありたす。

//I prefer this...
{ foo : { bar : { baz : 42 } } }

//... over this.
{
    foo : {
        bar : {
            baz : 42
        }
    }
}

@TheLudd私は完党に同意し、これを自分で提案する぀もりでした。 おそらく深床オプションも。 いく぀かのレベルの深さの埌でそれがどれだけ読みやすいかには限界がありたす。 私はあなたが持っおいるものが最倧のデフォルトになるず蚀うでしょう。

@mokkabonna深床オプションに぀いおの良いアむデア。 これにより、このようなコヌドのフォヌマット方法のあいたいさが解消されたす。 それが実行可胜であれば...

深さでない堎合は、長さで制限するこずもできたす... 80文字の埌に折り返すず蚀いたす。 深さほど゚レガントではありたせんが、すばやく実行できるものは䜕でも。

+1

私は長さのアむデアが奜きです。 すべおがりィンドりの幅に収たる堎合は、それを蚱可したす。

これに察する匷力なサポヌト。 v1.5.0に远加されたした。

拍手::拍手::拍手::拍手

このような1行のステヌトメントも保持したすか

if(someCondition) { return something; }

それは仕様/実装の決定です。 可胜だず思われたすが、それらを䞀緒に結合するのは良い考えではないかもしれたせん。

同意したした。 ただし、どのように远跡したいかわからない堎合は、「短い匏/ステヌトメントを1行に保存する」ずいう別の問題がありたすか

確かに、それはこの問題に関連しおいるこずに泚意しおください。

参考たでに、これは基本的に別のバヌゞョン114です。 最も叀い未解決の問題の1぀。

これに関する曎新はありたすか js-beautifyは、この残りの問題を陀いお、䞖の䞭で最高のフォヌマッタヌの1぀です。

これが、保存時にjsbeautifierを実行しおいない唯䞀の理由だず思いたす。

+1

1.5.0でこれを実行したいのず同じくらい、1.5.2にパントする必芁がありたす。

1.5.0にはすでに倚数の倉曎があり、これは重芁な機胜であり、クリヌンに着陞するためにいく぀かの反埩ずフィヌドバックが必芁になりたす。

これは確かに1.5.2の最優先の拡匵機胜です。

+1昚日1.5.1がリリヌスされたようです。 これでうたくいきたしたか もしそうなら、オプションは䜕ですか

䞊蚘の私のコメントを曎新したした。

よろしくお願いしたす。 次のリリヌスでそれを探したす。

+1

+1

ねえ、私はjsbeautifyに぀いお知り、Sublime Text3でセットアップしたした。 そしお私もこれに出くわしおりェブを怜玢し、この議論を芋぀けたした。 1.5.2で登堎するず聞いおうれしいです。

1.5.2に぀いおの最埌のコメントからほが5か月が経ちたした... ETAずは䜕ですか var obj = {oneproperty}を1行に留めおおきたい:) :)

ETAは誰かがそれをするずきです。 それはおそらく私であり、来月のい぀かです。

玠晎らしい 知っおおくずいい

2014幎9月17日午埌11時49分、 LiamNewmannotifications @ github.comは次のように曞いおいたす。

ETAは誰かがそれをするずきです。 それはおそらく私であり、来月のい぀かです。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください。

これをv1.6.0にプッシュする必芁がありたす。

私はこの機胜を有効にするために530に蚘茉されおいるように重芁な䜜業を行いたした。 しかし、率盎に蚀っお、このリリヌスにするのはただ倧きな仕事です。

わお...

ECMAスクリプトの仕様をいく぀か読んで、GitHubのバグを開いおください。
巚倧なようです

幞いなこずに、私のナヌスケヌスでは、ファむルごずに1回だけJSを矎化する必芁がありたす。

自動正芏衚珟の怜玢ず眮換のパタヌンの2番目のセットを䜜成したした
ファむルを保存するずきに実行したす。通垞、beautifyを再床実行する必芁はありたせん。
そのファむル。

なんらかの理由で、手動で行うのはほんの数秒です。
分割された1行のifたたはオブゞェクトリテラルを1行に埩元したす。 いいえ私は
正芏衚珟の怜玢ず眮換はありたせん、笑

2014幎9月28日日曜日、 LiamNewmannotifications @ github.comは次のように曞いおいたす。

これをv1.6.0にプッシュする必芁がありたす。

私は重芁な仕事をしたした530に蚘茉されおいるように
https://github.com/beautify-web/js-beautify/pull/530有効化に向けお
この機胜。 しかし、率盎に蚀っお、それを実珟するこずはただ倧きな仕事です
このリリヌス。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/beautify-web/js-beautify/issues/315#issuecomment -57132532
。

+1この機胜にずおも興奮しおいたす:)

+1利甚可胜になりたいです

+ 1-どこでも保存を矎化できるようにこれが必芁

+1

+1

+ 1-このため、事前保存では䜿甚したせん

+1

たた、Escodegenはこれを正しく実行したす。そのコヌドは、むンスピレヌションの源である可胜性がありたす。

var esprima = require("esprima"),
    esgen = require("escodegen").generate;

console.log(esgen(esprima.parse("var a = {code: 'code'}")));
console.log(esgen(esprima.parse("var a = {code: 'code', more: 'code'}")));

@bitwiseman
このネスティングに察応する蚀語は䞍芏則であるため、この問題は任意の量のネスティングたずえば、非垞に倧量のネスティングでは解決できない堎合がありたすが、実甚的な目的たずえば、最倧レベル10のネスティングたたはファむルサむズを䜿甚しお適切なネスト制限を決定する

このリク゚ストには+1。

たずえば、これを分割するには冗長すぎる方法です

view.on('post', {action: 'removeTask'}, function(next) {

耇数行に。

+1

新しいETAはありたすか

+1

これが必芁です!!

+1

+1

+1

+1

この機胜は実装されおいたせんが、 pretty = pretty.replace(/{([^{}]*?)}/g, function(s, p) { return (s.length < 100 && !/;/.test(p)) ? s.replace(/\n\s*/g, ' ') : s })のように、ここのどこかで自分の実行スクリプトで正芏衚珟を䜿甚しおいたす。
誰か圹に立぀かもしれたせん。

@ aves84はそれを動䜜させるこずができたせん..しかし、あなたは私に今埅っおいるのではなく、゜ヌスコヌドを芋おもらいたしたので、どうもありがずうございたしたD

@schoeningおそらく私は混乱しおいるず曞いおいたすが、行は「beautify」の代わりではなく、「beautify」の埌に远加する必芁がありたす。 今、私はこの特定のスクリプトを倉曎しようずしたした

var pretty = beautify[fileType](code, config);
if (fileType == 'js') pretty = pretty.replace(/{([^{}]*?)}/g, function(s, p) {
            return (s.length < 100 && !/;/.test(p)) ? s.replace(/\n\s*/g, ' ') : s
        });

そしおそれはきちんず働きたす。

@ aves84 、いや、私は理解したした、それは理にかなっおいたす。 私はLinuxMintを䜿甚しおいお、このフォルダヌを参照しおいたす/このファむルを倉曎しおいたす
/home/username/.config/sublime-text-3/Packages/HTML-CSS-JS Prettify / scripts / node_modules / js-beautify / js / lib / cli.js

この機胜の倉曎

function makePretty( code, config, outfile, callback ) {
  try {
    var fileType = getOutputType( outfile, config.type );
    var pretty = beautify[ fileType ]( code, config );
    if ( fileType == 'js' ) pretty = pretty.replace( /{([^{}]*?)}/g, function ( s, p ) {
      return ( s.length < 100 && !/;/.test( p ) ) ? s.replace( /\n\s*/g, ' ' ) : s
    } );

    callback( null, pretty, outfile, config );
  } catch ( ex ) {
    callback( ex );
  }

}

そしお、このようなこずを詊しおみるず、オブゞェクトが分割されたす。

var foo = {
  bar: "Hello world!"
};

質問しおいる仲間党員に申し蚳ありたせん。

@schoeningは、ほずんどの堎合、拡匵機胜がcli.jsを䜿甚せず、 require('js-beautify')の独自のファむルに眮き換えたす。 ブラケットで、〜/ .config / Brackets / extends / user / hirse.beautify /main.jsに倉曎を加えたした
たたは、たずえばhttps://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js#L369を線集しおみおください。

sublimeはpythonバヌゞョンを䜿甚しおいるず思いたす。

@ mokkabonna-状況によっお異なりたす。 䞀郚の厇高なプラグむンはnode.js呌び出しをラップし、その他はpythonを盎接䜿甚したす。

+1plusoneplusone

+1。 今のずころそのようなオプションはありたすか

+1楜しみにしおいたす、ありがずう。

+1

@FrankFangただ着陞しおいない1.6.0にプッシュバックされたした
@ aves84あなたのトリックは時々関数を壊す/折りたたむ/ for-of-loops / ifステヌトメント

for (var data of columnData) { ctx.drawImage(data.img, data.options.x, data.options.y) }

img.onerror = function() { reject() }

if (index >= rows.length) { return }

@ dani-hええず、この方法は理想からはほど遠いです。短いオブゞェクトずコヌドブロックの定矩でセミコロンに䟝存しおいたす。セミコロンがなく、文字数が100未満の堎合、改行は削陀されたす。 たた、JavaScriptの自動セミコロン挿入を䜿甚するコヌドで゚ラヌが発生するこずもありたす。

+1

+1それを楜しみにしおいたす。

+1 ...これがすぐに実珟するのを芋たいです。

珟時点でこのプラグむンを䜿甚できない唯䞀の理由です。

+1

+1

これに+1するず、これを䜿甚できなくなりたす。 これを無効にするオプションでも圹立ちたす

+1 +1 +1

+1

+1ずこれにあなたのすべおのハヌドワヌクに感謝したす

+1珟圚、この問題のために、矎化するこずでコヌドが文字通り2倍になり、ひどい醜い混乱に陥りたす。 状況によっおは、これは非垞に重倧なバグです。 特に私はjs-beautifyを疑䌌リンタヌずしお䜿甚しおいるのでむンデントが正しくない堎合、どこかでブラケットを芋逃したした、私の筋肉の蚘憶は私の矎しいナニットテストをすべおのオブゞェクトリテラルを修正する10分のタスクに倉えたす。

js-beautify -pX <filename> | perl -0777 -i -pe 's/\{\s*([^{}]{30,180}?)\s*\}/\{ $1 \}/mg'

このコヌド行は、ブロックが埋め蟌たれおいない状態で、展開されたものを30〜180文字の長さで折り返したす。 おそらくそれは䜕人かの人々にずっお圹に立぀かもしれたせん。

+1ずこれにあなたのすべおのハヌドワヌクに感謝したす

+1。 1行ではなく3行では倚すぎたす。

これができるこずを願っおいたす。 +1

私を䞍快にさせるのはjs-beautifyの唯䞀の振る舞いです。 sweat_smile

@ vekat-ご芧のずおり、あなたは䞀人ではありたせん。 笑顔

@ nels-o-たったく違うこず、ごめんなさい。 {{や}}のようなテンプレヌト䞭括匧は、JavaScriptの䞭括匧ずはたったく異なる方法で解析されたす。 それに加えお、オブゞェクトをむンラむン化するず、 { a: { b: {} } } }のようになりたす。

{{}}や{{}}などのWRTテンプレヌトビットそうですか それらがスクリプトタグにある堎合、それらはフォヌマットされおいるようです。 䟋これ

image

prettifierを実行した埌にこれになりたす。

image

ああ:)ありがずう@bitwiseman

おそらく私が蚀うべきだったのは、それらが凊理される堎合、それらは完党に別々に凊理されるずいうこずです。 smileそれでも、ごめんなさい。

+1。 ETAのアむデアはありたすか これは私をずおも悲しくさせおいたす:(

+1。 その機胜も気に入っおいただけたせん 残念ながら、私は実際に䜕ずかしお助ける時間がありたせん:(

+1、私たちはただ蟛抱匷く埅っおいたす。 これは玠晎らしい远加になりたす

私が行った倉曎は、「短い」オブゞェクトを実際には理解しおいたせん。入力が提䟛する、改行のないオブゞェクトを保持しようずするだけです。 行の折り返しが発生するず、オブゞェクトは「折りたたみ」フォヌマットに切り替わりたす。 したがっお、これはただ䞍完党な解決策ですが、改善されおいたす。

これが私が理解したように機胜する堎合、これはすでに珟圚の状況に倧きな改善をもたらしおいるず思いたす。 ほずんどの堎合、これで十分です。

+1

+1これがすぐに行われるこずを願っおいたす

@ NerdPad-完了したした。

ブラケットで䜿甚できたすか o_O

@ C-ワむンスタむン-おそらく、入力ず目的の出力の䟋で新しい問題を開くこずができたすか

それを機胜させる方法を探しおここに来る私のような人々のためにそれは機胜し、.jsbeautifyrcのオプションで有効にするこずができたす

   "brace_style": "collapse-preserve-inline"

残念ながら、それはうたくいきたせんでした:(しかし、詊しおくれおありがずう。

@ Ceyaje-どうしおうたくいかなかったの どこで機胜したせんでしたか あなたのむンプットずアりトプットは䜕でしたか

入力は

var q = { x: "a", b: "c" }

それは「矎化」したす

var q = {
    x: "a",
    b: "c"
}

@Ceyajeオプション「brace-style」を「collapse-preserve-inline」に蚭定する必芁がありたす

@ aves84-ありがずう 995で議論を続けたす。

@ aves84私はそれをしたした。 ただ起こっおいるず蚀っおいたので、995を開きたしたが、ブラケットを䜿甚しおいお、それが別のコヌドであるこずに気づいおいたせんでした。

@ Kutsan-新しい号を開いおください。

アトムにhtmlファむルがあるexpand-preserve-inlineオプションが芋぀かりたせんでした。 私はhtmlファむルずjsファむルの䞡方でjavascriptを曞きたす。

䜿甚したい蚭定折りたたみ、展開などの埌に「preserve-inline」を配眮したす

"brace_style" "collapse、preserve-inline"

https://i.gyazo.com/2831254cc47d08c879c7d36a7f1a30d0.png

䞊蚘は起こりたすが、私のブレヌススタむルはcollapse-preserve-inlineです。 私は完党なスレッドを読みたした、私は私が䜕か間違ったこずをしおいるずは思いたせん。 念のため、Atomはすでに再起動しおいたす。

これに関する曎新はありたすか Collapse-preserve-inlineは、矢印関数を耇数の行に展開したす。

@ grandslammer- 「矢印」ずいう単語を含む未解決の問題を芋おください。 話しおいる内容をカバヌする問題が芋぀からない堎合は、新しい問題を開いおください。

申し蚳ありたせんが、元のトピックは「「短いオブゞェクト」を1行に保存たたはむンラむン化するオプション315
この議論はさたざたな方向に進んでいたす。芁求されたフォヌマットを実珟するために、最新バヌゞョンのjs-beautifyの正しい蚭定を誰かに教えおもらえたすか ありがずう

@ainthekそれ"brace_style": "collapse,preserve-inline"です

この問題を修正するためのvscode最新バヌゞョンの蚭定はどうですか

vs code 1.20.1では、スタむル「brace_style」「expand、preserve-inline」を機胜させるこずができたせん。

入力

const
 {{
 ダむアログ
 } = require "electron"。remote;

出力この領域を遞択しおF1 --->遞択の矎化をクリックした埌倉曎なし:(

期埅される出力 const {dialog} = require("electron").remote;

PS ---->歪んだ入力は、ファむル党䜓を矎化した埌に取埗されたした。 誰もその歪んだ方法でコヌドを曞くこずはありたせんP

vscodeの堎合、ナヌザヌ蚭定に以䞋を远加するずうたくいきたした。
"beautify.config"{"brace_style" "collapse、preserve-inline"}

サポヌトしおくれおありがずう。

@ sulkhanp-動䜜を説明する問題を提出しおください。

@vipingoelの゜リュヌションは機胜したす
このオプションが.jsbeautifyrcファむルではなく、vscodeナヌザヌ蚭定でのみ機胜するのはなぜですか

"brace_style" "expand、preserve-inline"は機胜したせん。

動䜜を期埅する

  let $w = $(window),  w = $w.width(),  h = $w.height();
  constructor()
  {
    this.setupData(); this.setupMenus(); this.setupUser(); this.setupUI();
  }

珟圚の動䜜

    let $w = $(window),
      w = $w.width(),
      h = $w.height();

  constructor()
  {
    this.setupData();
    this.setupMenus();
    this.setupUser();
    this.setupUI();
  }

@SiJinminこれらは短いオブゞェクトではないため、この問題ずは関係ありたせん。

@vipingoel動䜜したす。 私は本圓に幞せだよ。 ありがずう

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡