Liquid Snippets by ALSEL
🏗️ テーマ基盤中級

スクリプトタグのフォーマット整形

Prettier Liquid プラグインのテストケース。複数の script タグ(外部スクリプト、インラインスクリプト)を統一的にフォーマットし、可読性を高める。

用途
theme.liquid やセクション内に複数のスクリプトを埋め込むときに、コード整形ルールを一貫させたい開発環境。Prettier で Liquid ファイルを自動フォーマットするときの参考実装。
設置場所
このコード自体は theme-tools リポジトリのテストスイート用であり、実装プロジェクトに直接貼り付けない。Prettier 設定で Liquid パーサーを有効にすると、テーマ内のすべての script タグがこの形式に自動整形される。
注意点
このスニペットは Prettier プラグインの動作検証用テストファイルであるため、実際のテーマコードではなく、フォーマットルール仕様の参考となる。`product | json` フィルターで JavaScript 変数に Liquid オブジェクトを埋め込む際は、シングルクォート内に JSON が展開されることを確認し、HTML エスケープが不要か確認する。`defer` / `crossorigin` など複数の属性を指定するときは、このテストのように改行整形されると管理しやすくなる。
タグ:script-tagprettierformatterjson-filterhtml

コード

55 行 / liquid
<div>
  <script></script>
  <script src="//short.js" defer="defer"></script>
  <script
    src="{{ 'very-long-line-oh-my-god.js' | asset_url }}"
    defer="defer"
  ></script>
  <script
    src="{{ 'very-long-line-oh-my-god.js' | asset_url }}"
    crossorigin="anonymous"
    defer="defer"
  ></script>
  <script>
    const a = [1, 2, 3];
    const b = function() {
      return null;
    }

    const config = {
      product: {{ product | json }},
    };

    for (const x of foo) {
      if (true) {
        // noooo
      }
    }
  </script>
  <script id="my-script" type="text/javascript">
    const a = [1, 2, 3];
    const b = function() {
      return null;
    }

    const config = {
      product: {{ product | json }},
    };

    for (const x of foo) {
      if (true) {
        // noooo
      }
    }
  </script>
</div>

It should fix issue #21
<script>
  document.documentElement.className =
    document.documentElement.className.replace('no-js', 'js');
  if (Shopify.designMode) {
    document.documentElement.classList.add('shopify-design-mode');
  }
</script>

出典・ライセンス

License:
MIT

このコードは Shopify 著作の MIT ライセンスソースです。 原本の著作権は Shopify が保有します。日本語訳は ALSEL によるものです。

関連項目

🏗️ テーマ基盤中級

セクションスキーマのカスタムブロック定義

セクションの schema ブロック内でカスタムブロックタイプを定義する方法を示すサンプル。@theme と _private というプレフィックスで異なるブロック種別を宣言する。

📁 theme-tools·MIT·7
🏗️ テーマ基盤初級

セクション呼び出しのフォーマット

Liquid の section タグを複数行に記述する際の正しいフォーマット例。タグ名を改行で分割しても正しく認識される書き方を示す。

📁 theme-tools·MIT·7
🏗️ テーマ基盤初級

レイアウトテンプレートの指定

Liquid の `layout` タグを使い、テーマのレイアウトファイルを指定する構文。複数のレイアウト候補と whitespace 制御(ダッシュ記号)の使い方を示す。

📁 theme-tools·MIT·8
🏗️ テーマ基盤上級

Liquid フォーマッター互換のセクション表記

Prettier Liquid プラグインのテストケースで、セクションタグの様々な書式を検証する。異なる間隔・改行・ホワイトスペーストリミングの組み合わせでもセクション名が崩れないことを確認する。

📁 theme-tools·MIT·9
🏗️ テーマ基盤初級

基本的なHTMLレイアウト

Prettier Liquid プラグインのテスト用に作られた最小限の HTML テンプレート。DOCTYPE から body タグまでの基本的なドキュメント構造を示す。

📁 theme-tools·MIT·10
🏗️ テーマ基盤上級

layout タグのフォーマット

Liquid の layout タグの書式をコード品質ツール(Prettier)でフォーマットするテストケース。スペースや改行位置の違いを正規化し、レイアウト名が壊れないことを検証する。

📁 theme-tools·MIT·10