📖

Vue + Storybook: テンプレートをシンタックスハイライト & 自動フォーマット

2023/04/04に公開

概要

Vue で Storybook のストーリーを書く際、template に Vue テンプレートを記述します。
しかし、ただの文字列のため以下の画像のようにシンタックスハイライトも自動フォーマットも適用されません。
Storybook for vue3 template no-syntax

書き換え頻度は低いと思いますし、記載するコード量も多くはないと思いますが、
シンタックスハイライトや prettier による自動フォーマットになれたエンジニアには少しつらい物があるかと思います。

本記事では VSCode の拡張によるシンタックスハイライトと prettier による自動フォーマットを有効にする方法を紹介します。

方法

以下の VSCode 拡張のいずれかをインストールしてください。

template: のあとに /\* HTML \*/ とコメントを追加し、文字列をバッククオート(``)で囲むテンプレートリテラル表記で記述します。

例:

  template: /* HTML */ `<FooBar> sample </FooBar>`

これにより、文字列が HTML として認識され、シンタックスハイライトが有効になります。

また prettier が導入されている場合、上記のコメントを追加するだけで自動フォーマットも適用されます。
ただし、、/* HTML */ の HTML 部分は大文字でなければなりませんのでご注意ください。

以下が /* HTML */ を追加して、シンタックスハイライト&自動フォーマットされた例です。
Storybook for vue3 template syntax-highlight-auto-format

余談ですがこれは prettier の embedded-language-formatting オプションに該当するようです。
https://prettier.io/docs/en/options.html#embedded-language-formatting

GitHubで編集を提案

Discussion