mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-07-16 22:05:20 +00:00
* build: migrate frontend tooling from yarn to pnpm The Dockerfiles ran `yarn && yarn build`, which broke on node:24 (yarn no longer on PATH; the corepack yarn shim made `npm i -g yarn` fail EEXIST), while CI + Makefile used npm and only a yarn.lock was committed — an inconsistent yarn/npm split. Standardize on pnpm, pinned via the packageManager field + corepack. - package.json: packageManager pnpm@11.6.0. - pnpm-workspace.yaml: nodeLinker: hoisted (flat node_modules, npm/yarn-like, so directly-imported transitive deps like flatpickr resolve) + allow vue-demi's postinstall (it selects the Vue 3 entry). pnpm 11 reads these here, not .npmrc. - Generate pnpm-lock.yaml (imported from yarn.lock); delete yarn.lock. - Dockerfiles (dev/nginx/production): node:24 + `corepack enable && pnpm install --frozen-lockfile && pnpm build`. - CI (check.yaml, docker.yaml): pnpm/action-setup + setup-node cache:pnpm; pnpm install --frozen-lockfile / pnpm build. - Makefile, composer.json dev script, CLAUDE.md: npm/yarn -> pnpm. pnpm build verified on a clean install (1425 modules, hoisted node_modules). * fix(build): pin vite to 8.0.3 to fix rolldown chunk regression vite 8.0.16 (pulled in by #653) bundles rolldown 1.0.3, which emits a lazy chunk referencing an undefined Vue runtime-init function (init_runtime_dom_esm_bundler), breaking the SPA at runtime. The build succeeds so CI never caught it. Pin vite to 8.0.3 (the version 2.3.3 shipped, rolldown 1.0.0) which produces a correct bundle.
63 lines
1.6 KiB
JSON
63 lines
1.6 KiB
JSON
{
|
|
"private": true,
|
|
"engines": {
|
|
"node": ">=24"
|
|
},
|
|
"type": "module",
|
|
"packageManager": "pnpm@11.6.0",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"watch": "vite build --watch",
|
|
"build": "vite build",
|
|
"serve": "vite preview",
|
|
"test": "eslint ./resources/scripts"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/forms": "^0.5.10",
|
|
"@tailwindcss/typography": "^0.5.16",
|
|
"@tailwindcss/vite": "^4.0.0",
|
|
"@vitejs/plugin-vue": "^6.0.0",
|
|
"@vue/compiler-sfc": "^3.5.13",
|
|
"eslint": "^10.0.0",
|
|
"eslint-config-prettier": "^10.0.0",
|
|
"eslint-plugin-vue": "^10.0.0",
|
|
"prettier": "^3.4.2",
|
|
"tailwind-scrollbar": "^4.0.0",
|
|
"tailwindcss": "^4.0.0"
|
|
},
|
|
"dependencies": {
|
|
"@headlessui/vue": "^1.7.23",
|
|
"@heroicons/vue": "^2.2.0",
|
|
"@popperjs/core": "^2.11.8",
|
|
"@stripe/stripe-js": "^2.4.0",
|
|
"@tiptap/core": "^3.0.0",
|
|
"@tiptap/extension-text-align": "^3.0.0",
|
|
"@tiptap/pm": "^3.0.0",
|
|
"@tiptap/starter-kit": "^3.0.0",
|
|
"@tiptap/vue-3": "^3.0.0",
|
|
"@types/node": "^24.0.0",
|
|
"@vuelidate/components": "^1.2.6",
|
|
"@vuelidate/core": "^2.0.3",
|
|
"@vuelidate/validators": "^2.0.4",
|
|
"@vueuse/core": "^14.0.0",
|
|
"axios": "1.16.0",
|
|
"chart.js": "^4.5.1",
|
|
"guid": "^0.0.12",
|
|
"laravel-vite-plugin": "^3.0.0",
|
|
"lodash": "^4.17.21",
|
|
"maska": "^3.0.4",
|
|
"mini-svg-data-uri": "^1.4.4",
|
|
"moment": "^2.30.1",
|
|
"path": "^0.12.7",
|
|
"pinia": "^3.0.0",
|
|
"v-money3": "^3.24.1",
|
|
"v-tooltip": "^4.0.0-beta.17",
|
|
"vite": "8.0.3",
|
|
"vue": "^3.5",
|
|
"vue-flatpickr-component": "^12.0.0",
|
|
"vue-i18n": "^11.0.1",
|
|
"vue-router": "^5.0.0",
|
|
"vuedraggable": "^4.1.0"
|
|
}
|
|
}
|