Closed irok closed 7 years ago
コード見ていたのですが、もし lib/formatSelectors.js の isSingleLine が、
.foo, .bar { ... }
の場合は true
.hoge,
.fuga {
...
}
の場合は false になるのが正しいのだとすれば、そうなっていないのが原因な気がします。
lib/formatSelectors.js#L19 を見ると、!tmp[1].match('\n')
で改行の有無を見て isSingleLine に true を設定していますが、rule.selectors
の各要素はpostcssによってtrimされていますので、\n
が入ってこないように思います。
https://github.com/postcss/postcss/blob/master/lib/rule.es6#L40-L42
rule.selector
には分割前のセレクタが入っているので、
var isSingleLine = !/\n/.test(rule.selector)
でよいのかなと思いました。
とはいえ、それだけでは思ったとおりの出力は得られず、separator の構築部分もいじる必要がありそうでした。
stylefmt は .stylelintrc
などの stylelint の config ファイルがプロジェクトに含まれていた場合に、stylelint から警告が発生しないように css を整形します。
.stylelintrc
の設定通りに css が整形されないというご報告だと思うのですが、.stylelintrc
は stylefmt の設定ファイルではないということをご理解頂ければと思います 🙇
ご回答ありがとうございます。 stylefmt の開発方針というか目的というか、その辺りをよく理解できていませんでした。 好みのスタイルに整形するツールではないということですね。目的に合わせて使うようにします。
セレクタを複数指定するときに、一行で書いてるとこと複数行で書いてるところがあって、どちらもそのままにしたいのですが、どう設定をいじっても一行または複数行に統一されてしまいます。
.stylelintrc は以下のようになってます。(stylelintはこれで通ります。)
※
selector-list-comma-newline-before
は未指定です環境は Node 4.4.2, stylefmt 4.2.3, gulp-postcss 6.1.1 (postcss 5.1.1) です。