11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

scssのためのstylelintとprettierの導入

Last updated at Posted at 2020-03-18

stylelintとprettierを導入してみた。

scss慣れておらず、ちょくちょくコンパイルエラーになるのでstylelintを導入して楽にしたい、prettierも動かしてコードを綺麗にしたい。

インストール

yarnで以下のパッケージをインストール

  • stylelint
    cssの静的syntaxチェックツール いわゆるlinter

  • stylelint-scss
    stylelintのプラグインでscssのチェックを可能にしてくれる。(stylelintのsyntaxオプションでscssが設定できるみたいだが、これとどう違うのかはよくわかっていない...)

  • stylelint-config-recommended-scss
    標準的なstyleのルールを設定してくれる。無数にあるルールを手作業でチマチマやる手間が省けてありがたい

  • prettier
    コードフォーマッター。汚いコードを綺麗にしてくれる。

  • stylelint-config-prettier
    styleLintのフォーマット関連のルールを全て無効にする、ようはPrettierが整形した箇所に関してエラーを出さなくなる

  • stylelint-prettier
    stylelint上でprettierを動かすためのプラグイン

yarn add stylelint stylelint-scss stylelint-config-recommended-scss prettier stylelint-config-prettier stylelint-prettier -D

設定

stylelintとprettier周辺をインストールしたので、設定を作成。
作成するのは、

  • .stylelintrc.json
    stylelintに関わる設定を記載

  • .prettierrc
    prettierの整形ルールに関わる設定を記載

.stylelintrc.json

{
  "plugin": [
      "stylelint-scss",
  ],
  "extends": [
    "stylelint-config-recommended-scss",
    "stylelint-prettier/recommended"
  ],
  "rules": {
    "at-rule-no-unknown":[true,{
            "ignoreAtRules":["function","if","for","each","include","mixin","content"]
        }]
  }
}

extendsにstylelint-prettier/recommnededを指定することで、stylelint-prettierとstylelint-config-prettierが適用される。
rulesにはmixinなどの@付きを書いても怒られないように追加で設定。

.prettierrc

printWidth: 120
tabWidth: 2
singleQuote: false
trailingComma: none
semi: true
bracketSpacing: true

タブの設定やらセミコロンつけるとか簡単なルールだけ記載。

動作確認

lint機能の確認

適当にフォーマットやらを破壊したscssを作成。

.try {
    .spinner {
        width: 40px;
        height: 4 0px;
        background-color: #3z3    ;
        margin: 100px auto;
           transform-origin: center center   ;
    }
}

stylelintを実行


yarn stylelint style.scss
2:3   ✖  Delete "··"                                                                                  prettier/prettier
 3:1   ✖  Replace "········" with "····"                                                               prettier/prettier
 4:1   ✖  Replace "········" with "····"                                                               prettier/prettier
 4:20  ✖  Unexpected unit                                                                              length-zero-no-unit
 5:1   ✖  Replace "········background-color:·#3z3····" with "····background-color:·#3z3"               prettier/prettier
 5:27  ✖  Unexpected invalid hex color "#3z3"                                                          color-no-invalid-hex
 6:1   ✖  Delete "····"                                                                                prettier/prettier
 7:5   ✖  Replace "·······transform-origin:·center·center···" with "transform-origin:·center·center"   prettier/prettier
 8:1   ✖  Delete "··"                                                                                  prettier/prettier

エラーまみれで返ってくることを確認。

fix機能の確認

stylelint自体で怒られた場所を修正の上、fixをかけてみる。

yarn stylelint --fix style.scss

結果

.try {
  .spinner {
    width: 40px;
    height: 40px;
    background-color: #333;
    margin: 100px auto;
    transform-origin: center center;
  }
}

いい感じに綺麗にフォーマッティングされる。

所感

eslintの導入とほとんど一緒なのであまり時間がかからなかったが、それでも結構時間を取られた。
vimと連携して使ってるのでaleに設定を仕込んでみたが、保存時のみ機能するように設定しているつもりなのに何故か編集中もlintされる。なんか設定がおかしいのか。。。
仕事やめたい

11
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?