{ "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 ./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", "format": "prettier --config ../../prettier.config.js --write './**/*.{ts,tsx,js,jsx,css}' --ignore-path ../../.prettierignore" }, "engines": { "node": "^14.13.1 || >=16.0.0" }, "dependencies": { "@emotion/css": "^11.10.0", "@sentry/react": "^7.8.1", "@sentry/tracing": "^7.8.1", "@tanstack/react-query": "^4.0.10", "@tanstack/react-query-devtools": "^4.0.10", "ahooks": "^3.6.2", "axios": "^0.27.2", "color.js": "^1.2.0", "colord": "^2.9.2", "dayjs": "^1.11.4", "framer-motion": "^6.5.1", "hls.js": "^1.2.0", "howler": "^2.2.3", "i18next": "^21.9.1", "js-cookie": "^3.0.1", "lodash-es": "^4.17.21", "md5": "^2.3.0", "plyr-react": "^5.1.0", "qrcode": "^1.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-ga4": "^1.4.1", "react-hot-toast": "^2.3.0", "react-i18next": "^11.18.4", "react-router-dom": "^6.3.0", "react-use": "^17.4.0", "react-use-measure": "^2.1.1", "react-virtuoso": "^2.16.6", "valtio": "^1.6.3" }, "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.15", "@types/react-dom": "^18.0.6", "@typescript-eslint/eslint-plugin": "^5.32.0", "@typescript-eslint/parser": "^5.32.0", "@vitejs/plugin-react": "^2.0.0", "@vitest/ui": "^0.20.3", "autoprefixer": "^10.4.8", "c8": "^7.12.0", "dotenv": "^16.0.1", "eslint": "*", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^4.6.0", "jsdom": "^20.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.1.7", "typescript": "*", "vite": "^3.0.4", "vite-plugin-pwa": "^0.12.3", "vite-plugin-svg-icons": "^2.0.1", "vitest": "^0.20.3" } }