8
Perintah dan Tooling
package.json menjadi satu-satunya pintu masuk perintah di repository ini. Berkas itu mendefinisikan enam script, dan semuanya memanggil perkakas yang dideklarasikan di berkas yang sama (package.json:5-121). Halaman ini memetakan tiap script ke perkakas dan berkas konfigurasinya.
Ketergantungan script ke tooling
graph LR
dev["npm run dev"] --> viteDev["vite dev"]
build["npm run build"] --> viteBuild["vite build"]
preview["npm run preview"] --> viteBuild
preview --> pagesDev["wrangler pages dev"]
deploy["npm run deploy"] --> viteBuild
deploy --> pagesDeploy["wrangler pages deploy"]
lint["npm run lint"] --> prettier["prettier"]
lint --> eslint["eslint ."]
format["npm run format"] --> prettier
viteDev --> viteConfig["vite.config.js"]
viteBuild --> viteConfig
viteConfig --> kitPlugin["sveltekit()"]
viteConfig --> lokal["lokalTunnel"]
kitPlugin --> svelteConfig["svelte.config.js"]
svelteConfig --> adapterCF["adapter cloudflare"]
prettier --> prettierrc[".prettierrc"]
prettierrc --> sveltePlugin["prettier-plugin-svelte"]
css["src/app.css"] --> postcss["postcss.config.js"]
postcss --> tailwind["tailwindcss"]
postcss --> autoprefixer["autoprefixer"]
tailwind --> twConfig["tailwind.config.js"]
preview --> wranglerToml["wrangler.toml"]
deploy --> wranglerToml
style viteBuild fill:#2d7d46,color:#fff
style pagesDeploy fill:#2d7d46,color:#fff
style pagesDev fill:#8b5cf6,color:#fff
style prettier fill:#8b5cf6,color:#fff
style eslint fill:#dc2626,color:#fff
style viteConfig fill:#f59e0b,color:#000
style svelteConfig fill:#f59e0b,color:#000
style postcss fill:#f59e0b,color:#000
style prettierrc fill:#f59e0b,color:#000
style lokal fill:#f59e0b,color:#000
style wranglerToml fill:#f59e0b,color:#000
%% fig: Ketergantungan script ke tooling
%% desc: Enam script npm bercabang ke vite, prettier, eslint, dan wrangler, lalu berujung pada berkas konfigurasi tiap perkakas.dev dan build sama-sama berakhir di vite.config.js, yang mendaftarkan dua plugin: sveltekit() dan lokalTunnel (vite.config.js:3-122). Sebaliknya lint dan format tidak menyentuh Vite; keduanya hanya memakai prettier, dan lint menambahkan eslint (package.json:9-103). preview dan deploy berbagi langkah npm run build, lalu berbeda pada subcommand wrangler (package.json:8-114).
Daftar perintah
| Script | Perintah | Perkakas yang dijalankan |
|---|---|---|
dev | vite dev | dev server Vite dengan plugin sveltekit() dan lokalTunnel |
build | vite build | build Vite |
preview | npm run build && wrangler pages dev | build Vite, lalu wrangler pages dev |
lint | prettier --check . && eslint . | pemeriksaan format prettier, lalu eslint |
format | prettier --write . | prettier menulis ulang berkas |
deploy | npm run build && wrangler pages deploy | build Vite, lalu wrangler pages deploy |
Keenam baris di atas diambil langsung dari blok scripts (package.json:5-121). Kedua subcommand wrangler berasal dari paket wrangler versi ^3.68.0 di devDependencies (package.json:275).
Prettier sebagai pemeriksa format
lint dan format membaca satu berkas konfigurasi yang sama, .prettierrc (package.json:9-103). Opsi di dalamnya menentukan bentuk keluaran format dan hasil prettier --check .:
| Opsi | Nilai |
|---|---|
useTabs | true |
singleQuote | true |
trailingComma | "none" |
printWidth | 100 |
plugins | ["prettier-plugin-svelte"] |
overrides | *.svelte memakai parser svelte |
Seluruh nilai itu tertulis di .prettierrc:1-8 (.prettierrc:1-8). Plugin prettier-plugin-svelte sendiri dideklarasikan dengan versi ^3.1.2 (package.json:13-286). Berkas .prettierignore hanya mengabaikan tiga berkas lock, yaitu package-lock.json, pnpm-lock.yaml, dan yarn.lock (.prettierignore:1-4), sehingga kode di src/ tetap diperiksa penuh.
PostCSS, Tailwind, dan app.css
postcss.config.js mendaftarkan tailwindcss dan autoprefixer sebagai plugin tanpa opsi tambahan (postcss.config.js:1-67). Tailwind hanya memindai berkas di src/ lewat glob ./src/**/*.{html,js,svelte,ts} (tailwind.config.js:38). Rantai itu baru aktif karena src/app.css memuat tiga aturan @tailwind (src/app.css:1-39), dan berkas CSS itu diimpor di layout root (src/routes/+layout.svelte:210).
lokal-vite-plugin di jalur dev
vite.config.js mengimpor default lokal-vite-plugin sebagai lokalTunnel dan memanggilnya sebagai plugin kedua setelah sveltekit() (vite.config.js:3-122). Pemanggilan itu menyetel tunnelName: 'GitHub Roast' dan lanAddress: 'github-roast.local' (vite.config.js:8-1111), jadi hanya npm run dev yang terpengaruh. Paket ini justru tercatat di blok dependencies, bukan devDependencies (package.json:30-3412), padahal pemakaiannya terbatas pada konfigurasi Vite saat dev.
Build bersama untuk preview dan deploy
preview dan deploy sama-sama menjalankan npm run build sebagai langkah pertama (package.json:8-114). Keduanya lalu membaca wrangler.toml yang menetapkan pages_build_output_dir = ".svelte-kit/cloudflare" (wrangler.toml:2-413) serta binding D1 bernama DB (wrangler.toml:28-31). Di sisi Vite, svelte.config.js mengimpor @sveltejs/adapter-cloudflare (svelte.config.js:1) dan memanggil adapter() tanpa argumen (svelte.config.js:10), sehingga direktori keluaran mengikuti default adapter tersebut.
⚠️
previewmemakaiwrangler pages devdenganwrangler.tomlyang sama sepertideploy, termasuk bindingDBke databasegithubroast(wrangler.toml:28-3114). Periksa kembali konfigurasi binding sebelum menjalankan salah satunya, karena keduanya berbagi direktori keluaran.svelte-kit/cloudflare(wrangler.toml:2-413).
Langkah lengkap deploy ke Cloudflare Pages dibahas di Deployment ke Cloudflare Pages, sedangkan arti tiap binding ada di Konfigurasi Environment dan Binding.
Jebakan pada npm run lint
⚠️
lintmenjalankanprettier --check . && eslint ., tetapieslinttidak tercantum di blokdevDependencies; blok itu hanya memuat@types/eslint(package.json:1817). Daftar berkas di akar repository juga tidak memuat konfigurasi eslint. Karena memakai&&, langkaheslint .baru dijalankan setelahprettier --checklolos, dan tanpa binaryeslintyang terpasang langkah itu berhenti dengan galat.
Jalur yang selalu tersedia tanpa dependensi tambahan adalah npm run format, karena script itu hanya memanggil prettier (package.json:9-103) yang sudah ada di devDependencies dengan versi ^3.1.1 (package.json:2218).