mirror of
https://github.com/tiennm99/vigeoguessr.git
synced 2026-10-11 03:13:55 +00:00
build: move from pnpm to npm
Replace pnpm-lock.yaml with package-lock.json. There was no pnpm-workspace.yaml and no packageManager field, so the lockfile was the only pnpm-specific config. Add package.json#allowScripts for sharp and unrs-resolver. pnpm 11 refuses to install this branch at all without that approval (ERR_PNPM_IGNORED_BUILDS), so recording it under npm keeps the branch installable; sharp backs next/image and unrs-resolver backs eslint module resolution. Update CLAUDE.md to describe npm commands and drop the stale pnpm permission from the tracked local settings. next-env.d.ts and tsconfig.tsbuildinfo are regenerated by the build. Type-check, lint, test, and build fail on this branch exactly as they did on the pnpm lockfile: six TS errors, an unresolvable @typescript-eslint/recommended config, and a jest.config.ts that imports next/jest instead of next/jest.js. Verified against the pre-change tree; none of it is caused by this commit.
This commit is contained in:
1 parent
7b62155973
commit
5730302515
7 files changed
+12372
-7530
No files matched your search
@@ -12,7 +12,6 @@
|
||||
"Bash(curl:*)",
|
||||
"WebFetch",
|
||||
"Bash(grep:*)",
|
||||
"Bash(pnpm:*)",
|
||||
"Bash(cat:*)"
|
||||
],
|
||||
"deny": []
|
||||
|
||||
@@ -22,7 +22,7 @@ VIGEOGUESSR is a Vietnamese geography guessing game built with Next.js 15 and Re
|
||||
- **Testing**: Jest + React Testing Library
|
||||
- **Linting**: ESLint with `@typescript-eslint`
|
||||
- **Formatting**: Prettier
|
||||
- **Package Manager**: pnpm (preferred)
|
||||
- **Package Manager**: npm
|
||||
|
||||
## 📂 Project Structure
|
||||
|
||||
@@ -73,19 +73,19 @@ Key configuration files in the project root:
|
||||
- Tailwind CSS with PostCSS configuration
|
||||
- shadcn/ui: `npx shadcn-ui@latest init`
|
||||
- React Query: `<QueryClientProvider>` in app/layout.tsx
|
||||
- MapLibre GL JS: `pnpm add maplibre-gl`
|
||||
- MapillaryJS: `pnpm add mapillary-js`
|
||||
- MapLibre GL JS: `npm install maplibre-gl`
|
||||
- MapillaryJS: `npm install mapillary-js`
|
||||
- TypeScript configuration with `tsconfig.json`
|
||||
- ESLint with TypeScript support
|
||||
|
||||
## ⚙️ Development Commands
|
||||
|
||||
- **Dev server**: `pnpm dev` - Start development server on localhost:3000
|
||||
- **Build**: `pnpm build` - Build for production
|
||||
- **Start**: `pnpm start` - Start production server
|
||||
- **Lint**: `pnpm lint` - Run ESLint to check code quality
|
||||
- **Test**: `pnpm test` - Run Jest + RTL tests
|
||||
- **Format**: `pnpm format` - Format code with Prettier
|
||||
- **Dev server**: `npm run dev` - Start development server on localhost:3000
|
||||
- **Build**: `npm run build` - Build for production
|
||||
- **Start**: `npm start` - Start production server
|
||||
- **Lint**: `npm run lint` - Run ESLint to check code quality
|
||||
- **Test**: `npm test` - Run Jest + RTL tests
|
||||
- **Format**: `npm run format` - Format code with Prettier
|
||||
|
||||
## 🧠 React Query Architecture
|
||||
|
||||
@@ -296,7 +296,7 @@ Game state managed at page level with React hooks:
|
||||
|
||||
### Modern Tech Stack Migration (Latest)
|
||||
- **Language**: TypeScript (`^5.7.3`) with strict typing, interfaces, and complete migration
|
||||
- **Package Manager**: Migrated from npm to pnpm with updated scripts (dev, build, start, lint, format, test, type-check)
|
||||
- **Package Manager**: npm, with scripts dev, build, start, lint, format, test, type-check
|
||||
- **Tailwind CSS**: Complete migration from custom CSS to Tailwind utilities with custom design tokens matching game theme
|
||||
- **shadcn/ui**: Installed and configured with utility functions, ready for UI component replacements
|
||||
- **React Query**: Added TanStack Query with QueryClientProvider in layout and custom hooks (`useMapillary`, `useScoring`)
|
||||
@@ -313,7 +313,7 @@ Game state managed at page level with React hooks:
|
||||
- ✅ **Styling**: Tailwind CSS with custom game design tokens
|
||||
- ✅ **Data Fetching**: React Query hooks for API management
|
||||
- ✅ **Testing**: Jest + RTL with TypeScript and library mocks
|
||||
- ✅ **Package Management**: pnpm with modern scripts
|
||||
- ✅ **Package Management**: npm with modern scripts
|
||||
- ✅ **App Router**: All app router files migrated to TypeScript (.tsx)
|
||||
- ✅ **API Routes**: All API routes migrated to TypeScript (.ts)
|
||||
- ✅ **Service Layer**: All service files migrated with proper TypeScript interfaces
|
||||
|
||||
Vendored
+1
@@ -1,5 +1,6 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/image-types/global" />
|
||||
/// <reference path="./.next/types/routes.d.ts" />
|
||||
|
||||
// NOTE: This file should not be edited
|
||||
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
||||
Generated
+12355
File diff suppressed because it is too large.
Load diff
@@ -47,5 +47,9 @@
|
||||
"prettier": "^3.6.2",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"typescript": "^5.9.2"
|
||||
},
|
||||
"allowScripts": {
|
||||
"sharp": true,
|
||||
"unrs-resolver": true
|
||||
}
|
||||
}
|
||||
Generated
-7517
File diff suppressed because it is too large.
Load diff
@@ -1 +1 @@
|
||||
{"fileNames":["./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es5.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.dom.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es2022.object.d.ts",".Line truncated
|
||||
{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/shared/lib/amp.d.ts","./node_modules/next/amp.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/utility.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client-stats.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-tLine truncated
|
||||
Reference in new issue
Block a user