{ "name": "web", "private": true, "version": "2.0.0", "scripts": { "dev": "vite dev --host", "build": "vite build", "preview": "vite build && vite preview --host", "test": "vitest", "test:ui": "vitest --ui", "test:coverage": "vitest run --coverage", "test:types": "tsc --noEmit --project src/renderer/tsconfig.json", "lint": "eslint --ext .ts,.js,.tsx,.jsx ./", "analyze:css": "npx windicss-analysis", "analyze:js": "npm run build && open-cli bundle-stats-renderer.html", "storybook": "start-storybook -p 6006", "storybook:build": "build-storybook", "generate:accent-color-css": "node ./scripts/generate.accent.color.css.js", "api:netease": "npx NeteaseCloudMusicApi@latest" }, "engines": { "node": "^14.13.1 || >=16.0.0" }, "dependencies": { "@emotion/css": "^11.9.0", "@sentry/react": "^6.19.7", "@sentry/tracing": "^6.19.7", "@tanstack/react-virtual": "3.0.0-beta.2", "ahooks": "^3.4.1", "axios": "^0.27.2", "color.js": "^1.2.0", "colord": "^2.9.2", "dayjs": "^1.11.1", "framer-motion": "^6.3.4", "hls.js": "^1.1.5", "howler": "^2.2.3", "js-cookie": "^3.0.1", "lodash-es": "^4.17.21", "md5": "^2.3.0", "plyr": "^3.7.2", "plyr-react": "^5.0.2", "qrcode": "^1.5.0", "react": "^18.1.0", "react-dom": "^18.1.0", "react-error-boundary": "^3.1.4", "react-ga4": "^1.4.1", "react-hot-toast": "^2.2.0", "react-query": "^3.38.0", "react-router-dom": "^6.3.0", "react-use": "^17.4.0", "valtio": "^1.6.1" }, "devDependencies": { "@storybook/addon-actions": "^6.5.5", "@storybook/addon-essentials": "^6.5.5", "@storybook/addon-interactions": "^6.5.5", "@storybook/addon-links": "^6.5.5", "@storybook/addon-postcss": "^2.0.0", "@storybook/addon-viewport": "^6.5.5", "@storybook/builder-vite": "^0.1.35", "@storybook/react": "^6.5.5", "@storybook/testing-library": "^0.0.11", "@testing-library/react": "^13.3.0", "@types/howler": "^2.2.7", "@types/js-cookie": "^3.0.2", "@types/lodash-es": "^4.17.6", "@types/md5": "^2.3.2", "@types/qrcode": "^1.4.2", "@types/react": "^18.0.11", "@types/react-dom": "^18.0.5", "@typescript-eslint/eslint-plugin": "^5.27.0", "@typescript-eslint/parser": "^5.27.0", "@vitejs/plugin-react": "^1.3.1", "@vitest/ui": "^0.12.10", "autoprefixer": "^10.4.5", "c8": "^7.11.3", "dotenv": "^16.0.0", "eslint": "*", "eslint-plugin-react": "^7.30.0", "eslint-plugin-react-hooks": "^4.5.0", "jsdom": "^19.0.0", "open-cli": "^7.0.1", "postcss": "^8.4.14", "prettier": "*", "prettier-plugin-tailwindcss": "^0.1.11", "rollup-plugin-visualizer": "^5.6.0", "storybook-tailwind-dark-mode": "^1.0.12", "tailwindcss": "^3.0.24", "typescript": "*", "vite": "^2.9.6", "vite-plugin-pwa": "^0.12.0", "vite-plugin-svg-icons": "^2.0.1", "vitest": "^0.12.10" } }