SCSS整形ツールでできること
SCSS では、ルールをネストしたり、値を $variables に入れたり、@mixin でブロックを使い回したり、設定をマップにまとめたりできます。便利な反面、ファイルはすぐに大きくなり、複数人で同じスタイルシートを編集するうちにインデントがずれていきます。ある人は color:$brand と書き、別の人は color : $brand ; と書き、ネストしたブロックの深さもばらばらになります。
このツールは SCSS を整形し直して、ネストの各階層を同じようにインデントし、宣言を1行に1つずつ並べ、コロンや波かっこの周りのスペースをそろえます。SCSS パーサーを使った Prettier 3 を、すべてブラウザ内で動かしています。
使い方
- 左のボックスに SCSS を貼り付けます。貼り付けた瞬間に整形されます。
- ファイルを開く で
.scssファイルを読み込んだり、サンプル で例を表示したりすることもできます。 - インデント を選びます:スペース2つ、スペース4つ、タブのいずれかです。
- 行の幅 を選びます。長いセレクタのリスト、マップ、include の引数は、この幅を超えると折り返されます。
- スタイルガイドでシングルクォートを使う決まりなら、シングルクォート をオンにします。
- 整形 を押すか、入力欄で Ctrl+Enter を押します。
- コピー を押すか、ダウンロード で
.scssファイルとして保存します。
一度整形すると、その後は入力の変更に合わせて出力が更新されます。問題があると、ボックスの下に 2行目、3列目:Unclosed block のようなメッセージが表示され、入力欄で表示 を押すとその箇所にカーソルが移動します。
整形前と整形後
変数、mixin、ネストしたルールを含む、詰め込まれた SCSS です。
$brand:#3b82f6;@mixin card($pad:16px){padding:$pad;border-radius:8px}.nav{display:flex;gap:1rem;a{color:$brand;&:hover{text-decoration:underline}}.btn{@include card(12px)}}
スペース2つで 整形 した結果です。
$brand: #3b82f6;
@mixin card($pad: 16px) {
padding: $pad;
border-radius: 8px;
}
.nav {
display: flex;
gap: 1rem;
a {
color: $brand;
&:hover {
text-decoration: underline;
}
}
.btn {
@include card(12px);
}
}
ネストが1段深くなるごとにインデントが1つ増えるので、&:hover が .nav の中のリンクに属していることがひと目でわかります。
Sass のマップは複数行に展開され、1行に1つのキーが並びます。
$breakpoints: (
small: 576px,
medium: 768px,
large: 992px
);
シングルクォート をオンにすると、@use "sass:math"; は @use 'sass:math'; になります。行コメントは元の位置にそのまま残ります。
// Header styles
.header {
.logo {
width: 120px;
}
}
エラーと制限事項
整形して書き出す前に、ファイルを解析する必要があります。最もよくある問題は閉じ波かっこの書き忘れです。次の入力の場合:
.nav {
a { color: red;
メッセージは 2行目、3列目:Unclosed block となり、閉じられていない a { を指します。
知っておきたい点は次のとおりです。
- このツールがチェックするのは構文で、意味まではチェックしません。未定義の変数や存在しない mixin は報告されません。それは Sass コンパイラが見つけてくれます。
- プロパティの並べ替えやセレクタのソートは行いません。書いた順序がそのまま残ります。
- インデント構文の
.sassには対応していません。先に SCSS に変換するか、対応しているエディタで整形してください。 - このページには 圧縮 がありません。ブラウザが実行するのは CSS だけなので、SCSS を圧縮しても意味がないからです。Sass でコンパイルしてから、出力された CSS を圧縮してください。
SCSS をきれいに保つコツ
- ネストは浅く保ちましょう。深いネストは長くて壊れやすいセレクタを生むため、スタイルガイドでは3階層までとすることがよくあります。
- 変数とマップは
_tokens.scssのような別のパーシャルにまとめ、@useで読み込みます。 - コミットする前に整形しましょう。そうしないと、細かいスペースの変更が本当の変更と混ざってコードレビューに出てきてしまいます。
- 出力された通常の CSS を扱うなら、CSS整形ツール で圧縮もできます。
SCSS を整形するほかの方法
- VS Code:Prettier 拡張機能を入れてファイルを開き、「ドキュメントのフォーマット」(Windows は Shift+Alt+F、macOS は Shift+Option+F)を実行します。
- コマンドライン:
npx prettier --write "src/**/*.scss"で、フォルダ内のすべての SCSS ファイルを整形できます。 - WebStorm などの JetBrains 製 IDE には、コードを再フォーマットする機能が組み込まれており、プロジェクトに Prettier が入っていればそれを使うこともできます。
このページは設定が不要で、コードは手元の端末から出ません。チケットに貼られたスニペット、CodePen、チームメンバーから届いたコードをさっと整えたいときに便利です。これらのスタイルを使うマークアップには HTML整形ツール を、スクリプトには JavaScript整形ツール をお試しください。