🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

gulp

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

Q&A

解決済

1回答

1215閲覧

gulpでcssのブロック内の空白行を消したい

Samonasu

総合スコア16

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

gulp

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

0グッド

0クリップ

投稿2019/12/02 12:46

gulp-sassを使ってscssをcssにコンパイルしているのですが、表題の通りcssでブロック内の空白行を消す方法がわからず難儀しています。

フォーマッタを使えば消すことができると思っていたのですが、どうも望んだ機能を持ったフォーマッタを見つけることができません。

css

1p { 2 background: pink; 3 color: red; 4// 消したい空白行 5 box-sizing: 5px; 6 -webkit-border-radius: 5px; 7} 8// 消したくない空白行 9p span { 10 background: skyblue; 11 color: blue; 12}

上記の例ではpタグに対するスタイル指定に空白行が入っており、これを消したいです。
しかしフォーマッタを使って上記の行を削除できたとしても、pp spanの間の// 消したくない空白行まで消してしまうフォーマッタしか見つかりませんでした。
(あるいは設定次第では可能なのかもしれませんが…)

つまり、ブロック間の空白行は保ちつつ、ブロック内の空白行を削除してくれるフォーマッタ(あるいは似たような機能を持つパッケージ等)やその設定方法を教えていただきたいです。

※ちなみに上記の消したい空白行はgulp-autoprefixerのコメント/* autoprefixer: ignore next */gulp-replaceを使って削除した名残です。コンパイルしたファイルにコメントを含めないよう削除した結果、空白行ができてしまいました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

手軽な方法としては、 gulp-stylelintfix オプションを指定する方法があります。

たとえば、以下のようなディレクトリ構成で、

sample ├ scss │ ├ style.scss │ └ _mixins.scss ├ package.json └ .stylelintrc

package.json, gulpfile.js が以下のように、

JSON

1{ 2 "name": "sample", 3 "version": "1.0.0", 4 "description": "", 5 "main": "index.js", 6 "scripts": { 7 "test": "echo \"Error: no test specified\" && exit 1" 8 }, 9 "keywords": [], 10 "author": "", 11 "license": "ISC", 12 "devDependencies": { 13 "autoprefixer": "^9.7.3", 14 "gulp": "^4.0.2", 15 "gulp-postcss": "^8.0.0", 16 "gulp-sass": "^4.0.2", 17 "gulp-strip-css-comments": "^2.0.0", 18 "gulp-stylelint": "^10.0.0", 19 "stylelint": "^12.0.0" 20 } 21}

JavaScript

1exports.default = function () { 2 const autoprefixer = require('autoprefixer'); 3 const gulp = require('gulp'); 4 const sass = require('gulp-sass'); 5 const postcss = require('gulp-postcss'); 6 const stripCssComments = require('gulp-strip-css-comments'); 7 const gulpStylelint = require('gulp-stylelint'); 8 return gulp.src('./scss/style.scss') 9 .pipe(sass({outputStyle: "expanded"})) 10 .pipe(postcss([ autoprefixer() ])) 11 .pipe(stripCssComments()) 12 .pipe(gulpStylelint({ fix: true })) 13 .pipe(gulp.dest('./dest')) 14};

.stylelintrc が以下のように、

JSON

1{ 2 "rules": { 3 "max-empty-lines": 1, 4 "declaration-empty-line-before": "never", 5 "block-closing-brace-empty-line-before": "never" 6 } 7}

各 SCSS ファイルが以下のようになっているとします。

style.scss

SCSS

1@import "mixins"; 2 3.box { @include transform(rotate(30deg)); } 4 5/* This CSS will print because %message-shared is extended. */ 6%message-shared { 7 border: 1px solid #ccc; 8 padding: 10px; 9 color: #333; 10} 11 12// This CSS won't print because %equal-heights is never extended. 13%equal-heights { 14 display: flex; 15 flex-wrap: wrap; 16} 17 18.message { 19 @extend %message-shared; 20} 21 22.success { 23 @extend %message-shared; 24 border-color: green; 25} 26 27.error { 28 @extend %message-shared; 29 border-color: red; 30} 31 32.warning { 33 @extend %message-shared; 34 border-color: yellow; 35}

_mixins.scss

SCSS

1@mixin transform($property) { 2 /* autoprefixer: ignore next */ 3 box-sizing: border-box; 4 transform: $property; 5}

ここで default タスクを実行すると、出力される CSS ファイルは以下のようになり、コメントがあった空白行が削除されていることが確認出来ます。

CSS

1.box { 2 box-sizing: border-box; 3 -webkit-transform: rotate(30deg); 4 transform: rotate(30deg); 5} 6 7.message, .success, .error, .warning { 8 border: 1px solid #ccc; 9 padding: 10px; 10 color: #333; 11} 12 13.success { 14 border-color: green; 15} 16 17.error { 18 border-color: red; 19} 20 21.warning { 22 border-color: yellow; 23}

投稿2019/12/03 07:47

s8_chu

総合スコア14731

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

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

Samonasu

2019/12/03 13:36

gulp-stylelintはまだ試してませんでした。 お答えいただいた通りのパッケージ構成でscssをビルドすると望んだ通りの結果になりました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問