質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

Q&A

解決済

1回答

3842閲覧

csscombの設定について

1000

総合スコア204

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

0グッド

0クリップ

投稿2017/02/10 02:17

編集2017/02/10 06:31

現在、gulpでsassとcsscombを利用しています。
そこでどうしてもつまづいたので相談させてください。

scss

1a { 2 &:link { color: #000; text-decoration: underline; } 3 &:visited { color: #000; text-decoration: none; } 4 &:hover { color: #000; text-decoration: none; } 5 &:active { color: #000; text-decoration: none; } 6}

これをコンパイルすると

css

1a:link { color:#000; text-decoration:underline;} 2 3a:visited { color:#000; text-decoration:none;} 4 5a:hover { color:#000; text-decoration:none;} 6 7a:active { color:#000; text-decoration:none;}

このように、改行が入ってしまいます。
これを以下のように「改行なし」にするにはどのような設定が必要でしょうか?

css

1a:link { color:#000; text-decoration:underline;} 2a:visited { color:#000; text-decoration:none;} 3a:hover { color:#000; text-decoration:none;} 4a:active { color:#000; text-decoration:none;}

↓使用している.csscomb.jsonです

{ "always-semicolon": true, "color-case": "lower", "block-indent": "\t", "color-shorthand": true, "element-case": "lower", "eof-newline": true, "leading-zero": true, "quotes": "single", "sort-order-fallback": "abc", "space-before-colon": "", "space-after-colon": "", "space-before-combinator": " ", "space-after-combinator": " ", "space-between-declarations": " ", "space-before-opening-brace": " ", "space-after-opening-brace": " ", "space-after-selector-delimiter": " ", "space-before-selector-delimiter": "", "space-before-closing-brace": "", "strip-spaces": true, "unitless-zero": true, "vendor-prefix-align": true }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

うーん。
以前sass使ってたときこういうこと起こったことないのでほかに要因があるのかも知れませんが、いろいろ検証してみましょう。

1.
.csscomb.jsonの中の"eof-newline": truefalseにしてみましょう。

2.
1がダメならSCSSを見てみる。
これだとどうなります?
まるまるコピーして貼り付けてください。

scss

1a { 2 color: #000; 3 text-decoration: underline; 4 &:hover, &:active, &:focus { 5 text-decoration: none; 6 } 7}

3.
2ダメな場合、.csscomb.jsonの中を空にして影響を見てみましょう。
ファイルの中を{}だけにすればいい気がします。<無論あとで戻すのでBKはとっておく

とりあえずこの3つを試してみてください。

投稿2017/02/10 03:34

gin

総合スコア2722

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1000

2017/02/10 04:50

1,3についてはすでに試しましたがだめでした。3で明らかに変わるので、csscombが動いていないなどの基本的な問題はありません。 2に関しては、あくまで上記CSSは例なのでそれぞれのcssが共通とは限らないため目的と異なってしまいます。 いちばん関係ありそうな「eof-newline」ですが、trueでもfalseでも、記述ごと消しても表示に変わりはありませんでした。おかしいですね・・。
gin

2017/02/10 05:05

2に関しては書き方を変更したらどうなるかを例として見てみたかっただけですね。 あとまるまるコピーというのは見えないところに全角スペースなどが入って悪さをしてたりする場合があるので、それ込みで。 でも3で違ってくるということであれば2は関係ないのかな… 全部消すと1行空くことはとりあえずなくなるんですかね? ならば、1つ1つ消して試してみるのが確実かなと思います。 「\n」こういう値が入っているものがあればそれを優先的に。 というか、質問のほうに「.csscomb.json」を追記していただいてもよいですか?
1000

2017/02/10 06:28

デフォルト状態では a:link { color: #000; text-decoration: underline; } a:visited { color: #000; text-decoration: none; } a:hover { color: #000; text-decoration: none; } a:active { color: #000; text-decoration: none; } となるので、やはり1行空いてるようです。 .csscomb.jsonは追記します!
gin

2017/02/10 06:59

デフォルトで空いているとなると「csscomb」ではなさそうですね。 「gulpfile.js」のsassの部分を見てみましょうか。 「gulp.task('sass', function(){~});」この「~」の部分はどうなってますでしょ?
1000

2017/02/13 05:22

遅くなりました! gulp.task('sass', function () { return gulp.src(['resource/'+assetsDir+'sass/**/*.scss']) .pipe(plumber({ errorHandler: notify.onError('Error: <%= error.message %>') // デスクトップに通知を出す })) .pipe(sass()) // .pipe(autoprefixer({ browsers: ['last 3 versions', 'Android 3', 'ie 9'] })) .pipe(csscomb()) .pipe(gulp.dest('resource/'+assetsDir+'css/')) }); です。
1000

2017/02/13 05:23

あ、autoprefixerは今回不要なのでコメントアウトしてるので関係ないですね。
gin

2017/02/13 07:21

特に変わったところはないですね… んー、出力指定してみます? .pipe(sass())→.pipe(sass({style : 'expanded'})) 「gulpfile.js」内で「newline」系で値が「true」になっているものがあれば「false」にしてみてください。 何かしらの改行が影響しているかもしれないので、それを検証してみましょう。
1000

2017/02/13 08:36

>> .pipe(sass())→.pipe(sass({style : 'expanded'})) こちらためしてみました、結果変わらずのようです。 >>「gulpfile.js」内で「newline」系で値が「true」になっているものがあれば「false」にしてみてください。 newlineの記述は無いようでした。 そもそも、eof-newlineが怪しいかと思ったのですが、実質動いていないような(結果が何も変わらない)感じなのですが、これって何なんでしょうね??
gin

2017/02/13 10:11

ほかにbeautifyなどの整形系を使用していてその影響が出てるかなーと思ったんですけど…うーん。 「eof-newline」は言葉通りに解釈すると複数のファイルを連結したときにファイルとファイルの間に改行が入るんだと思います。 で、ほかに手が思い浮かばないので環境を作って試してみました。 なるほど。確かに空行ができますね。 ですが、こうすると空行がなくなります。 --- a { color: #000; &:link { color: #000; text-decoration: underline; } &:visited { color: #000; text-decoration: none; } &:hover { color: #000; text-decoration: none; } &:active { color: #000; text-decoration: none; } } --- 結果から予想するに親に何も記述せず子だけだと1個1個独立しているものとして認識されて空行ができるのではないでしょうか。 親に何かの記述があるとその子にも影響がでるので、そこでまとまる感じですかね。
1000

2017/02/23 08:08

すごい、盲点でした! 助かりましたありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問