納品コードの整形
pluginBeautify()はビルド結果のHTML・CSS・JavaScriptを整形します。まずHTMLだけを読みやすくし、必要に応じてCSS・JavaScriptも整える手順を紹介します。
整形は納品物を確認・編集しやすくするための機能です。改行や空白によってファイルサイズが増えるため、配信容量を優先するサイトでは対象を選んで使います。
Table of Contents
HTMLだけを整形する
srcで対象をHTMLに絞ります。この構成では、CSS・JavaScriptの出力設定を変える必要はありません。
import { defineConfig, pluginSsg, pluginBeautify } from "minista"
export default defineConfig({
plugins: [pluginSsg(), pluginBeautify({ src: ["**/*.html"] })],
})npm run buildを実行し、dist/index.htmlを開きます。ビルド後のHTMLにインデントと改行が付きます。ソースのJSX・TSXを変更する機能ではありません。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>My Site</title>
</head>
<body>
<h1>My Site</h1>
</body>
</html>インデントを変更する
HTMLの設定はhtmlOptionsへ渡します。例えばインデント幅を4にできます。
pluginBeautify({
src: ["**/*.html"],
htmlOptions: { indent_size: 4 },
})HTML・CSS・JavaScriptの各設定には、js-beautifyのオプションを利用できます。型と既定値はpluginBeautifyを参照してください。
CSS・JavaScriptも整形する
対象を省略するとHTML・CSS・JavaScriptを整形します。CSSはハッシュのないファイル名にし、JavaScriptはRolldownの出力段階で圧縮を無効にします。
import { defineConfig, pluginSsg, pluginBeautify } from "minista"
export default defineConfig({
plugins: [pluginSsg(), pluginBeautify()],
build: {
sourcemap: false,
cssMinify: false,
rolldownOptions: {
output: {
minify: false,
assetFileNames: "assets/[name][extname]",
},
},
},
})build.minify: falseだけでは、Rolldownの後段のdce-only処理(不要コードの除去)が残ります。JavaScriptを整形する場合、この処理との併用はMINISTA_BEAUTIFY_MINIFY_UNSUPPORTEDで停止するため、build.rolldownOptions.output.minify: falseを指定します。詳しくは設定リファレンスの「圧縮を無効にする」を参照してください。
CSSの整形は出力名が確定した後に行うため、CSSを対象にする場合はassetFileNamesに[hash]や関数形式を使えません。JavaScriptのエントリー・チャンクにはハッシュを使えます。
出力と制約を確認する
src/
├── assets/
│ ├── styles.css
│ └── scripts.ts
└── pages/
└── index.tsxdist/
├── index.html ← HTMLを整形
└── assets/
├── styles.css ← CSSを整形
└── scripts-[hash].js ← JavaScriptを整形実際のファイル名は読み込み方と出力設定によります。整形対象のCSS・JavaScriptとソースマップは併用できません。ソースマップが必要な場合は、そのファイルを対象から外してHTMLだけを整形します。
ファイル名のハッシュを外した場合は、同名ファイルの衝突や公開先のキャッシュ更新方法も確認します。
次は納品用アーカイブで、成果物をZIPにまとめます。