Files
umami/package.json
2026-05-27 16:24:01 -07:00

168 lines
5.7 KiB
JSON

{
"name": "umami",
"version": "3.1.0",
"description": "A modern, privacy-focused alternative to Google Analytics.",
"author": "Umami Software, Inc. <hello@umami.is>",
"license": "MIT",
"homepage": "https://umami.is",
"repository": {
"type": "git",
"url": "https://github.com/umami-software/umami.git"
},
"type": "module",
"scripts": {
"dev": "dotenv next dev --turbo",
"build": "npm-run-all check-env build-db check-db build-tracker build-recorder build-geo build-app",
"start": "next start",
"build-docker": "npm-run-all build-db build-tracker build-recorder build-geo build-app",
"start-docker": "npm-run-all check-db update-tracker start-server",
"start-env": "node scripts/start-env.js",
"start-server": "node server.js",
"build-app": "next build --turbo",
"build-icons": "svgr ./src/assets --out-dir src/components/svg --typescript",
"build-components": "node scripts/bump-components.js && tsup",
"build-tracker": "rollup -c rollup.tracker.config.js",
"build-recorder": "rollup -c rollup.recorder.config.js",
"build-prisma-client": "node scripts/build-prisma-client.js",
"build-lang": "npm-run-all download-country-names download-language-names",
"build-geo": "node scripts/build-geo.js",
"build-db": "npm-run-all build-db-client build-prisma-client",
"build-db-schema": "prisma db pull",
"build-db-client": "prisma generate",
"update-tracker": "node scripts/update-tracker.js",
"update-db": "prisma migrate deploy",
"check-db": "node scripts/check-db.js",
"check-env": "node scripts/check-env.js",
"check-missing-messages": "node scripts/check-missing-messages.js",
"copy-db-files": "node scripts/copy-db-files.js",
"download-country-names": "node scripts/download-country-names.js",
"download-language-names": "node scripts/download-language-names.js",
"change-password": "node scripts/change-password.js",
"postbuild": "node scripts/postbuild.js",
"test": "vitest run",
"test:watch": "vitest",
"install-heatmap": "playwright install chromium --no-shell",
"test:e2e": "playwright test",
"test:e2e:ui": "playwright test --ui",
"seed-data": "tsx scripts/seed-data.ts",
"lint": "biome lint .",
"format": "biome format --write .",
"check": "biome check --write"
},
"cacheDirectories": [
".next/cache"
],
"dependencies": {
"@aws-sdk/client-s3": "^3.924.0",
"@clickhouse/client": "^1.18.5",
"@date-fns/utc": "^2.1.1",
"@dicebear/collection": "^9.4.2",
"@dicebear/core": "^9.4.2",
"@hello-pangea/dnd": "^18.0.1",
"@prisma/adapter-pg": "^7.8.0",
"@prisma/client": "^7.8.0",
"@prisma/extension-read-replicas": "^0.5.0",
"@playwright/test": "^1.60.0",
"@svgr/cli": "^8.1.0",
"@tanstack/react-query": "^5.100.11",
"@umami/react-zen": "^0.245.0",
"bcryptjs": "^3.0.2",
"chalk": "^5.6.2",
"chart.js": "^4.5.1",
"chartjs-adapter-date-fns": "^3.0.0",
"classnames": "^2.3.1",
"colord": "^2.9.2",
"cors": "^2.8.6",
"cross-spawn": "^7.0.3",
"date-fns": "^4.2.1",
"date-fns-tz": "^3.2.0",
"debug": "^4.4.3",
"del": "^8.0.1",
"detect-browser": "^5.2.0",
"dotenv": "^17.4.2",
"esbuild": "^0.28.0",
"immer": "^11.1.8",
"ipaddr.js": "^2.4.0",
"is-ci": "^4.1.0",
"is-docker": "^4.0.0",
"is-localhost-ip": "^3.0.1",
"isbot": "^5.1.40",
"jsonwebtoken": "^9.0.3",
"jszip": "^3.10.1",
"kafkajs": "^2.1.0",
"lucide-react": "^1.16.0",
"maxmind": "^5.0.5",
"motion": "^12.39.0",
"next": "16.2.6",
"next-intl": "4.12.0",
"node-fetch": "^3.2.8",
"npm-run-all": "^4.1.5",
"papaparse": "^5.5.3",
"pg": "^8.21.0",
"playwright-core": "^1.60.0",
"prisma": "^7.8.0",
"prop-types": "^15.8.1",
"pure-rand": "^8.4.0",
"react": "^19.2.6",
"react-aria-components": "^1.17.0",
"react-dom": "^19.2.6",
"react-error-boundary": "^6.1.1",
"react-resizable-panels": "^4.11.1",
"react-simple-maps": "^3.0.0",
"react-use-measure": "^2.0.4",
"react-window": "^2.2.7",
"redis": "^5.12.1",
"request-ip": "^3.3.0",
"rrweb": "2.0.0-alpha.4",
"rrweb-player": "1.0.0-alpha.4",
"semver": "^7.8.0",
"serialize-error": "^13.0.1",
"thenby": "^1.4.1",
"ua-parser-js": "^2.0.9",
"uuid": "^14.0.0",
"zod": "^4.4.3",
"zustand": "^5.0.13"
},
"devDependencies": {
"@biomejs/biome": "^2.4.15",
"@netlify/plugin-nextjs": "^5.15.11",
"@rollup/plugin-alias": "^6.0.0",
"@rollup/plugin-commonjs": "^29.0.2",
"@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-node-resolve": "^16.0.3",
"@rollup/plugin-replace": "^6.0.3",
"@rollup/plugin-terser": "^1.0.0",
"@rollup/plugin-typescript": "^12.3.0",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^25.9.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.2",
"babel-plugin-react-compiler": "19.1.0-rc.2",
"cross-env": "^10.1.0",
"dotenv-cli": "^11.0.0",
"jsdom": "^29.1.1",
"msw": "^2.14.6",
"postcss": "^8.5.14",
"postcss-flexbugs-fixes": "^5.0.2",
"postcss-import": "^16.1.1",
"postcss-preset-env": "11.3.0",
"prompts": "2.4.2",
"rollup": "^4.60.4",
"rollup-plugin-copy": "^3.4.0",
"rollup-plugin-delete": "^3.0.2",
"rollup-plugin-dts": "^6.4.1",
"rollup-plugin-node-externals": "^9.0.1",
"rollup-plugin-peer-deps-external": "^2.2.4",
"rollup-plugin-postcss": "^4.0.2",
"tar": "^7.5.15",
"ts-morph": "^28.0.0",
"ts-node": "^10.9.1",
"tsup": "^8.5.0",
"tsx": "^4.22.2",
"typescript": "^6.0.3",
"vitest": "^4.1.6"
}
}