2
4

More than 5 years have passed since last update.

PostCSSでSassをもっと楽に

Last updated at Posted at 2018-09-15

gulpのタスクを追加して便利な環境にしよう ← 前回のやつ

PostCSS

PostCSSプラグイン PostCSS.parts

その他プラグイン一覧

プラグイン名 プラグイン機能 参考ページ
stylelint CSSの構文チェックツール stylelintの環境構築
column stylelint column
will stylelint will
be stylelint be
left stylelint center
aligned stylelint aligned

PostCSSのインストール

まずは、npmから「gulp-postcss」パッケージをインストール

cmd
npm install --save-dev gulp-postcss

パッケージをインストールしたら、gulpfile.jsに読み込みの設定をします。

gulpfile.js
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob');
var sourcemaps = require('gulp-sourcemaps');
var plumber = require('gulp-plumber');
var notify = require('gulp-notify');
// 「gulp-postcss」を読み込む
var postcss = require('gulp-postcss');

ベンダープレフィックスを自動付与する

Autoprefixerはベンダープレフィックスを自動付与してくれるプラグインでPostCSSでは一番よく使われてる定番プラグインです。
Autoprefixerがあれば、わざわざベンダープレフィックスを記述する必要がなくなります。

インストールと設定

まずは、npmから「gulp-autoprefixer」パッケージをインストール

cmd
npm install --save-dev gulp-autoprefixer

パッケージをインストールしたら、gulpfile.jsに読み込みの設定とpostcss([autoprefixer()])を追記します。
Sassのコンパイル後に処理したいので、sassより後に記述します。

gulpfile.js
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob');
var sourcemaps = require('gulp-sourcemaps');
var plumber = require('gulp-plumber');
var notify = require('gulp-notify');
var postcss = require('gulp-postcss');
// 「gulp-autoprefixer」を読み込む
var autoprefixer = require('autoprefixer');

gulp.task('sass', function () {
    return gulp.src('./sass/**/*.scss')
    .pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")});   
    .pipe(sourcemaps.init());
    .pipe(saccGlob());
    .pipe(sass({outputStyle:'expanded'}))
    // 「sass」の後に指定
    .pipe(postcss([autoprefixer()]))
    .pipe(sourcemaps.write());
    .pipe(gulp.dest('css'));
});

その他に、対象ブラウザを設定したり、バージョン指定することなどもできます。

CSSプロパティの記述順を自動でソートする

CSSプロパティの順番を気にする方用に「css-declaration-sorter」

インストールと設定

まずは、npmから「css-declaration-sorter」パッケージをインストール

cmd
npm install --save-dev css-declaration-sorter

パッケージをインストールしたら、gulpfile.jsに読み込みの設定とpostcss([cssdeclsort({order:'smacss'})])を追記します。
Sassのコンパイル後に処理したいので、sassより後に記述します。

gulpfile.js
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob');
var sourcemaps = require('gulp-sourcemaps');
var plumber = require('gulp-plumber');
var notify = require('gulp-notify');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');

// 「css-declaration-sorter」を読み込む
var assets = require('postcss-assets');
var cssdeclsort = require('css-declaration-sorter');

gulp.task('sass', function () {
    return gulp.src('./sass/**/*.scss')
    .pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")});   
    .pipe(sourcemaps.init());
    .pipe(saccGlob());
    .pipe(sass({outputStyle:'expanded'}))

    // 「sass」の後に指定
    .pipe(postcss([cssdeclsort({order:'smacss'})])
    // alphobetically アルファベット順に
    // smacss SMACSSが定義するレイアウトに最も重要な順に
    // concentric-css Concentric CSSが提唱するボックスモデルの外側から内側の順に

    .pipe(postcss([autoprefixer()]))
    .pipe(sourcemaps.write());
    .pipe(gulp.dest('css'));
});

バラバラになったメディアクエリをまとめる

「CSS MQPacker」を使えば、バラバラに記述されたメディアクエリをまとめてくれます。

インストールと設定

まずは、npmから「css-mqpacker」パッケージをインストール

cmd
npm install --save-dev css-mqpacker

パッケージをインストールしたら、gulpfile.jsに読み込みの設定とpostcss([mqpacker()])を追記します。
Sassのコンパイル後に処理したいので、sassより後に記述します。

gulpfile.js
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob');
var sourcemaps = require('gulp-sourcemaps');
var plumber = require('gulp-plumber');
var notify = require('gulp-notify');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');
var assets = require('postcss-assets');
var cssdeclsort = require('css-declaration-sorter');
// 「css-mqpacker」を読み込む
var mqpacker = require('css-mqpacker');

gulp.task('sass', function () {
    return gulp.src('./sass/**/*.scss')
    .pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")});   
    .pipe(sourcemaps.init());
    .pipe(saccGlob());
    .pipe(sass({outputStyle:'expanded'}))
    // 「sass」の後に指定
    .pipe(postcss([mqpacker()]))

    .pipe(postcss([cssdeclsort({order:'smacss'})])
    .pipe(postcss([autoprefixer()]))
    .pipe(sourcemaps.write());
    .pipe(gulp.dest('css'));
});
2
4
0

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
2
4