Files
ComfyUI_frontend/AGENTS.md
Alexander Brown 1b83d6b5a6 Migration: pnpm (#5215)
* migration: npm to pnpm
Step 1, package and lockfile

* migration: npm to pnpm
Step 2: docs / LLM instructions

* migration: npm to pnpm
Step 3: More documentation updates

* migration: npm to pnpm
Step 4: Even more documentation

* migration: npm to pnpm
Step 5: GitHub Actions

* migration: npm to pnpm
Step 6: PNPM installation in actions. This merge is going to be painful.

* migration: npm to pnpm
Unignore and add pnpm lockfile.

* migration: npm to pnpm
package-lock.json -> pnpm-lock.yaml

* migration: explicit @primeuix/styled, move glob to prod deps

* migration: more explicit deps required by the importmap plugin and vite

* fix: missed merge artifact

* fix: Make sure pnpm is available to install wrangler

* migration: pnpm for dev-release.yaml

* migration: new setup action version
Won't work until that is updated and a new release is cut.

* migration: Playwright needs uuid

* migration: Add explicit deps for lobehub

* chore(version-bump.yaml): change cache from npm to pnpm to optimize package management and improve build performance

* migration: install pnpm in version-bump action

---------

Co-authored-by: snomiao <snomiao@gmail.com>
2025-08-27 06:10:15 -07:00

2.6 KiB

Repository Guidelines

Project Structure & Module Organization

  • Source: src/ (Vue 3 + TypeScript). Key areas: components/, views/, stores/ (Pinia), composables/, services/, utils/, assets/, locales/.
  • Routing/i18n/entry: src/router.ts, src/i18n.ts, src/main.ts.
  • Tests: unit/component in tests-ui/ and src/components/**/*.{test,spec}.ts; E2E in browser_tests/.
  • Public assets: public/. Build output: dist/.
  • Config: vite.config.mts, vitest.config.ts, playwright.config.ts, eslint.config.js, .prettierrc.

Build, Test, and Development Commands

  • pnpm dev: Start Vite dev server.
  • pnpm dev:electron: Dev server with Electron API mocks.
  • pnpm build: Type-check then production build to dist/.
  • pnpm preview: Preview the production build locally.
  • pnpm test:unit: Run Vitest unit tests (tests-ui/).
  • pnpm test:component: Run component tests (src/components/).
  • pnpm test:browser: Run Playwright E2E tests (browser_tests/).
  • pnpm lint / pnpm lint:fix: Lint (ESLint). pnpm format / format:check: Prettier.
  • pnpm typecheck: Vue TSC type checking.

Coding Style & Naming Conventions

  • Language: TypeScript, Vue SFCs (.vue). Indent 2 spaces; single quotes; no semicolons; width 80 (see .prettierrc).
  • Imports: sorted/grouped by plugin; run pnpm format before committing.
  • ESLint: Vue + TS rules; no floating promises; unused imports disallowed; i18n raw text restrictions in templates.
  • Naming: Vue components in PascalCase (e.g., MenuHamburger.vue); composables useXyz.ts; Pinia stores *Store.ts.

Testing Guidelines

  • Frameworks: Vitest (unit/component, happy-dom) and Playwright (E2E).
  • Test files: **/*.{test,spec}.{ts,tsx,js} under tests-ui/, src/components/, and src/lib/litegraph/test/.
  • Coverage: text/json/html reporters enabled; aim to cover critical logic and new features.
  • Playwright: place tests in browser_tests/; optional tags like @mobile, @2x are respected by config.

Commit & Pull Request Guidelines

  • Commits: Prefer Conventional Commits (e.g., feat(ui): add sidebar), refactor(litegraph): …. Use [skip ci] for locale-only updates when appropriate.
  • PRs: Include clear description, linked issues (Fixes #123), and screenshots/GIFs for UI changes. Add/adjust tests and i18n strings when applicable.
  • Quality gates: pnpm lint, pnpm typecheck, and relevant tests must pass. Keep PRs focused and small.

Security & Configuration Tips

  • Secrets: Use .env (see .env_example); do not commit secrets.
  • Backend: Dev server expects ComfyUI backend at localhost:8188 by default; configure via .env.