2021.03.16

Node.js

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

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

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

@import "page/_access.scss";
@import "page/by/_access_train.scss";
@import "page/by/_access_bus.scss";

gulpでsassをコンパイルすると、以下のようにlayout.cssが書き出されます。ソースはlayout.scssで読み込んだファイルの順番通りになっています。なお書き出されるのはlayout.cssのみで、アンダーバーの付いたパーシャルファイルのcssは書き出されません。

//layout.css
.p-access {
  text-align: center;
}

.p-access-ttl {
  color: #ff0000;
}

.p-access-train {
  text-align: center;
}

.p-access-train-ttl {
  color: #ff0000;
}

.p-access-bus {
  text-align: center;
}

.p-access-bus-ttl {
  color: #ff0000;
}

@importでパーシャルファイルを読み込む際に、gulp-sass-globを利用します。以下を実行してgulp-sass-globをインストールします。

//gulp-sass-globのインストール
npm install gulp-sass-glob

gulpfile.jsにgulp-sass-globの処理を追加します。gulp-sass-globの実行はgulp-sass実行の前にする必要があります。

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

function styles() {
  return gulp
    .src('./src/scss/**/*.scss')
    .pipe(sassGlob())  //gulp-sass-globの実行
    .pipe(
      sass({
        outputStyle: 'expanded'
      })
    )
    .pipe(
      gulp
        .dest('../assets/css')
    );
}

gulp.task('default', styles);

これでgulp-sass-globが利用できるようになりました。layout.scssを修正します。@import "page/**";のように記述すると、対象ディレクトリ以下の全てのパーシャルファイルが読み込めます。

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

@import "page/**";

gulpでsassをコンパイルすると、以下のようにlayout.cssが書き出されます。注意点としてgulp-sass-globのパーシャルファイル読み込みは、ファイル名が数字・アルファベット順です。そのためlayout.cssのソースも読み込んだファイルの順番通りになります。

//layout.css
.p-access {
  text-align: center;
}

.p-access-ttl {
  color: #ff0000;
}

.p-access-bus {
  text-align: center;
}

.p-access-bus-ttl {
  color: #ff0000;
}

.p-access-train {
  text-align: center;
}

.p-access-train-ttl {
  color: #ff0000;
}

関連記事

2021.03.22

Node.js

gulp-plumberとgulp-notifyでエラーを通知

gulpのwatchメソッドでscssファイルを監視し、scssファイル更新時にsassを自動コンパイルする場合、scssファイル内に記述エラーがあるとwatc…

2021.01.12

Node.js

npm lsでインストールされているパッケージの情報を表示

プロジェクトのディレクトリでnpm lsを実行するとインストールされているパッケージの情報を表示できます。lsコマンドはlistコマンドの短縮形です。 例えばプ…

2021.03.21

Node.js

gulp-postcssでpostcss-sortingを実行

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

2021.03.17

Node.js

本番環境と開発環境の処理をgulp-modeで分岐

gulpでsassコンパイル時に、開発環境はoutputStyle: 'expanded'、本番環境はoutputStyle: 'compressed'で書き出…

2021.03.18

Node.js

gulpでソースマップを出力

gulpでsassコンパイル時にソースマップを出力します。gulp4は標準機能でソースマップが書き出せます。gulp3のようにgulp-sourcemapsのイ…

上に戻る