BrowsersyncでSSIを利用する
ググったらmiddleware
で処理する方法しか見つからなかったけど、ドキュメントを見ていたらrewriteRules
というそれっぽいオプションがあった。レシピとしてそれっぽい方法で使うサンプルがあったけど、バージョンが古いし、SSIのシンタックスが違った。自分で以下のように書き直したら意図したとおりに動いた。
const browserSync = require('browser-sync').create() browserSync.init({ // 省略 rewriteRules: [ { match: /<!--#include virtual="(.+?)" -->/g, fn(req, res, match, filename) { const includeFilePath = path.join('path/to/includes', filename) if (fs.existsSync(includeFilePath)) { return fs.readFileSync(includeFilePath) } else { return `<span style="color: red">\`${includeFilePath}\` could not be found</span>` } } } ], // 省略 })