2021.03.18

Node.js

gulpでソースマップを出力

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

gulpを開発環境用に実行した場合はソースマップを出力し、本番環境用に実行した場合は出力をなしにします。開発環境と本番環境の分岐処理はgulp-modeを利用します。

gulpfile.jsにソースマップ出力の処理を追加します。gulp.srcとgulp.destの第二引数にsourcemaps: trueのオプションを指定します。なおgulp.destの第二引数はsourcemaps: trueの場合cssファイル内にソースマップが記述されますが、sourcemaps: './maps'のようにパスを指定すれば外部ファイルとしてソースマップが書き出せます。

//gulpfile.js
const gulp = require('gulp');
const sass = require('gulp-sass');

const mode = require('gulp-mode') ({
  modes: ["production", "development"],
  default: "development",
  verbose: false
});

const isDevelopment = mode.development() ? true : false;  //開発環境の確認

function styles() {
  return gulp
    .src('./src/scss/**/*.scss', {
      sourcemaps: isDevelopment  //開発環境の場合true
    })
    .pipe(mode.development(
      sass({
        outputStyle: 'expanded'
      })
    ))
    .pipe(mode.production(
      sass({
        outputStyle: 'compressed'
      })
    ))
    .pipe(mode.development(  //開発環境の実行
      gulp
        .dest('../assets/css', {
        sourcemaps: './maps'  //ソースマップを外部ファイルとして出力
      })
    ))
    .pipe(mode.production(  //本番環境の実行
      gulp
        .dest('../assets/css')
    ));
}

gulp.task('default', styles);

開発環境でgulpを実行します。

//開発環境用のgulp実行
npx gulp

指定したディレクトリに拡張子.mapのソースマップが出力されます。コンパイル後のcssファイルにはコードの最後に外部ファイルとして書き出したソースマップのパスが記述されます。

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

.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;
}
/*# sourceMappingURL=maps/layout.css.map */

なお本番環境でgulpを実行してもソースマップは出力されず、cssファイルにも変化はありません。

関連記事

2021.01.11

Node.js

npm initによるpackage.jsonの作成とパッケージのインストール

プロジェクトを作成するディレクトリでnpm initを実行してpackage.jsonを作成します。対話形式で作成しますが何も入力せずEnterキーで進めていく…

2021.03.07

Node.js

.eslintrcの設定

ESLintはJavaScriptの構文をチェックするツール(Linter)の一つで、.eslintrcはESLintの設定ファイルです。以下を記述することでE…

2021.02.12

Node.js

scss-lint.ymlの設定

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

2021.03.10

Node.js

npm run-scriptでgulpを実行

ローカルにインストールしたnpmパッケージの実行は、npxコマンドを利用するのが簡単です。以下のgulpfile.jsでテストします。各タスクのfunction…

2021.01.16

Node.js

npm updateでパッケージのバージョンを更新

npm updateでパッケージのバージョンを更新します。更新を確認するためにまず、jqueryの古いバージョンである2.2.0をインストールします。 実行が完…

上に戻る