mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-07-09 00:29:22 +00:00
## Summary Allows engineers to run their localhost frontend while choosing which backend to point. This PR adds staging and prod as targets. ## Changes - **What**: New NPM scripts: `dev:cloud:test`, `dev:cloud:staging`, and `dev:cloud:prod`. `dev:cloud` points at `dev:cloud:test` - **Breaking**: None ## Why Currently, the testcloud environment is broken (backend config issue) and doesn't allow going through the subscription registration process. This also allows testing frontend code against backend changes being staged for release, as well as against actual backend production code.
220 lines
9.2 KiB
JSON
220 lines
9.2 KiB
JSON
{
|
|
"name": "@comfyorg/comfyui-frontend",
|
|
"version": "1.47.3",
|
|
"private": true,
|
|
"description": "Official front-end implementation of ComfyUI",
|
|
"homepage": "https://comfy.org",
|
|
"license": "GPL-3.0-only",
|
|
"repository": "https://github.com/Comfy-Org/ComfyUI_frontend",
|
|
"type": "module",
|
|
"scripts": {
|
|
"build:cloud": "cross-env DISTRIBUTION=cloud vite build --config vite.config.mts",
|
|
"build:desktop": "pnpm --filter @comfyorg/desktop-ui run build",
|
|
"build-storybook": "storybook build",
|
|
"build:types": "vite build --config vite.types.config.mts && node scripts/prepare-types.js",
|
|
"build:analyze": "cross-env ANALYZE_BUNDLE=true pnpm build",
|
|
"build": "pnpm typecheck && vite build --config vite.config.mts",
|
|
"clean": "pnpm dlx rimraf dist dist-ssr coverage playwright-report blob-report test-results node_modules/.vite apps/desktop-ui/dist apps/website/dist",
|
|
"clean:all": "pnpm clean && pnpm dlx rimraf node_modules",
|
|
"size:collect": "node scripts/size-collect.js",
|
|
"size:report": "node scripts/size-report.js",
|
|
"collect-i18n": "pnpm exec playwright test --config=playwright.i18n.config.ts",
|
|
"dev:cloud": "pnpm dev:cloud:test",
|
|
"dev:cloud:test": "cross-env DEV_SERVER_COMFYUI_URL=https://testcloud.comfy.org/ vite --config vite.config.mts",
|
|
"dev:cloud:staging": "cross-env DEV_SERVER_COMFYUI_URL=https://stagingcloud.comfy.org/ vite --config vite.config.mts",
|
|
"dev:cloud:prod": "cross-env DEV_SERVER_COMFYUI_URL=https://cloud.comfy.org/ vite --config vite.config.mts",
|
|
"dev:desktop": "pnpm --filter @comfyorg/desktop-ui run dev",
|
|
"dev:electron": "cross-env DISTRIBUTION=desktop vite --config vite.electron.config.mts",
|
|
"dev:no-vue": "cross-env DISABLE_VUE_PLUGINS=true vite --config vite.config.mts",
|
|
"dev:test": "cross-env VITE_USE_LEGACY_DEFAULT_GRAPH=true vite --config vite.config.mts",
|
|
"dev": "vite --config vite.config.mts",
|
|
"devtools:pycheck": "python3 -m compileall -q tools/devtools",
|
|
"format:check": "oxfmt --check",
|
|
"format": "oxfmt --write",
|
|
"json-schema": "tsx scripts/generate-json-schema.ts",
|
|
"knip:no-cache": "knip",
|
|
"knip": "knip --cache",
|
|
"lint:fix:no-cache": "oxlint src browser_tests --type-aware --fix && eslint src --fix",
|
|
"lint:fix": "oxlint src browser_tests --type-aware --fix && eslint src --cache --fix",
|
|
"lint:no-cache": "pnpm exec stylelint '{apps,packages,src}/**/*.{css,vue}' && oxlint src browser_tests --type-aware && eslint src",
|
|
"lint:unstaged:fix": "git diff --name-only HEAD | grep -E '\\.(js|ts|vue|mts)$' | xargs -r eslint --cache --fix",
|
|
"lint:unstaged": "git diff --name-only HEAD | grep -E '\\.(js|ts|vue|mts)$' | xargs -r eslint --cache",
|
|
"lint": "pnpm stylelint && oxlint src browser_tests --type-aware && eslint src --cache",
|
|
"lint:desktop": "pnpm --filter @comfyorg/desktop-ui run lint",
|
|
"locale": "lobe-i18n locale",
|
|
"oxlint": "oxlint src browser_tests --type-aware",
|
|
"prepare": "pnpm exec husky || true && git config blame.ignoreRevsFile .git-blame-ignore-revs || true",
|
|
"preview": "vite preview --config vite.config.mts",
|
|
"storybook": "storybook dev -p 6006",
|
|
"storybook:desktop": "pnpm --filter @comfyorg/desktop-ui run storybook",
|
|
"stylelint:fix": "stylelint --cache --fix '{apps,packages,src}/**/*.{css,vue}'",
|
|
"stylelint": "stylelint --cache '{apps,packages,src}/**/*.{css,vue}'",
|
|
"test:browser": "pnpm exec playwright test",
|
|
"test:browser:coverage": "cross-env COLLECT_COVERAGE=true pnpm test:browser",
|
|
"test:browser:local": "cross-env PLAYWRIGHT_LOCAL=1 PLAYWRIGHT_TEST_URL=http://localhost:5173 pnpm test:browser",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:unit": "vitest run",
|
|
"typecheck": "vue-tsc --noEmit",
|
|
"typecheck:browser": "vue-tsc --project browser_tests/tsconfig.json",
|
|
"typecheck:desktop": "pnpm --filter @comfyorg/desktop-ui run typecheck",
|
|
"typecheck:website": "pnpm --filter @comfyorg/website run typecheck",
|
|
"zipdist": "node scripts/zipdist.js"
|
|
},
|
|
"dependencies": {
|
|
"@alloc/quick-lru": "catalog:",
|
|
"@atlaskit/pragmatic-drag-and-drop": "^1.3.1",
|
|
"@comfyorg/comfyui-desktop-bridge-types": "workspace:*",
|
|
"@comfyorg/comfyui-electron-types": "catalog:",
|
|
"@comfyorg/design-system": "workspace:*",
|
|
"@comfyorg/fbx-exporter-three": "^1.0.1",
|
|
"@comfyorg/object-info-parser": "workspace:*",
|
|
"@comfyorg/registry-types": "workspace:*",
|
|
"@comfyorg/shared-frontend-utils": "workspace:*",
|
|
"@comfyorg/tailwind-utils": "workspace:*",
|
|
"@customerio/cdp-analytics-browser": "catalog:",
|
|
"@formkit/auto-animate": "catalog:",
|
|
"@iconify/json": "catalog:",
|
|
"@primeuix/forms": "catalog:",
|
|
"@primeuix/styled": "catalog:",
|
|
"@primeuix/utils": "catalog:",
|
|
"@primevue/core": "catalog:",
|
|
"@primevue/forms": "catalog:",
|
|
"@primevue/icons": "catalog:",
|
|
"@primevue/themes": "catalog:",
|
|
"@sentry/vue": "catalog:",
|
|
"@sparkjsdev/spark": "catalog:",
|
|
"@tanstack/vue-virtual": "catalog:",
|
|
"@tiptap/core": "catalog:",
|
|
"@tiptap/extension-link": "catalog:",
|
|
"@tiptap/extension-table": "catalog:",
|
|
"@tiptap/extension-table-cell": "catalog:",
|
|
"@tiptap/extension-table-header": "catalog:",
|
|
"@tiptap/extension-table-row": "catalog:",
|
|
"@tiptap/pm": "catalog:",
|
|
"@tiptap/starter-kit": "catalog:",
|
|
"@vee-validate/zod": "catalog:",
|
|
"@vueuse/core": "catalog:",
|
|
"@vueuse/integrations": "catalog:",
|
|
"@vueuse/router": "^14.2.0",
|
|
"@xterm/addon-fit": "^0.10.0",
|
|
"@xterm/addon-serialize": "^0.13.0",
|
|
"@xterm/xterm": "^5.5.0",
|
|
"algoliasearch": "catalog:",
|
|
"axios": "catalog:",
|
|
"chart.js": "^4.5.0",
|
|
"cva": "catalog:",
|
|
"dompurify": "catalog:",
|
|
"dotenv": "catalog:",
|
|
"es-toolkit": "^1.39.9",
|
|
"extendable-media-recorder": "^9.2.27",
|
|
"extendable-media-recorder-wav-encoder": "^7.0.129",
|
|
"firebase": "catalog:",
|
|
"fuse.js": "^7.0.0",
|
|
"glob": "catalog:",
|
|
"jsonata": "catalog:",
|
|
"loglevel": "^1.9.2",
|
|
"marked": "^15.0.11",
|
|
"pinia": "catalog:",
|
|
"posthog-js": "catalog:",
|
|
"primeicons": "catalog:",
|
|
"primevue": "catalog:",
|
|
"reka-ui": "catalog:",
|
|
"semver": "^7.7.2",
|
|
"three": "catalog:",
|
|
"tiptap-markdown": "^0.8.10",
|
|
"typegpu": "catalog:",
|
|
"vee-validate": "catalog:",
|
|
"vue": "catalog:",
|
|
"vue-i18n": "catalog:",
|
|
"vue-router": "catalog:",
|
|
"vuefire": "catalog:",
|
|
"wwobjloader2": "catalog:",
|
|
"yjs": "catalog:",
|
|
"zod": "catalog:",
|
|
"zod-validation-error": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@comfyorg/ingest-types": "workspace:*",
|
|
"@eslint/js": "catalog:",
|
|
"@intlify/eslint-plugin-vue-i18n": "catalog:",
|
|
"@lobehub/i18n-cli": "catalog:",
|
|
"@pinia/testing": "catalog:",
|
|
"@playwright/test": "catalog:",
|
|
"@sentry/vite-plugin": "catalog:",
|
|
"@storybook/addon-docs": "catalog:",
|
|
"@storybook/addon-mcp": "catalog:",
|
|
"@storybook/vue3": "catalog:",
|
|
"@storybook/vue3-vite": "catalog:",
|
|
"@tailwindcss/vite": "catalog:",
|
|
"@testing-library/jest-dom": "catalog:",
|
|
"@testing-library/user-event": "catalog:",
|
|
"@testing-library/vue": "catalog:",
|
|
"@total-typescript/shoehorn": "catalog:",
|
|
"@types/fs-extra": "catalog:",
|
|
"@types/jsdom": "catalog:",
|
|
"@types/node": "catalog:",
|
|
"@types/semver": "catalog:",
|
|
"@types/three": "catalog:",
|
|
"@vitejs/plugin-vue": "catalog:",
|
|
"@vitest/coverage-v8": "catalog:",
|
|
"@vitest/ui": "catalog:",
|
|
"@webgpu/types": "catalog:",
|
|
"cross-env": "catalog:",
|
|
"eslint": "catalog:",
|
|
"eslint-config-prettier": "catalog:",
|
|
"eslint-import-resolver-typescript": "catalog:",
|
|
"eslint-plugin-better-tailwindcss": "catalog:",
|
|
"eslint-plugin-import-x": "catalog:",
|
|
"eslint-plugin-oxlint": "catalog:",
|
|
"eslint-plugin-playwright": "catalog:",
|
|
"eslint-plugin-storybook": "catalog:",
|
|
"eslint-plugin-testing-library": "catalog:",
|
|
"eslint-plugin-unused-imports": "catalog:",
|
|
"eslint-plugin-vue": "catalog:",
|
|
"fast-check": "catalog:",
|
|
"fs-extra": "^11.2.0",
|
|
"globals": "catalog:",
|
|
"happy-dom": "catalog:",
|
|
"husky": "catalog:",
|
|
"jiti": "catalog:",
|
|
"jsdom": "catalog:",
|
|
"knip": "catalog:",
|
|
"lint-staged": "catalog:",
|
|
"markdown-table": "catalog:",
|
|
"mixpanel-browser": "catalog:",
|
|
"monocart-coverage-reports": "catalog:",
|
|
"oxfmt": "catalog:",
|
|
"oxlint": "catalog:",
|
|
"oxlint-tsgolint": "catalog:",
|
|
"picocolors": "catalog:",
|
|
"postcss-html": "catalog:",
|
|
"pretty-bytes": "catalog:",
|
|
"rollup-plugin-visualizer": "catalog:",
|
|
"storybook": "catalog:",
|
|
"stylelint": "catalog:",
|
|
"tailwindcss": "catalog:",
|
|
"tsx": "catalog:",
|
|
"typescript": "catalog:",
|
|
"typescript-eslint": "catalog:",
|
|
"unplugin-icons": "catalog:",
|
|
"unplugin-typegpu": "catalog:",
|
|
"unplugin-vue-components": "catalog:",
|
|
"uuid": "catalog:",
|
|
"vite": "catalog:",
|
|
"vite-plugin-dts": "catalog:",
|
|
"vite-plugin-html": "catalog:",
|
|
"vite-plugin-vue-devtools": "catalog:",
|
|
"vitest": "catalog:",
|
|
"vue-component-type-helpers": "catalog:",
|
|
"vue-eslint-parser": "catalog:",
|
|
"vue-tsc": "catalog:",
|
|
"zip-dir": "^2.0.0",
|
|
"zod-to-json-schema": "catalog:"
|
|
},
|
|
"engines": {
|
|
"node": ">=25 <26",
|
|
"pnpm": ">=11.3"
|
|
},
|
|
"packageManager": "pnpm@11.3.0"
|
|
}
|