@jeremyckahn/farmhand
Version:
A farming game
207 lines (206 loc) • 6.7 kB
JSON
{
"name": "@jeremyckahn/farmhand",
"version": "1.19.17",
"publishConfig": {
"access": "public"
},
"description": "A farming game",
"main": "public/electron.js",
"unpkg": "dist/index.html",
"homepage": "https://www.farmhand.life/",
"type": "module",
"scripts": {
"build": "vite build",
"build:native": "npm run build -- --base='./' && electron-builder --publish=always",
"check:types": "tsc",
"dev": "mprocs \"cross-env VITE_TRACKER_URL='ws://localhost:8000' npm run start\" \"npm run start:api\" \"npm run start:backend\" \"npm run start:tracker\"",
"dev:native": "mprocs \"BROWSER=none npm run start\" \"npm run start:api\" \"npm run start:backend\" \"npm run electron\"",
"e2e": "gh act --secret GITHUB_TOKEN=\"$(gh auth token)\" --secret VERCEL_TOKEN=\"$(jq .token ~/.local/share/com.vercel.cli/auth.json)\" -j e2e",
"e2e:stop": "docker compose -f e2e/docker-compose.yml down",
"e2e:cleanup": "docker rmi $(docker images --filter \"reference=ghcr.io/jeremyckahn/farmhand/*\" -q)",
"e2e:serve-app": "npx vite preview --port 3000 --host",
"e2e:create": "npx playwright codegen localhost:3000?seed=0.5",
"electron": "wait-on tcp:3000 && electron .",
"print:crops": "npx babel-node --presets @babel/preset-env --presets babel-preset-vite src/scripts/generate-crop-table.js",
"lint": "eslint src --max-warnings=0",
"prettier": "prettier 'src/**/*.js' --write",
"preversion": "npm test",
"postversion": "git push && git push --tags",
"start": "vite --port=3000",
"start:api": "NODE_OPTIONS=--openssl-legacy-provider vercel dev --token=$VERCEL_TOKEN --listen=0.0.0.0:3001 --yes",
"start:backend": "docker compose up",
"start:tracker": "bittorrent-tracker",
"test": "vitest",
"test:debug": "vitest --inspect-brk --no-file-parallelism --run",
"update-images": "bash update-images.sh"
},
"author": "Jeremy Kahn <jeremyckahn@gmail.com>",
"license": "GPL-2.0-or-later",
"repository": {
"type": "git",
"url": "https://github.com/jeremyckahn/farmhand.git"
},
"engines": {
"node": "22.x"
},
"devDependencies": {
"@babel/core": "^7.25.2",
"@babel/node": "^7.20.7",
"@testing-library/dom": "^8.3.0",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^12.0.0",
"@testing-library/user-event": "^14.6.1",
"@types/dinero.js": "^1.9.0",
"@types/lodash.sortby": "^4.7.7",
"@types/markdown-table": "^2.0.0",
"@types/node": "^22.19.9",
"@types/react": "^17.0.2",
"@types/uuid": "^9.0.2",
"@typescript-eslint/eslint-plugin": "^2.23.0",
"@typescript-eslint/parser": "^2.23.0",
"@vitejs/plugin-react": "^4.2.1",
"@vitest/coverage-v8": "^4.0.18",
"babel-preset-vite": "^1.1.3",
"bittorrent-tracker": "^9.19.0",
"browserslist": "^4.21.9",
"cheerio": "^1.0.0-rc.3",
"cross-env": "^7.0.2",
"electron": "^35.7.5",
"electron-builder": "^26.0.12",
"eslint": "^7.13.0",
"eslint-config-react-app": "^5.2.0",
"eslint-plugin-flowtype": "^4.6.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^2.5.0",
"git-branch-is": "^4.0.0",
"husky": "^4.2.3",
"jest-extended": "^0.11.5",
"jimp": "^0.22.8",
"jsdom": "^16.2.1",
"markdown-table": "^2.0.0",
"mprocs": "^0.6.4",
"nodemon": "^2.0.2",
"npm-run-all": "^4.1.3",
"prettier": "^1.13.7",
"pretty-quick": "^2.0.1",
"sass": "^1.69.5",
"scss-reset": "^1.4.2",
"serve": "^14.2.0",
"vercel": "^50.10.1",
"vite": "^7.3.1",
"vite-plugin-pwa": "^1.2.0",
"vitest": "^4.0.18",
"wait-on": "^8.0.3"
},
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@fontsource/francois-one": "^5.2.6",
"@fontsource/public-sans": "^5.1.1",
"@fortawesome/fontawesome-svg-core": "^1.2.27",
"@fortawesome/free-regular-svg-icons": "^5.12.1",
"@fortawesome/free-solid-svg-icons": "^5.12.1",
"@fortawesome/react-fontawesome": "^0.1.9",
"@mui/icons-material": "^5.15.0",
"@mui/lab": "^5.0.0-alpha.156",
"@mui/material": "^5.15.0",
"@mui/styles": "^5.15.0",
"animate.css": "^4.1.0",
"assert": "npm:assert-browserify@^2.0.0",
"axios": "^1.6.0",
"babel-eslint": "^10.1.0",
"buffer": "^6.0.3",
"classnames": "^2.2.6",
"dinero.js": "^1.7.0",
"electron-is-dev": "^2.0.0",
"electron-updater": "^6.3.0",
"fast-memoize": "^2.5.2",
"file-saver": "^2.0.2",
"fs": "npm:browserify-fs@^1.0.0",
"fun-animal-names": "^0.1.1",
"global": "^4.4.0",
"http": "npm:http-browserify@^1.7.0",
"https": "npm:https-browserify@^1.0.0",
"localforage": "^1.7.3",
"lodash.debounce": "^4.0.8",
"lodash.sortby": "^4.7.0",
"lodash.throttle": "^4.1.1",
"notistack": "^2.0.8",
"path": "npm:path-browserify@^1.0.1",
"process": "^0.11.10",
"prop-types": "^15.6.2",
"react": "^17.0.2",
"react-confetti": "6.1.0",
"react-dom": "^17.0.2",
"react-file-reader-input": "^2.0.0",
"react-helmet": "^6.1.0",
"react-hotkeys": "^2.0.0",
"react-markdown": "^4.3.1",
"react-number-format": "^4.4.1",
"react-router-dom": "^5.2.0",
"react-use": "^17.4.0",
"react-zoom-pan-pinch": "^1.6.1",
"redis": "^3.0.2",
"seedrandom": "^3.0.5",
"shifty": "^3.0.1",
"stream": "npm:stream-browserify@^3.0.0",
"trystero": "^0.22.0",
"url": "^0.11.0",
"usehooks-ts": "^3.1.0",
"uuid": "^3.4.0",
"zlib": "npm:browserify-zlib@^0.2.0"
},
"build": {
"appId": "life.farmhand.game",
"productName": "Farmhand",
"extraMetadata": {
"name": "Farmhand",
"main": "dist/electron.js"
},
"files": [
"dist/**/*",
"node_modules/**/*"
],
"directories": {
"buildResources": "public",
"output": "dist/native"
},
"linux": {
"target": [
{
"target": "AppImage"
}
],
"category": "Game",
"icon": "./public/app-icons/Icon-512x512.png"
},
"publish": {
"provider": "github",
"owner": "jeremyckahn",
"repo": "farmhand",
"releaseType": "release"
}
},
"husky": {
"hooks": {
"pre-commit": "pretty-quick --staged && npm run lint && npm run check:types && if git-branch-is develop; then npm test -- --run; fi"
}
},
"files": [
"src",
"dist",
"public"
],
"craGenerate": {
"cssExtension": "sass",
"type": "functional"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
}