LoginSignup
5
4

More than 5 years have passed since last update.

gulpでSCSSの@importをできるだけ手抜きしたい [gulp-sass-glob]

Last updated at Posted at 2018-12-16

このプラグインを使います

gulp-sass-glob
https://www.npmjs.com/package/gulp-sass-glob

事前準備

ディレクトリ構成

/
├ dev
  ├ scss
    ├ 0_base
      └ インポートされる様々なscss
    ├ 1_layout
    ├ 2_component
    ├ 3_project
    └ style.scss
├ root
  └ css
    └ style.css(SCSS → CSSに変換されたもの)
├ package.json
└ gulpfile.js

package.json

package.json
{
    "name": "dev",
    "version": "1.0.0",
    "author": "",
    "main": "gulpfile.js",
    "license": "ISC",
    "devDependencies": {
        "gulp": "*",
        "gulp-sass": "*",
        "gulp-sass-glob": "*"
    }
}

gulpfile.js

gulpfile.js
// 環境変数
const setting = {
    scss: {
        src: "./dev/scss/*.scss",
        dest: "./root/css"
    }
};

const gulp = require("gulp");

// SCSSプラグインの読み込み
var sass = require("gulp-sass");
// SCSSをまとめて読み込むプラグインの読み込み
var sassGlob = require("gulp-sass-glob");

// SCSSをCSSに変換するタスクを作成
gulp.task("scss", () => {
    return (
        gulp
            // 変換対象のファイル
            .src(setting.scss.src)
            //SCSSをまとめ読み込むことを許可する
            .pipe(sassGlob())
            //SCSS → CSS変換
            .pipe(sass())
            //CSSを出力(保存)
            .pipe(gulp.dest(setting.scss.dest))
    );
});

// ファイルの変更を監視してタスク実行
gulp.task("watch", () => {
    gulp.watch(setting.scss.src, ["scss"]);
});

// gulp起動時に実行するタスク
gulp.task("default", ["watch"]);

SCSS

gulp-sass-globを導入する前は、SCSSをこのようにしていました。

style.scss
@charset 'utf-8';

//////////////////////////
// define
//////////////////////////
@import "0_base/vars";
@import "0_base/reset";
@import "0_base/mixin";
@import "0_base/develop";
@import "0_base/utility";

//////////////////////////
// Layout .l-
//////////////////////////
@import "1_layout/header";
@import "1_layout/footer";
@import "1_layout/side";
@import "1_layout/content";

//////////////////////////
// Component .c-
//////////////////////////
@import "2_component/title";
@import "2_component/btn";
@import "2_component/list";
@import "2_component/table";
@import "2_component/form";
@import "2_component/slide";
@import "2_component/card";

//////////////////////////
// Project .p-
//////////////////////////
@import "3_project/top";
@import "3_project/about";
@import "3_project/company";
@import "3_project/service";

インポートするSCSSを全部書いてました。
それがこうなりました!! ↓↓↓

style.scss
@charset 'utf-8';

//////////////////////////
// define
//////////////////////////
@import "0_base/vars";
@import "0_base/reset";
@import "0_base/mixin";
@import "0_base/develop";
@import "0_base/utility";

//////////////////////////
// Layout .l-
//////////////////////////
@import "1_layout/*";

//////////////////////////
// Component .c-
//////////////////////////
@import "2_component/*";

//////////////////////////
// Project .p-
//////////////////////////
@import "3_project/*";

インポートする順番は指定できない

gulp-sass-globによって、まとめてインポートできるようになりましたが、その順番は指定できません。

順番を守りたいものだけちゃんと書く

リセット系CSSは最初に読み込ませたいので
順番を守りたいものは、まとめ指定しないで記載します。

この部分がそれにあたります

//////////////////////////
// define
//////////////////////////
@import "0_base/vars";
@import "0_base/reset";
@import "0_base/mixin";
@import "0_base/develop";
@import "0_base/utility";

以上です。
ありがとうございました。

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