🏗️ テーマ基盤中級
JavaScriptタグの整形テスト
Prettier Liquid プラグインが複数の `<script>` タグ(外部読み込み、インラインコード、属性の有無)を正しくフォーマットできることを検証するテストファイル。product オブジェクトを JSON で Liquid 側から JavaScript に渡すサンプルを含む。
用途
Prettier による Liquid テンプレート自動整形時に、script タグ内のコード品質を確認・テストするとき。また、product データを JavaScript で利用する典型パターンの参考にもなる。
設置場所
このファイル自体がテストケース用の fixtures なので、実際のストアテンプレートには直接配置しない。theme.liquid の `<head>` 内で class 切り替えロジック(最下部の `document.documentElement.className.replace`)が必要な場合は、別途 snippet に分離して theme.liquid で呼び出す。
注意点
このコードはテストケースであり、実運用ではファイルサイズが大きい外部スクリプト(very-long-line-oh-my-god.js)は CDN に分割して読み込む。`Shopify.designMode` の判定は theme.liquid など全ページで共通実行され、デザインモード時のみ指定クラスが追加される設計。Prettier の設定(printWidth など)によって整形結果が変わるため、プロジェクト固有の `.prettierrc` を確認する。
コード
46 行 / 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>
出典・ライセンス
- Repository:
- https://github.com/Shopify/theme-tools
- 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 行