create-nuxt-base 2.2.8 → 2.3.1
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 +59 -0
- package/nuxt-base-template/.env.example +24 -2
- package/nuxt-base-template/nuxt.config.ts +28 -18
- package/nuxt-base-template/package.json +3 -8
- package/nuxt-base-template/pnpm-lock.yaml +201 -206
- package/package.json +1 -1
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.1](https://github.com/lenneTech/nuxt-base-starter/compare/v2.3.0...v2.3.1) (2026-03-15)
|
|
6
|
+
|
|
7
|
+
## [2.3.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.8...v2.3.0) (2026-03-09)
|
|
8
|
+
|
|
5
9
|
### [2.2.8](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.7...v2.2.8) (2026-03-08)
|
|
6
10
|
|
|
7
11
|
### [2.2.5](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.4...v2.2.5) (2026-02-10)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# NPM Package Maintainer Memory - nuxt-base-template
|
|
2
|
+
|
|
3
|
+
## Project Basics
|
|
4
|
+
|
|
5
|
+
- Package manager: pnpm (pnpm-lock.yaml present)
|
|
6
|
+
- Type: Private Nuxt 4 template (not a library)
|
|
7
|
+
- Test command: `pnpm run test:unit` (vitest, 43 tests in 2 files)
|
|
8
|
+
- Build command: `pnpm run build` (nuxt build)
|
|
9
|
+
|
|
10
|
+
## Key Dependency Patterns
|
|
11
|
+
|
|
12
|
+
- `better-auth`, `@better-auth/passkey`, `tus-js-client` are peer dependencies of `@lenne.tech/nuxt-extensions` - keep in `dependencies`
|
|
13
|
+
- `@nuxt/ui` and `@vueuse/nuxt` belong in `dependencies` (used in app/ source files with type imports)
|
|
14
|
+
- pnpm sometimes auto-moves packages to devDependencies during `-D` updates - watch and fix
|
|
15
|
+
|
|
16
|
+
## Security Overrides
|
|
17
|
+
|
|
18
|
+
- Overrides are in `pnpm.overrides` (inside the `pnpm` key), NOT a top-level `overrides` key
|
|
19
|
+
- `pnpm audit --fix` outputs proposed overrides as JSON (does not apply automatically)
|
|
20
|
+
- `pnpm install` must be run after adding/updating overrides to re-resolve lockfile
|
|
21
|
+
- `nanotar` vulnerability from nuxt has NO patched version (`<0.0.0`) - cannot be fixed
|
|
22
|
+
|
|
23
|
+
## Deprecated Package Notes
|
|
24
|
+
|
|
25
|
+
- `@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
|
|
26
|
+
- `openapi-ts.config.ts` uses deprecated `lint`/`format` options; use `postProcess: ['eslint', 'prettier']` instead
|
|
27
|
+
- `@nuxtjs/color-mode`: do NOT add to devDeps - @nuxt/ui brings its own 3.x internally; 4.0.0 would conflict
|
|
28
|
+
|
|
29
|
+
## Override Cleanup Notes (2026-03-09)
|
|
30
|
+
|
|
31
|
+
Removed as no longer needed:
|
|
32
|
+
|
|
33
|
+
- `devalue@<=5.6.2` - nuxt requires ^5.6.2, latest is 5.6.3 (always picked)
|
|
34
|
+
- `fast-xml-parser@>=5.0.0 <5.3.8` - @nuxtjs/sitemap requires ^5.3.3, latest is 5.4.2 (always safe)
|
|
35
|
+
- `markdown-it@>=13.0.0 <14.1.1` - prosemirror-markdown requires ^14.0.0, latest is 14.1.1 (always picked)
|
|
36
|
+
- `minimatch@>=5.0.0 <5.1.8` - readdir-glob installs minimatch 5.1.9 which is already >=5.1.8 (safe)
|
|
37
|
+
|
|
38
|
+
Still required (keep these overrides):
|
|
39
|
+
|
|
40
|
+
- `@hono/node-server@<1.19.10` - @prisma/dev requires 1.19.9 exactly
|
|
41
|
+
- `hono@<4.12.4` - @prisma/dev requires 4.11.4 exactly
|
|
42
|
+
- `lodash@>=4.0.0 <=4.17.22` - @chevrotain/gast requires 4.17.21 exactly (vulnerable)
|
|
43
|
+
- `minimatch@>=9.0.0 <9.0.7` - editorconfig 1.0.4 requires 9.0.1 exactly (in vulnerable range)
|
|
44
|
+
- `rollup@>=4.0.0 <4.59.0` - vite requires ^4.43.0 which could pick <4.59.0
|
|
45
|
+
- `serialize-javascript@<=7.0.2` - @rollup/plugin-terser requires ^6.0.1 (6.x is vulnerable)
|
|
46
|
+
- `svgo@=4.0.0` - postcss-svgo requires ^4.0.0 which could pick 4.0.0 (vulnerable)
|
|
47
|
+
- `tar@<=7.5.9` - @mapbox/node-pre-gyp requires ^7.4.0 (7.4.x is vulnerable)
|
|
48
|
+
|
|
49
|
+
## Version History (2026-03-09)
|
|
50
|
+
|
|
51
|
+
After maintenance, all packages at latest:
|
|
52
|
+
|
|
53
|
+
- `@lenne.tech/nuxt-extensions`: 1.3.0
|
|
54
|
+
- `nuxt`: 4.3.1
|
|
55
|
+
- `vitest`: 4.0.18 (major from 3.x)
|
|
56
|
+
- `@nuxt/test-utils`: 4.0.0 (major from 3.x, requires vitest ^4.0.2)
|
|
57
|
+
- `vitest` v4 + `@nuxt/test-utils` v4 must be updated together (compatibility requirement)
|
|
58
|
+
- Residual vulnerabilities: 1 moderate (nanotar, unfixable)
|
|
59
|
+
- 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=
|
|
@@ -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
|
|
@@ -65,9 +65,10 @@ export default defineNuxtConfig({
|
|
|
65
65
|
// Icon Configuration
|
|
66
66
|
// ============================================================================
|
|
67
67
|
icon: {
|
|
68
|
-
//
|
|
68
|
+
// Icons used in v-for loops or dynamic rendering must be in the client bundle
|
|
69
|
+
// Dynamic icons can set via icons, e.g. icons: ['lucide:trash', 'lucide:key', 'lucide:copy', 'lucide:loader-circle'],
|
|
69
70
|
clientBundle: {
|
|
70
|
-
|
|
71
|
+
scan: true,
|
|
71
72
|
},
|
|
72
73
|
},
|
|
73
74
|
|
|
@@ -84,9 +85,9 @@ export default defineNuxtConfig({
|
|
|
84
85
|
ltExtensions: {
|
|
85
86
|
auth: {
|
|
86
87
|
enabled: true,
|
|
87
|
-
// baseURL is used
|
|
88
|
-
//
|
|
89
|
-
//
|
|
88
|
+
// baseURL is used when NUXT_PUBLIC_API_PROXY is NOT enabled (deployed stages)
|
|
89
|
+
// With proxy: requests go through /api/iam (proxy strips /api/ and forwards to backend)
|
|
90
|
+
// Without proxy: requests go directly to baseURL + basePath (e.g., https://api.example.com/iam)
|
|
90
91
|
baseURL: process.env.NUXT_API_URL || 'http://localhost:3000',
|
|
91
92
|
basePath: '/iam',
|
|
92
93
|
loginPath: '/auth/login',
|
|
@@ -115,7 +116,7 @@ export default defineNuxtConfig({
|
|
|
115
116
|
modules: [
|
|
116
117
|
'@lenne.tech/nuxt-extensions', // Auth, Upload, Transitions
|
|
117
118
|
'@nuxt/test-utils/module', // E2E testing with Playwright
|
|
118
|
-
|
|
119
|
+
'@lenne.tech/bug.lt', // Bug reporting to Linear
|
|
119
120
|
'@vueuse/nuxt', // Vue composition utilities
|
|
120
121
|
'dayjs-nuxt', // Date/time handling
|
|
121
122
|
'@nuxt/image', // Image optimization
|
|
@@ -160,6 +161,12 @@ export default defineNuxtConfig({
|
|
|
160
161
|
apiUrl: 'http://localhost:3000',
|
|
161
162
|
// NUXT_PUBLIC_WEB_PUSH_KEY overrides this
|
|
162
163
|
webPushKey: '',
|
|
164
|
+
// API Proxy: Routes client-side /api/* requests through the Vite dev proxy
|
|
165
|
+
// to the backend (localhost:3000). Required for same-origin cookies during
|
|
166
|
+
// local development. Set NUXT_PUBLIC_API_PROXY=true in .env ONLY for local dev.
|
|
167
|
+
// Nuxt auto-maps NUXT_PUBLIC_API_PROXY to this key.
|
|
168
|
+
// See: @lenne.tech/nuxt-extensions → isLocalDevApiProxy()
|
|
169
|
+
apiProxy: false,
|
|
163
170
|
},
|
|
164
171
|
},
|
|
165
172
|
|
|
@@ -200,22 +207,25 @@ export default defineNuxtConfig({
|
|
|
200
207
|
optimizeDeps: {
|
|
201
208
|
exclude: ['@tailwindcss/vite', 'lightningcss', '@vue/devtools-core', '@vue/devtools-kit', '@internationalized/date'],
|
|
202
209
|
},
|
|
203
|
-
plugins: [tailwindcss()],
|
|
210
|
+
plugins: [tailwindcss() as any],
|
|
204
211
|
server: {
|
|
205
212
|
proxy: {
|
|
206
|
-
//
|
|
207
|
-
//
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
//
|
|
213
|
+
// API proxy for local development (NUXT_PUBLIC_API_PROXY=true)
|
|
214
|
+
//
|
|
215
|
+
// How it works:
|
|
216
|
+
// 1. Client-side requests go to /api/... (e.g., /api/iam/sign-in, /api/i18n/errors/de)
|
|
217
|
+
// 2. This proxy strips the /api prefix and forwards to the backend
|
|
218
|
+
// 3. Backend receives the original path (e.g., /iam/sign-in, /i18n/errors/de)
|
|
219
|
+
//
|
|
220
|
+
// Why: Frontend (localhost:3001) and backend (localhost:3000) run on different
|
|
221
|
+
// ports. The proxy makes requests same-origin so cookies work correctly.
|
|
214
222
|
'/api': {
|
|
215
223
|
target: 'http://localhost:3000',
|
|
216
224
|
changeOrigin: true,
|
|
225
|
+
rewrite: (path) => path.replace(/^\/api/, ''),
|
|
217
226
|
},
|
|
218
|
-
// IAM proxy for
|
|
227
|
+
// Direct IAM proxy for BetterAuth endpoints (SSR Nitro server handler
|
|
228
|
+
// and direct browser redirects, e.g., OAuth callbacks)
|
|
219
229
|
'/iam': {
|
|
220
230
|
target: 'http://localhost:3000',
|
|
221
231
|
changeOrigin: true,
|
|
@@ -51,7 +51,7 @@
|
|
|
51
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
56
|
"@nuxt/ui": "4.5.1",
|
|
57
57
|
"@pinia/nuxt": "0.11.3",
|
|
@@ -64,15 +64,14 @@
|
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@hey-api/openapi-ts": "0.94.0",
|
|
66
66
|
"@iconify-json/lucide": "1.2.96",
|
|
67
|
-
"@nuxt/devtools": "3.2.
|
|
67
|
+
"@nuxt/devtools": "3.2.3",
|
|
68
68
|
"@nuxt/test-utils": "4.0.0",
|
|
69
|
-
"@nuxtjs/color-mode": "4.0.0",
|
|
70
69
|
"@nuxtjs/plausible": "3.0.2",
|
|
71
70
|
"@nuxtjs/seo": "3.4.0",
|
|
72
71
|
"@playwright/test": "1.58.2",
|
|
73
72
|
"@tailwindcss/typography": "0.5.19",
|
|
74
73
|
"@tailwindcss/vite": "4.2.1",
|
|
75
|
-
"@types/node": "25.
|
|
74
|
+
"@types/node": "25.4.0",
|
|
76
75
|
"@types/qrcode": "1.5.6",
|
|
77
76
|
"@vitejs/plugin-vue": "6.0.4",
|
|
78
77
|
"@vue/test-utils": "2.4.6",
|
|
@@ -117,12 +116,8 @@
|
|
|
117
116
|
],
|
|
118
117
|
"overrides": {
|
|
119
118
|
"@hono/node-server@<1.19.10": ">=1.19.10",
|
|
120
|
-
"devalue@<=5.6.2": ">=5.6.3",
|
|
121
|
-
"fast-xml-parser@>=5.0.0 <5.3.8": ">=5.3.8",
|
|
122
119
|
"hono@<4.12.4": ">=4.12.4",
|
|
123
120
|
"lodash@>=4.0.0 <=4.17.22": ">=4.17.23",
|
|
124
|
-
"markdown-it@>=13.0.0 <14.1.1": ">=14.1.1",
|
|
125
|
-
"minimatch@>=5.0.0 <5.1.8": ">=5.1.8",
|
|
126
121
|
"minimatch@>=9.0.0 <9.0.7": ">=9.0.7",
|
|
127
122
|
"rollup@>=4.0.0 <4.59.0": ">=4.59.0",
|
|
128
123
|
"serialize-javascript@<=7.0.2": ">=7.0.3",
|