Nunjucksを使用して既存のHTMLに変数を追加する方法

既存のHTMLに変数を追加

Web制作をしていると静的なHTMLファイルにテンプレートの変数を含めたいことがある。

例えば以下のHTMLに…

<h1>Sato is 35 years old.</h1>

以下のように変数を入れてコマンドを実行してHTMLを生成したいケースです。

<h1>{{ user }} is {{ age }} years old.</h1>

このようなケースの場合、WebpackやViteなどをインストールしなくてもNunjucksをインストールすれば簡単に実装できる。

Nunjucksをインストール

まずHTMLファイルがあるディレクトリにnpm init -yでpackage.jsonを作成する。

次に以下のコマンドでNunjucksをインストールする。

npm i -D nunjucks

次にNode.js実行用のファイルを作成する。

以下は既存のHTMLを{{ user }}のような変数に置き換えたあとNunjucksで生成したHTMLをbuildフォルダ内に保存した例。

// sample.js
const fs = require('fs')
const nunjucks = require('nunjucks')
const buildPath = './build/'

fs.readdir('./', (err, files) => {
  for (let file of files) {
    if (/\.html$/.test(file)) {
      const data = nunjucks.render(file, {
        user: 'Sato',
        age: 35,
      })

      if (!fs.existsSync(buildPath)) {
        fs.mkdirSync(buildPath);
      }

      fs.writeFileSync(`${buildPath}${file}`, data, (err) => {
        if (err) throw err
      })
    }
  }
  if (err) throw err
})

あとは「node sample.js」を実行すればbuildファイルにHTMLファイルが生成されます。

Nunjucksで生成したHTMLファイルのサンプル