mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-03 14:54:37 +00:00
* 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>
41 lines
2.6 KiB
Markdown
41 lines
2.6 KiB
Markdown
# 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`.
|