create-nuxt-base 2.2.7 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/nuxt-base-template/.claude/agent-memory/lt-dev-npm-package-maintainer/MEMORY.md +50 -0
- package/nuxt-base-template/.env.example +24 -2
- package/nuxt-base-template/.nuxtrc +1 -1
- package/nuxt-base-template/nuxt.config.ts +25 -16
- package/nuxt-base-template/package.json +33 -24
- package/nuxt-base-template/pnpm-lock.yaml +2743 -1507
- package/package.json +7 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [2.3.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.8...v2.3.0) (2026-03-09)
|
|
6
|
+
|
|
7
|
+
### [2.2.8](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.7...v2.2.8) (2026-03-08)
|
|
8
|
+
|
|
5
9
|
### [2.2.5](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.4...v2.2.5) (2026-02-10)
|
|
6
10
|
|
|
7
11
|
### [2.2.4](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.3...v2.2.4) (2026-02-05)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# NPM Package Maintainer Memory - nuxt-base-template
|
|
2
|
+
|
|
3
|
+
## Project Basics
|
|
4
|
+
- Package manager: pnpm (pnpm-lock.yaml present)
|
|
5
|
+
- Type: Private Nuxt 4 template (not a library)
|
|
6
|
+
- Test command: `pnpm run test:unit` (vitest, 43 tests in 2 files)
|
|
7
|
+
- Build command: `pnpm run build` (nuxt build)
|
|
8
|
+
|
|
9
|
+
## Key Dependency Patterns
|
|
10
|
+
- `better-auth`, `@better-auth/passkey`, `tus-js-client` are peer dependencies of `@lenne.tech/nuxt-extensions` - keep in `dependencies`
|
|
11
|
+
- `@nuxt/ui` and `@vueuse/nuxt` belong in `dependencies` (used in app/ source files with type imports)
|
|
12
|
+
- pnpm sometimes auto-moves packages to devDependencies during `-D` updates - watch and fix
|
|
13
|
+
|
|
14
|
+
## Security Overrides
|
|
15
|
+
- Overrides are in `pnpm.overrides` (inside the `pnpm` key), NOT a top-level `overrides` key
|
|
16
|
+
- `pnpm audit --fix` outputs proposed overrides as JSON (does not apply automatically)
|
|
17
|
+
- `pnpm install` must be run after adding/updating overrides to re-resolve lockfile
|
|
18
|
+
- `nanotar` vulnerability from nuxt has NO patched version (`<0.0.0`) - cannot be fixed
|
|
19
|
+
|
|
20
|
+
## Deprecated Package Notes
|
|
21
|
+
- `@hey-api/client-fetch`: deprecated ("bundled in @hey-api/openapi-ts since v0.73.0") but still a valid runtime HTTP client for generated API SDKs - KEEP in dependencies
|
|
22
|
+
- `openapi-ts.config.ts` uses deprecated `lint`/`format` options; use `postProcess: ['eslint', 'prettier']` instead
|
|
23
|
+
- `@nuxtjs/color-mode`: do NOT add to devDeps - @nuxt/ui brings its own 3.x internally; 4.0.0 would conflict
|
|
24
|
+
|
|
25
|
+
## Override Cleanup Notes (2026-03-09)
|
|
26
|
+
Removed as no longer needed:
|
|
27
|
+
- `devalue@<=5.6.2` - nuxt requires ^5.6.2, latest is 5.6.3 (always picked)
|
|
28
|
+
- `fast-xml-parser@>=5.0.0 <5.3.8` - @nuxtjs/sitemap requires ^5.3.3, latest is 5.4.2 (always safe)
|
|
29
|
+
- `markdown-it@>=13.0.0 <14.1.1` - prosemirror-markdown requires ^14.0.0, latest is 14.1.1 (always picked)
|
|
30
|
+
- `minimatch@>=5.0.0 <5.1.8` - readdir-glob installs minimatch 5.1.9 which is already >=5.1.8 (safe)
|
|
31
|
+
|
|
32
|
+
Still required (keep these overrides):
|
|
33
|
+
- `@hono/node-server@<1.19.10` - @prisma/dev requires 1.19.9 exactly
|
|
34
|
+
- `hono@<4.12.4` - @prisma/dev requires 4.11.4 exactly
|
|
35
|
+
- `lodash@>=4.0.0 <=4.17.22` - @chevrotain/gast requires 4.17.21 exactly (vulnerable)
|
|
36
|
+
- `minimatch@>=9.0.0 <9.0.7` - editorconfig 1.0.4 requires 9.0.1 exactly (in vulnerable range)
|
|
37
|
+
- `rollup@>=4.0.0 <4.59.0` - vite requires ^4.43.0 which could pick <4.59.0
|
|
38
|
+
- `serialize-javascript@<=7.0.2` - @rollup/plugin-terser requires ^6.0.1 (6.x is vulnerable)
|
|
39
|
+
- `svgo@=4.0.0` - postcss-svgo requires ^4.0.0 which could pick 4.0.0 (vulnerable)
|
|
40
|
+
- `tar@<=7.5.9` - @mapbox/node-pre-gyp requires ^7.4.0 (7.4.x is vulnerable)
|
|
41
|
+
|
|
42
|
+
## Version History (2026-03-09)
|
|
43
|
+
After maintenance, all packages at latest:
|
|
44
|
+
- `@lenne.tech/nuxt-extensions`: 1.3.0
|
|
45
|
+
- `nuxt`: 4.3.1
|
|
46
|
+
- `vitest`: 4.0.18 (major from 3.x)
|
|
47
|
+
- `@nuxt/test-utils`: 4.0.0 (major from 3.x, requires vitest ^4.0.2)
|
|
48
|
+
- `vitest` v4 + `@nuxt/test-utils` v4 must be updated together (compatibility requirement)
|
|
49
|
+
- Residual vulnerabilities: 1 moderate (nanotar, unfixable)
|
|
50
|
+
- Removed: `@nuxtjs/color-mode` from devDeps (unused, conflicts with @nuxt/ui's internal 3.5.2)
|
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
NUXT_PUBLIC_SITE_URL=http://localhost:3001
|
|
2
|
-
NUXT_PUBLIC_APP_ENV=
|
|
2
|
+
NUXT_PUBLIC_APP_ENV=local
|
|
3
3
|
NODE_ENV=development
|
|
4
4
|
NUXT_API_URL=http://localhost:3000
|
|
5
5
|
NUXT_PUBLIC_API_URL=http://localhost:3000
|
|
6
6
|
NUXT_PUBLIC_WEB_PUSH_KEY=
|
|
7
|
-
|
|
7
|
+
# Local storage namespace prefix (prevents key collisions between projects on localhost)
|
|
8
|
+
NUXT_PUBLIC_STORAGE_PREFIX=my-project-local
|
|
9
|
+
|
|
10
|
+
# ---------------------------------------------------------------------------
|
|
11
|
+
# Local Development API Proxy
|
|
12
|
+
# ---------------------------------------------------------------------------
|
|
13
|
+
# Enables the Vite dev proxy to forward /api/* requests to the backend
|
|
14
|
+
# (localhost:3000). The proxy strips the /api/ prefix before forwarding,
|
|
15
|
+
# so the backend receives the original path (e.g., /iam/sign-in).
|
|
16
|
+
#
|
|
17
|
+
# WHY: In local development, frontend (localhost:3001) and backend
|
|
18
|
+
# (localhost:3000) are on different ports. Browsers enforce same-origin
|
|
19
|
+
# policy for cookies, which breaks session-based authentication.
|
|
20
|
+
# The proxy makes all requests appear same-origin.
|
|
21
|
+
#
|
|
22
|
+
# IMPORTANT: Set to 'true' ONLY for local development with `nuxt dev`.
|
|
23
|
+
# NEVER enable on deployed stages (develop, test, preview, production)
|
|
24
|
+
# — deployed stages call the backend directly via NUXT_PUBLIC_API_URL.
|
|
25
|
+
#
|
|
26
|
+
# Nuxt auto-maps this to runtimeConfig.public.apiProxy
|
|
27
|
+
NUXT_PUBLIC_API_PROXY=true
|
|
28
|
+
|
|
29
|
+
NUXT_PLAUSIBLE_API_URL=
|
|
8
30
|
|
|
9
31
|
NUXT_LINEAR_API_KEY=
|
|
10
32
|
NUXT_LINEAR_TEAM_NAME=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
setups.@nuxt/test-utils="
|
|
1
|
+
setups.@nuxt/test-utils="4.0.0"
|
|
@@ -15,7 +15,7 @@ export default defineNuxtConfig({
|
|
|
15
15
|
// ============================================================================
|
|
16
16
|
// Bug Reporting (Linear Integration via @lenne.tech/bug.lt)
|
|
17
17
|
// ============================================================================
|
|
18
|
-
// @ts-
|
|
18
|
+
// @ts-ignore bug.lt module has no type declarations
|
|
19
19
|
bug: {
|
|
20
20
|
enabled: process.env.NUXT_PUBLIC_APP_ENV !== 'production',
|
|
21
21
|
linearApiKey: process.env.NUXT_LINEAR_API_KEY,
|
|
@@ -49,7 +49,7 @@ export default defineNuxtConfig({
|
|
|
49
49
|
// ============================================================================
|
|
50
50
|
// Environment-specific Layers
|
|
51
51
|
// ============================================================================
|
|
52
|
-
extends: process.env.NUXT_PUBLIC_APP_ENV
|
|
52
|
+
extends: ['local', 'development'].includes(process.env.NUXT_PUBLIC_APP_ENV || '') ? ['./docs'] : [],
|
|
53
53
|
|
|
54
54
|
// ============================================================================
|
|
55
55
|
// Image Optimization
|
|
@@ -84,9 +84,9 @@ export default defineNuxtConfig({
|
|
|
84
84
|
ltExtensions: {
|
|
85
85
|
auth: {
|
|
86
86
|
enabled: true,
|
|
87
|
-
// baseURL is used
|
|
88
|
-
//
|
|
89
|
-
//
|
|
87
|
+
// baseURL is used when NUXT_PUBLIC_API_PROXY is NOT enabled (deployed stages)
|
|
88
|
+
// With proxy: requests go through /api/iam (proxy strips /api/ and forwards to backend)
|
|
89
|
+
// Without proxy: requests go directly to baseURL + basePath (e.g., https://api.example.com/iam)
|
|
90
90
|
baseURL: process.env.NUXT_API_URL || 'http://localhost:3000',
|
|
91
91
|
basePath: '/iam',
|
|
92
92
|
loginPath: '/auth/login',
|
|
@@ -115,7 +115,7 @@ export default defineNuxtConfig({
|
|
|
115
115
|
modules: [
|
|
116
116
|
'@lenne.tech/nuxt-extensions', // Auth, Upload, Transitions
|
|
117
117
|
'@nuxt/test-utils/module', // E2E testing with Playwright
|
|
118
|
-
|
|
118
|
+
'@lenne.tech/bug.lt', // Bug reporting to Linear
|
|
119
119
|
'@vueuse/nuxt', // Vue composition utilities
|
|
120
120
|
'dayjs-nuxt', // Date/time handling
|
|
121
121
|
'@nuxt/image', // Image optimization
|
|
@@ -160,6 +160,12 @@ export default defineNuxtConfig({
|
|
|
160
160
|
apiUrl: 'http://localhost:3000',
|
|
161
161
|
// NUXT_PUBLIC_WEB_PUSH_KEY overrides this
|
|
162
162
|
webPushKey: '',
|
|
163
|
+
// API Proxy: Routes client-side /api/* requests through the Vite dev proxy
|
|
164
|
+
// to the backend (localhost:3000). Required for same-origin cookies during
|
|
165
|
+
// local development. Set NUXT_PUBLIC_API_PROXY=true in .env ONLY for local dev.
|
|
166
|
+
// Nuxt auto-maps NUXT_PUBLIC_API_PROXY to this key.
|
|
167
|
+
// See: @lenne.tech/nuxt-extensions → isLocalDevApiProxy()
|
|
168
|
+
apiProxy: false,
|
|
163
169
|
},
|
|
164
170
|
},
|
|
165
171
|
|
|
@@ -200,22 +206,25 @@ export default defineNuxtConfig({
|
|
|
200
206
|
optimizeDeps: {
|
|
201
207
|
exclude: ['@tailwindcss/vite', 'lightningcss', '@vue/devtools-core', '@vue/devtools-kit', '@internationalized/date'],
|
|
202
208
|
},
|
|
203
|
-
plugins: [tailwindcss()],
|
|
209
|
+
plugins: [tailwindcss() as any],
|
|
204
210
|
server: {
|
|
205
211
|
proxy: {
|
|
206
|
-
//
|
|
207
|
-
//
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
//
|
|
212
|
+
// API proxy for local development (NUXT_PUBLIC_API_PROXY=true)
|
|
213
|
+
//
|
|
214
|
+
// How it works:
|
|
215
|
+
// 1. Client-side requests go to /api/... (e.g., /api/iam/sign-in, /api/i18n/errors/de)
|
|
216
|
+
// 2. This proxy strips the /api prefix and forwards to the backend
|
|
217
|
+
// 3. Backend receives the original path (e.g., /iam/sign-in, /i18n/errors/de)
|
|
218
|
+
//
|
|
219
|
+
// Why: Frontend (localhost:3001) and backend (localhost:3000) run on different
|
|
220
|
+
// ports. The proxy makes requests same-origin so cookies work correctly.
|
|
214
221
|
'/api': {
|
|
215
222
|
target: 'http://localhost:3000',
|
|
216
223
|
changeOrigin: true,
|
|
224
|
+
rewrite: (path) => path.replace(/^\/api/, ''),
|
|
217
225
|
},
|
|
218
|
-
// IAM proxy for
|
|
226
|
+
// Direct IAM proxy for BetterAuth endpoints (SSR Nitro server handler
|
|
227
|
+
// and direct browser redirects, e.g., OAuth callbacks)
|
|
219
228
|
'/iam': {
|
|
220
229
|
target: 'http://localhost:3000',
|
|
221
230
|
changeOrigin: true,
|
|
@@ -48,47 +48,46 @@
|
|
|
48
48
|
"fix": "pnpm run lint:fix && pnpm run format"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@better-auth/passkey": "1.4
|
|
51
|
+
"@better-auth/passkey": "1.5.4",
|
|
52
52
|
"@hey-api/client-fetch": "0.13.1",
|
|
53
53
|
"@lenne.tech/bug.lt": "latest",
|
|
54
|
-
"@lenne.tech/nuxt-extensions": "1.
|
|
54
|
+
"@lenne.tech/nuxt-extensions": "1.3.0",
|
|
55
55
|
"@nuxt/image": "2.0.0",
|
|
56
|
-
"@nuxt/ui": "4.
|
|
56
|
+
"@nuxt/ui": "4.5.1",
|
|
57
57
|
"@pinia/nuxt": "0.11.3",
|
|
58
|
-
"@vueuse/nuxt": "14.1
|
|
59
|
-
"better-auth": "1.4
|
|
58
|
+
"@vueuse/nuxt": "14.2.1",
|
|
59
|
+
"better-auth": "1.5.4",
|
|
60
60
|
"qrcode": "1.5.4",
|
|
61
61
|
"tus-js-client": "4.3.1",
|
|
62
62
|
"valibot": "1.2.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
|
-
"@hey-api/openapi-ts": "0.
|
|
66
|
-
"@iconify-json/lucide": "1.2.
|
|
67
|
-
"@nuxt/devtools": "3.
|
|
68
|
-
"@nuxt/test-utils": "
|
|
69
|
-
"@nuxtjs/
|
|
70
|
-
"@nuxtjs/
|
|
71
|
-
"@
|
|
72
|
-
"@playwright/test": "1.57.0",
|
|
65
|
+
"@hey-api/openapi-ts": "0.94.0",
|
|
66
|
+
"@iconify-json/lucide": "1.2.96",
|
|
67
|
+
"@nuxt/devtools": "3.2.3",
|
|
68
|
+
"@nuxt/test-utils": "4.0.0",
|
|
69
|
+
"@nuxtjs/plausible": "3.0.2",
|
|
70
|
+
"@nuxtjs/seo": "3.4.0",
|
|
71
|
+
"@playwright/test": "1.58.2",
|
|
73
72
|
"@tailwindcss/typography": "0.5.19",
|
|
74
|
-
"@tailwindcss/vite": "4.1
|
|
75
|
-
"@types/node": "25.0
|
|
73
|
+
"@tailwindcss/vite": "4.2.1",
|
|
74
|
+
"@types/node": "25.4.0",
|
|
76
75
|
"@types/qrcode": "1.5.6",
|
|
77
|
-
"@vitejs/plugin-vue": "6.0.
|
|
76
|
+
"@vitejs/plugin-vue": "6.0.4",
|
|
78
77
|
"@vue/test-utils": "2.4.6",
|
|
79
78
|
"dayjs-nuxt": "2.1.11",
|
|
80
|
-
"happy-dom": "20.3
|
|
81
|
-
"jsdom": "
|
|
82
|
-
"lint-staged": "16.2
|
|
79
|
+
"happy-dom": "20.8.3",
|
|
80
|
+
"jsdom": "28.1.0",
|
|
81
|
+
"lint-staged": "16.3.2",
|
|
83
82
|
"mongodb": "7.1.0",
|
|
84
|
-
"nuxt": "4.
|
|
83
|
+
"nuxt": "4.3.1",
|
|
85
84
|
"oxfmt": "latest",
|
|
86
85
|
"oxlint": "latest",
|
|
87
|
-
"rimraf": "6.1.
|
|
86
|
+
"rimraf": "6.1.3",
|
|
88
87
|
"simple-git-hooks": "2.13.1",
|
|
89
|
-
"tailwindcss": "4.1
|
|
88
|
+
"tailwindcss": "4.2.1",
|
|
90
89
|
"typescript": "5.9.3",
|
|
91
|
-
"vitest": "
|
|
90
|
+
"vitest": "4.0.18"
|
|
92
91
|
},
|
|
93
92
|
"simple-git-hooks": {
|
|
94
93
|
"pre-commit": "npx lint-staged",
|
|
@@ -114,6 +113,16 @@
|
|
|
114
113
|
"sharp",
|
|
115
114
|
"simple-git-hooks",
|
|
116
115
|
"vue-demi"
|
|
117
|
-
]
|
|
116
|
+
],
|
|
117
|
+
"overrides": {
|
|
118
|
+
"@hono/node-server@<1.19.10": ">=1.19.10",
|
|
119
|
+
"hono@<4.12.4": ">=4.12.4",
|
|
120
|
+
"lodash@>=4.0.0 <=4.17.22": ">=4.17.23",
|
|
121
|
+
"minimatch@>=9.0.0 <9.0.7": ">=9.0.7",
|
|
122
|
+
"rollup@>=4.0.0 <4.59.0": ">=4.59.0",
|
|
123
|
+
"serialize-javascript@<=7.0.2": ">=7.0.3",
|
|
124
|
+
"svgo@=4.0.0": ">=4.0.1",
|
|
125
|
+
"tar@<=7.5.9": ">=7.5.10"
|
|
126
|
+
}
|
|
118
127
|
}
|
|
119
128
|
}
|