2021.03.21

Node.js

gulp-postcssでpostcss-sortingを実行

gulp-postcssはgulp上でPostCSSが実行できます。postcss-sortingはPostCSSのプラグインで、CSSプロパティの記述順を並べ替えることができます。

gulp-postcssとpostcss-sortingを、それぞれバージョンを指定してインストールします。バージョンを指定しなければ最新バージョンがインストールされますが、最新バージョン通しの組み合わせではエラーが発生する場合があります。

//gulp-postcssバージョン8.0.0とpostcss-sortingバージョン5.0.1のインストール
npm install gulp-postcss@8.0.0 postcss-sorting@5.0.1

gulpfile.jsにpostcss-sortingの処理を追加します。gulp-postcss及びpostcss-sortingの実行はgulp-sass実行の後にする必要があります。postcss-sorting実行の箇所で、CSSプロパティの記述順を設定したpostcss-sorting.jsonを読み込みます。

//gulpfile.js
const gulp = require('gulp');
const sass = require('gulp-sass');
const sorting = require('postcss-sorting');  //postcss-sortingの読み込み
const postcss = require('gulp-postcss');  //gulp-postcssの読み込み

function styles() {
  return gulp
    .src('./src/scss/**/*.scss')
    .pipe(
      sass({
        outputStyle: 'expanded'
      })
    )
    .pipe(postcss([  //gulp-postcssの実行
      sorting(require('./postcss-sorting.json'))  //postcss-sortingの実行
    ]))
    .pipe(
      gulp
        .dest('../assets/css')
    );
}

gulp.task('default', styles);

postcss-sorting.jsonのproperties-orderにCSSプロパティの順序を指定します。unspecified-properties-positionはproperties-orderに記述されていないCSSプロパティの位置を指定します。bottomを指定すると順番は最後になります。

//postcss-sorting.json
{
  "properties-order": [
    "position",
    "z-index",
    "top",
    "right",
    "bottom",
    "left",
    …以下省略
  ],
  "unspecified-properties-position": "bottom"
}

これでpostcss-sortingが利用できるようになりました。gulpでsassをコンパイルすると、以下のようにCSSプロパティの順番が設定通りに並び替えられます。flex-wrapとalign-itemsはproperties-orderに記述されていないため、順番が最後になっているのがわかります。

//layout.css
@charset "UTF-8";

.p-access {
  display: flex;
  background: linear-gradient(to bottom, white, black);
  opacity: 1;
  animation: my_anime 3s;
  flex-wrap: wrap;
  align-items: center;
}

関連記事

2022.07.10

Node.js

scss-lintのエラー回避方法

scssファイル内でscss-lintのエラーを回避します。以下はgridレイアウトで使用する「fr」が許可されていない単位としてエラーになるのを無効化していま…

2021.03.19

Node.js

gulp-sass実行時のエラー対処法

Node.jsのメジャーバージョンが異なる環境の場合、gulp-sass実行時にnode-sassで以下のようなエラーが発生する場合があります。 npm ls …

2021.02.12

Node.js

scss-lint.ymlの設定

Ruby製のscss-lintはscssのコードを検査して設定と異なる場合は警告してくれるツールです。ルールを記述する設定ファイルは拡張子ymlのファイルで作成…

2021.03.16

Node.js

gulp-sass-globでパーシャルファイルを読み込み

sassコンパイル時、コンポーネントごとに細分化されたパーシャルファイルは、読み込み元のscssファイルから@importを利用して読み込みます。以下の例ではl…

2021.01.12

Node.js

gulp 4.0で導入されたseriesとparallelについて

gulp4.0から新しくseriesとparallelが導入され、タスクの処理の順番を制御できるようになりました。 seriesは直列に処理を実行する同期処理で…

上に戻る