Everything you need to build a Svelte project, powered by sv.
If you're seeing this, you've probably already done this step. Congrats!
# create a new project
npx sv create my-appTo recreate this project with the same configuration:
# recreate this project
npx sv create --template minimal --types ts --no-install .Install dependencies with Nub, then start a development server:
nub install
nub run dev
# or start the server and open the app in a new browser tab
nub run dev -- --openThe prepare script generates SvelteKit 3's $app/tsconfig and installs
Lefthook's Git hooks. nub.jsonc points Nub at tsconfig.runtime.json, which
has no generated dependencies. This allows Nub to start even before SvelteKit
has generated its configuration. To regenerate it and reinstall hooks, run:
nub run prepareWhen updating an existing Husky checkout, remove its hooks path once before
installing Lefthook (only if git config --get core.hooksPath is .husky/_):
git config --unset core.hooksPath
nub --node run prepareThe pre-commit hook runs Oxlint and Oxfmt on staged files, then stages formatting fixes.
nub run check and nub run check:watch use svelte-check's --tsgo backend
with TypeScript 7.1.0-beta, pinned as @typescript/native. TypeScript 6.0
remains installed for SvelteKit and svelte-check's JavaScript compiler API;
replacing it outright is not supported by this toolchain. The experimental
7.1 API backend is not enabled because it is incompatible with svelte-check
4.7.7. See the svelte-check setup guide.
The application's tsconfig.json still extends SvelteKit's generated config.
Its explicit #lib/* mapping mirrors package.json imports so the TS 7
checker can resolve generated Svelte component declarations. Nub's separate
runtime config is only for running tools, not for application type checking.
nub run check
nub run check:watch
nub run test
nub run lintTo create a production version of your app:
nub run buildYou can preview the production build with nub run preview.
To deploy your app, you may need to install an adapter for your target environment.
The 폰트 설정 button beside Save edits the family/style names, version, credits, copyright/license, grid dimensions (1–64 pixels), baseline, and Glyphs UPM/pixel scale. These settings are included in project JSON. Older projects keep their 16×16 grid and default baseline. Resizing anchors existing artwork at the top left; shrinking requires acknowledging any filled pixels that would be cropped.
- BDF preserves the grid dimensions and baseline.
- HEX pads the bottom to the next height in 16, 24, 32, 64, and pads the right
edge to a whole byte (8 pixels), without changing the project. The filename
includes the exported dimensions. HEX has no dimension header: extended
sizes require a compatible reader and an explicit height, for example
hexdraw --height 24. Tool-specific size limits vary; see the GNU Unifont manual. - Glyphs exports a native Glyphs 3 project with reusable non-exporting
pixelcomponents, scaled metrics and font information, following the Glyphs pixel-font workflow.
Run nub run test for bitmap, generation, settings round-trip, and export checks.
The interface uses Astryx Svelte 0.5.2 with its Liquid Glass theme (preserving the application font family from before the Astryx migration). AppShell and Layout provide the editor panels; Astryx supplies forms, dialogs, tabs, buttons and list rows. SVG and canvas remain responsible for pixel artwork and virtual previews.
app.css imports Astryx's base, precompiled component CSS and theme, followed by
its Tailwind token bridge. The published package contains compiled StyleX classes,
so astryx.css is required in both development and production. The Astryx Vite
preset keeps package styles on the StyleX transform path; its HTML injection hook
is omitted because SvelteKit owns the HTML shell.
Use 편집 → 모든 글리프 이동 to move all component bitmaps one pixel up, down, left or right. Ctrl+Alt+Arrow performs the same action (Control+Option on macOS). Shortcuts are inactive in text inputs and dialogs. If any filled pixel would leave the grid, the entire move is blocked and that menu action is disabled. A move includes and commits the current editor draft; the baseline and grid dimensions remain unchanged.