Shopify Theme Check: Neden Tek Dosya Yolu Argümanı Çalışmıyor (ve Bunun Yerine Ne Yapmalı)
shopify theme check komutuna tek dosya yolu iletmek sessizce başarısız olur veya hata verir. Doğru çözüm --path bayrağını kullanmaktır.
shopify theme check ./sections/header.liquid komutunu çalıştırmak yararlı bir sonuç vermez. Bu komut sözdizimi mevcut CLI'de geçersizdir: Theme Check konumsal dosya yolu argümanını kabul etmez. Doğru kapsam bayrağı --path olup, bu yalnızca bir dizini kabul eder, tek bir dosyayı değil. İşte tam olarak neyin çalıştığı, neden tek dosya linting'i beklediğinizden farklı çalıştığı ve bunu CI'ye nasıl entegre edeceğiniz.
Ana çıkarımlar
shopify theme check ./sections/header.liquidmevcut Shopify CLI'de geçersizdir. Konumsal dosya argümanları yoktur.- Bir dizine işaret etmek için
--pathkullanın (atlanırsa mevcut çalışma dizinine varsayılan olur). - Gerçek tek dosya geribildirim VS Code Dil Sunucusundan gelir (
themeCheck.onlySingleFileChecks), CLI'den değil. - Varsayılan
--fail-levelerrorolup, bu sebeple CI uyarılar birikmeye devam ederken sessizce geçer. Her zaman--fail-level warningiletin. - Shopify CLI 4.0 (Mayıs 2026) itibarıyla, araç Node 22.12+ gerektirmektedir ve CI dışında paket yöneticiniz aracılığıyla otomatik güncellenir.
Çoğu geliştiricinin yaptığı tam hata
sections/hero.liquid dosyasını düzenliyor, potansiyel bir lint sorunu fark ediyor ve şunu yazıyorsunuz:
shopify theme check ./sections/hero.liquid
Yararlı bir şey olmaz. Mevcut CLI'de, bu konumsal argüman basitçe yok sayılır veya eksik tema dizini hakkında bir hata üretir.
Bu karışıklığın belirli bir nedeni vardır: Theme Check 2.x (Shopify CLI'nin içinde gelen Node tabanlı sürüm), eski Ruby gem'ini değiştirmiştir ve Ruby gem'i gerçekten bir yol konumsal argümanı kabul ediyordu. Theme Check 2.x göçünden önce yazılmış eski öğreticiler, StackOverflow cevapları ve blog yazıları (2024 başında tamamlandı, aynı zamanda --category ve --exclude-category kaldırıldı) hala eski söz dizimini göstermektedir. Bu yazılar şimdi yanlıştır.
Shopify'nin kendi CLI referansında onaylandığı gibi, --path bir çalıştırmayı kapsamanın tek yoludur ve bu, bir dizine kapsamlanır, dosyaya değil.
Bayrağın aslında ne yaptığı
# Belirli bir tema dizinine kapsamlandır
shopify theme check --path ./my-theme
# Mevcut çalışma dizinine varsayılan olur
shopify theme check
# Düzeltilebilir ihlalleri yerinde otomatik düzelt
shopify theme check -a
# Sıfır olmayan çıkışa neden olan önem seviyesini değiştir
shopify theme check --fail-level warning
# Makine tarafından okunabilir çıktı (dosya başına düz dizi)
shopify theme check -o json > results.json
# Etkin her kontrolü ve önem seviyesini listele
shopify theme check --list
--path, Theme Check'e tema kökü olarak hangi dizini kullanacağını söyler. O dizinin içindeki her dosya (templates, sections, snippets, layout, assets) tek bir geçişte kontrol edilir. CLI düzeyinde bunu tek bir dosyaya daraltamazsınız.
Tek bir dosyayı gerçekte linting nasıl yapılır: Dil Sunucusu yaklaşımı
CLI bir bütün tema aracıdır. Tek dosya geribildirim, Shopify Liquid VS Code uzantısını güçlendiren Shopify Liquid Dil Sunucusu'nun işidir.
Uzantı themeCheck.onlySingleFileChecks adında bir ayar gösterir. true olarak ayarlandığında, bütün tema kontrolleri (örneğin UnusedSnippet ve TranslationKeyExists) devre dışı bırakılır ve yalnızca editörde açık olan dosyalar kontrol edilir. Bu, textDocument/didChange kontrolleri her tuş vuruşunda tam tema yeniden kontrolleri ile karşılaştırıldığında kabaca 125 kat daha hızlı çalışmasını sağlar.
Bunu VS Code çalışma alanı ayarlarınıza ekleyin:
{
"themeCheck.checkOnOpen": true,
"themeCheck.checkOnChange": true,
"themeCheck.checkOnSave": true,
"themeCheck.onlySingleFileChecks": true
}
Değiş tokuş: kodlamaya devam ederken dosyalar arası kontrolleri kaçıracaksınız. Önerilen desen, yerel olarak hız için onlySingleFileChecks: true çalıştırmak, sonra herhangi bir push'tan önce CI'de tam temada tam shopify theme check çalıştırmaktır.
Karşılaştırma: Tek dosya geribildirim için CLI vs Dil Sunucusu
| Yaklaşım | Kapsam | Hız | Dosyalar arası kontroller | Ne zaman kullanılacak |
|---|---|---|---|---|
shopify theme check (bayrak yok) | Bütün tema (cwd) | Saniye ile dakika | Evet | Push öncesi kapı, CI |
shopify theme check --path ./dir | Adlandırılmış dizin | Yukarıdaki gibi | Evet | Monorepo alt temalar |
VS Code + onlySingleFileChecks: true | Yalnızca açık dosyalar | Değişim başına ~10ms | Hayır | Aktif geliştirme |
VS Code + onlySingleFileChecks: false (varsayılan) | LSP aracılığıyla bütün tema | Değişim başına ~1250ms | Evet | Commit öncesi yerel gözden geçirme |
CI'yi sessizce kıran --fail-level tuzağı
Bu, linting kapısını ilk kez kuran hemen hemen her takımı kandırır.
Varsayılan olarak, --fail-level error olarak ayarlanır. Bu, yalnızca uyarılar bulmanın bir çalıştırması 0 çıkış koduyla çıkacağı anlamına gelir. CI işiniz çıkış kodunu kontrol eder, 0 görür, adımı yeşil olarak işaretler ve bu uyarılar, birinin nihayet kullanımdan kaldırılmış bir filtre veya üretimde aylardır oturan bir performans kokusunu fark ettiği zamana kadar düzine PR'lerde sessizce birikir.
Bir satırda düzeltin:
shopify theme check --fail-level warning
Kabul edilen seviyeler, en sıkıdan en az sıkıya doğru:
infosuggestionstylewarningerror(varsayılan)crash
Çoğu mağaza için warning doğru eşiktir. Gerçek sorunları, tamamen stilistik önerilere engel olmadan yakalar.
Üretim sınıfı CI deseni (GitHub Actions)
Aşağıda minimal, mevcut desen yer almaktadır. Etkileşimsiz auth için SHOPIFY_CLI_THEME_TOKEN kullanır ve herhangi bir push'tan önce Theme Check'te yapıyı kontrol eder.
name: Theme Lint and Deploy
on:
push:
branches: [main]
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install Shopify CLI
run: npm install -g @shopify/cli @shopify/theme
- name: Run Theme Check
run: shopify theme check --path . --fail-level warning -o json > tc-results.json
env:
SHOPIFY_FLAG_STORE: ${{ secrets.SHOPIFY_STORE }}
- name: Upload results
if: always()
uses: actions/upload-artifact@v4
with:
name: theme-check-results
path: tc-results.json
deploy:
needs: lint
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install Shopify CLI
run: npm install -g @shopify/cli @shopify/theme
- name: Push theme
run: shopify theme push --json --theme ${{ secrets.SHOPIFY_THEME_ID }}
env:
SHOPIFY_CLI_THEME_TOKEN: ${{ secrets.SHOPIFY_CLI_THEME_TOKEN }}
SHOPIFY_FLAG_STORE: ${{ secrets.SHOPIFY_STORE }}
theme push üzerindeki --strict yalnızca Theme Check hatalarında engel olduğu için, --fail-level warning'i ayrılmış kontrol adımında geçmek doğru kapı olup, yalnızca --strict'e güvenmek değildir.
Bilmeye değer üç bayrak daha
-a/--auto-correct: Theme Check'in insan yargısı olmaksızın çözebileceği ihlalleri düzeltir (boşluk{% %}içinde, kullanılmayan atamaları). Bunu yerel olarak çalıştırın, CI'de asla kör şekilde çalıştırmayın.--list: etkin her kontrolü ve önem seviyesini yazdırır. Takım üyesi.theme-check.ymleklediğinde ve sürüm öncesi etkin kural setini doğrulamak istediğinizde kullanışlıdır.-C theme-check:all:theme-check:recommendediçinde devre dışı bırakılanlar da dahil olmak üzere kullanılabilir her kontrolü etkinleştirir. Bunu günlük kapı olarak değil, periyodik derin denetim için kullanın.
CLI 4.0'da (Mayıs 2026) değişen ve kurulumunuzu etkileyen neler var
Ardışık düzeni Mayıs 2026'dan sonra garip şekilde davranmaya başlarsa, nedeni muhtemelen Shopify CLI 4.0'dır. Theme check çalışmalarını etkileyen iki şey değişmiştir:
- Node 22.12+ şimdi gereklidir. Node 18 veya 20'ye sabitlenmiş ardışık düzenler install adımında başarısız olur.
- CI'de otomatik yükseltme atlanır. CLI, CI ortamlarını algılar ve kendi kendini güncellemez, bu doğru davranıştır. Ancak yerel proje kurulumları da otomatik yükseltmeyi atlasa, ardışık düzeni açıkça istediğiniz sürümü kuracak şekilde yapılandırdığınızdan emin olun.
Ek olarak, theme init şimdi Dawn yerine Shopify'nin Skeleton temасını varsayılan olarak klonlar. Bu Theme Check davranışını etkilemez, ancak ardışık düzende yeni bir proje iskele kuruyorsanız önemlidir.
Yaygın .theme-check.yml hataları
.theme-check.yml dosyası tema kökünde yer alır ve hangi kontrollerin çalıştığını ve hangi önemin yer aldığını denetler. Karışıklığa neden olan birkaç desen:
# Doğru: önerilenden genişlet, sonra geçersiz kıl
extend: theme-check:recommended
TemplateLength:
enabled: false
UnusedAssign:
severity: suggestion # uyarıdan düşür
ParserBlockingJavaScript:
enabled: true
severity: error
--categoryveya--exclude-categorykullanmayın. Bu bayraklar Theme Check 2.x'te kaldırılmıştır. Bunun yerine YAML dosyasını kullanın.rootanahtarı, yalnızca tema dosyalarınız bir alt dizinde yaşadığında gereklidir (örn.dist/gibi bir yapı çıktı klasörü). Standart Dawn veya Horizon yapısı için buna ihtiyacınız yoktur.
Theme Check'in tam Shopify tema iş akışına nasıl uyduğu için daha geniş bir bakış için bkz. Shopify tema geliştirme ve Liquid en iyi uygulamaları rehberim.
Bunu daha büyük bir göç veya yapı sisteminin parçası olarak bir CI/CD ardışık düzenine entegre etiyorsanız, Shopify tema geliştirici hizmet sayfası istemci projelerinde otomatik kalite kapılarına nasıl yaklaştığımızı kapsamaktadır.
Sıkça sorulan sorular
shopify theme check komutuna komut satırından tek bir dosya yolu geçirebilir miyim?
Hayır. Mevcut Shopify CLI (Theme Check 2.x) konumsal dosya yolu argümanlarını kabul etmez. ./sections/header.liquid gibi bir dosya yolu geçmek geçersizdir. Bir dizine işaret etmek için --path kullanın veya geliştirme sırasında dosya başına geribildirim için onlySingleFileChecks etkinleştirilmiş VS Code Dil Sunucusu'nu kullanın.
shopify theme check'te --path bayrağı ne yapar?
The --path bayrağı, Theme Check'e tema kökü olarak hangi dizini kullanacağını söyler. Atlanırsa mevcut çalışma dizinine varsayılan olur. Bunu tek bir dosyayı hedeflemek için kullanamazsınız; tema klasörlerini (templates, sections, snippets, vb.) içeren bir dizin olması gerekir.
shopify theme check uyarı bulmuş olmasına rağmen neden CI ardışık düzenim geçiyor?
Varsayılan --fail-level error'dür, bu, yalnızca uyarı üreten çalıştırmalar 0 koduyla çıkar ve CI adımınız yeşili gösterir. --fail-level warning geçirin, böylece herhangi bir uyarı veya daha kötü ihlal algılandığında iş sıfır olmayan bir kodla çıkar.