gulpでSSI(サーバーサイドインクルード)を使用する「connect-ssi」

最近SSI(サーバーサイドインクルード)を使う機会があり、ローカル開発環境でも確認のためにSSIを表示できるようにする必要がありました。
今回はBrowserSyncと合わせて使うことでSSIが使えるようになる「connect-ssi」についてまとめておきます。
connect-ssiのインストール
まずは「connect-ssi」のインストールからです。
BrowserSyncと合わせて使うため、gulp自体と一緒にインストールしておきます。
npm install gulp -d
npm install browser-sync -d
npm install connect-ssi -dgulpfile.jsの設定
下記がgulpfile.jsの設定です。
browserSync.init({});内で「middleware」を呼び出していて、そこでconnect-ssiの設定をしています。
var gulp = require('gulp');
var browserSync = require("browser-sync");
var connectSSI = require('connect-ssi');
// 起動時のパス
var startPath = '/index.html';
// BrowserSyncの設定
gulp.task('browser-sync', function(done) {
browserSync.init({
server: {
baseDir: "./dist",
},
startPath: startPath,
middleware: [
connectSSI({
baseDir: './dist',
ext: '.html'
})
]
});
done();
});
gulp.task('bs-reload', function(done) {
browserSync.reload();
done();
});
var browserSync = require('browser-sync');
// 監視
gulp.task('watch', function(done) {
gulp.watch(['/html**/*.scss'], gulp.task('bs-reload'));
gulp.watch(['/html**/*.css'], gulp.task('bs-reload'));
gulp.watch(['/html**/*.html'], gulp.task('bs-reload'));
gulp.watch(['/html**/*.{png,jpg,gif,webp,svg,ics,css,pdf,js}'], gulp.task('bs-reload'));
done()
});
gulp.task('default', gulp.series(gulp.parallel('browser-sync', 'watch')));設定することは「baseDir」で読み込みの基準となるディレクトリを指定するのと、「ext」でSSIで読み込むファイルの拡張子を指定するくらいです。
これで下記コマンドでgulpを起動すると、localhostがブラウザで起動して、SSIの記述がある場合は表示されるようになります。
npx gulp
アイコンフォントをPCにインストールしている場合は、コーディング後の確認に注意
Movable TypeでMTLoopを使ってkeyでソートしたときに、10個以上表示させると並びがおかしくなる
WordPressで既に公開済みの記事の更新を、指定した日付に反映する方法「PublishPress Revisions」
Movable TypeでAssetURLやEntryPermalink・ContentPermalinkで出力されるパスを絶対パスから相対パスに変える
Visual Studio Codeで「.html」拡張子以外のファイルでもEmmetを使えるようにする
GUIコンパイラのPreprosを使ってSassのコンパイルを行う
Google Maps APIでピンの見た目をカスタマイズする方法
WordPressで作成した記事をSlackでシェアしたときに、抜粋文が長く表示される場合の対処法
Backlogで2段階認証を設定後、SourceTreeでアカウントエラーが発生する場合の対処法
Visual Studio Codeの拡張機能「Trailing Spaces」でコードの中にある余計なスペースを表示する
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう