{ "name": "evcc", "description": "evcc UI", "author": "evcc-io", "scripts": { "build": "vite build", "test": "cross-env TZ=Europe/Berlin vitest", "lint": "npm run lint:prettier && npm run lint:eslint && npm run lint:tsc && npm run lint:i18n", "lint:prettier": "prettier assets tests **/*.{yaml,sh} i18n/*.json --write", "lint:eslint": "eslint --fix --max-warnings=0", "lint:tsc": "vue-tsc --noEmit", "lint:i18n": "tsx i18n/check.ts", "dev": "vite", "playwright": "playwright test --ui", "simulator": "vite tests/simulator", "storybook": "storybook dev -p 6006", "license": "license-compliance --production --report detailed --allow \"MIT;Apache-2.0;ISC;BSD-2-Clause;BSD-3-Clause\"" }, "type": "module", "main": "index.js", "dependencies": { "@formkit/drag-and-drop": "^0.5.3", "@guolao/vue-monaco-editor": "^1.5.5", "@h2d2/shopicons": "^1.9.0", "@popperjs/core": "^2.11.8", "@unhead/vue": "^2.0.14", "axios": "^1.12.0", "bootstrap": "^5.3.8", "canvas-confetti": "^1.9.3", "chart.js": "^4.5.0", "chartjs-adapter-dayjs-4": "^1.0.4", "chartjs-plugin-datalabels": "^2.2.0", "countup.js": "^2.9.0", "dayjs": "^1.11.18", "monaco-editor": "^0.52.2", "smoothscroll-polyfill": "^0.4.4", "snarkdown": "^2.0.0", "vue": "^3.2.29", "vue-chartjs": "^5.3.2", "vue-i18n": "^11.1.12", "vue-router": "^4.5.1" }, "engines": { "npm": ">=10.0.0", "node": ">=22.0.0" }, "license": "MIT", "repository": "github:evcc-io/evcc", "devDependencies": { "@chromatic-com/storybook": "^4.2.0-next.1", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.13.0", "@jest/types": "^30.2.0", "@playwright/test": "^1.55.0", "@storybook/vue3": "^10.0.0-beta.2", "@storybook/vue3-vite": "^10.0.0-beta.2", "@types/body-parser": "^1.19.6", "@types/bootstrap": "^5.2.10", "@types/canvas-confetti": "^1.9.0", "@types/kill-port": "^2.0.3", "@types/smoothscroll-polyfill": "^0.3.4", "@types/wait-on": "^5.3.4", "@vitejs/plugin-legacy": "^7.2.1", "@vitejs/plugin-vue": "^6.0.1", "@vue/compiler-sfc": "^3.2.30", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", "@vue/test-utils": "^2.4.6", "@vue/tsconfig": "^0.8.1", "body-parser": "^2.2.0", "cross-env": "^10.0.0", "eslint": "^9.35.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-promise": "^7.2.1", "eslint-plugin-vue": "^10.4.0", "globals": "^16.3.0", "happy-dom": "^20.0.2", "jiti": "^2.5.1", "kill-port": "^2.0.1", "license-compliance": "^3.0.1", "mqtt": "^5.14.1", "prettier": "^3.6.2", "prettier-plugin-sh": "^0.18.0", "prettier-plugin-sort-json": "^4.1.1", "rollup-plugin-visualizer": "^6.0.3", "storybook": "^10.0.0-beta.2", "terser": "^5.44.0", "tsx": "^4.20.5", "typescript": "^5.9.2", "typescript-eslint-language-service": "^5.0.5", "vite": "^7.1.11", "vitest": "^3.2.4", "vue-eslint-parser": "^10.2.0", "vue-hot-reload-api": "^2.3.4", "vue-tsc": "^3.0.6", "wait-on": "^9.0.1" } }