create-nuxt-base 2.3.1 → 2.5.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 +14 -0
- package/nuxt-base-template/.claude/agent-memory/lt-dev-npm-package-maintainer/MEMORY.md +34 -20
- package/nuxt-base-template/Dockerfile +39 -0
- package/nuxt-base-template/README.md +11 -11
- package/nuxt-base-template/openapi-ts.config.ts +2 -10
- package/nuxt-base-template/package.json +17 -16
- package/nuxt-base-template/pnpm-lock.yaml +1404 -1050
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
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.5.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.3.1...v2.5.0) (2026-03-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* add production default dockerfile ([e338c93](https://github.com/lenneTech/nuxt-base-starter/commit/e338c9363a348c1a63d40a71301240c8e8478835))
|
|
11
|
+
|
|
12
|
+
## [2.4.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.3.1...v2.4.0) (2026-03-16)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* add production default dockerfile ([e338c93](https://github.com/lenneTech/nuxt-base-starter/commit/e338c9363a348c1a63d40a71301240c8e8478835))
|
|
18
|
+
|
|
5
19
|
### [2.3.1](https://github.com/lenneTech/nuxt-base-starter/compare/v2.3.0...v2.3.1) (2026-03-15)
|
|
6
20
|
|
|
7
21
|
## [2.3.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.8...v2.3.0) (2026-03-09)
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
- `better-auth`, `@better-auth/passkey`, `tus-js-client` are peer dependencies of `@lenne.tech/nuxt-extensions` - keep in `dependencies`
|
|
13
13
|
- `@nuxt/ui` and `@vueuse/nuxt` belong in `dependencies` (used in app/ source files with type imports)
|
|
14
|
+
- `@hey-api/client-fetch`: deprecated, moved to devDependencies (only used in openapi-ts.config.ts codegen config)
|
|
14
15
|
- pnpm sometimes auto-moves packages to devDependencies during `-D` updates - watch and fix
|
|
15
16
|
|
|
16
17
|
## Security Overrides
|
|
@@ -22,38 +23,51 @@
|
|
|
22
23
|
|
|
23
24
|
## Deprecated Package Notes
|
|
24
25
|
|
|
25
|
-
- `@hey-api/client-fetch`: deprecated ("bundled in @hey-api/openapi-ts since v0.73.0")
|
|
26
|
-
- `openapi-ts.config.ts
|
|
26
|
+
- `@hey-api/client-fetch`: deprecated ("bundled in @hey-api/openapi-ts since v0.73.0"), moved to devDependencies (codegen config only, no runtime use)
|
|
27
|
+
- `openapi-ts.config.ts`: migrated from deprecated `lint`/`format` options to `postProcess: ['oxlint', 'oxfmt']`
|
|
27
28
|
- `@nuxtjs/color-mode`: do NOT add to devDeps - @nuxt/ui brings its own 3.x internally; 4.0.0 would conflict
|
|
28
29
|
|
|
29
|
-
## Override Cleanup Notes (2026-03-
|
|
30
|
+
## Override Cleanup Notes (2026-03-16)
|
|
30
31
|
|
|
31
32
|
Removed as no longer needed:
|
|
32
33
|
|
|
33
|
-
- `
|
|
34
|
-
- `
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
- `svgo@=4.0.0` - postcss-svgo now requires ^4.0.1, so 4.0.0 is never picked
|
|
35
|
+
- `devalue@<=5.6.2` (old) - replaced with `devalue@<=5.6.3` to cover new vulnerability in 5.6.3
|
|
36
|
+
|
|
37
|
+
Updated overrides:
|
|
38
|
+
|
|
39
|
+
- `hono@<4.12.4` → `hono@<4.12.7` - new vulnerability discovered in <4.12.7
|
|
40
|
+
- `tar@<=7.5.9` → `tar@<=7.5.10` - new vulnerability discovered in 7.5.10
|
|
41
|
+
- Added `devalue@<=5.6.3` - new vulnerability in devalue <=5.6.3 (proto pollution)
|
|
42
|
+
- Added `unhead@<=2.1.10` - new vulnerability in unhead <=2.1.10
|
|
37
43
|
|
|
38
44
|
Still required (keep these overrides):
|
|
39
45
|
|
|
40
46
|
- `@hono/node-server@<1.19.10` - @prisma/dev requires 1.19.9 exactly
|
|
41
|
-
- `
|
|
47
|
+
- `devalue@<=5.6.3` - nuxt requires ^5.6.3 which picks vulnerable 5.6.3; 5.6.4 is safe
|
|
48
|
+
- `hono@<4.12.7` - @prisma/dev requires 4.11.4 exactly (new vuln <4.12.7)
|
|
42
49
|
- `lodash@>=4.0.0 <=4.17.22` - @chevrotain/gast requires 4.17.21 exactly (vulnerable)
|
|
43
50
|
- `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
|
|
45
|
-
- `serialize-javascript@<=7.0.2` - @rollup/plugin-terser requires ^6.0.1 (6.x is vulnerable)
|
|
46
|
-
- `
|
|
47
|
-
- `
|
|
51
|
+
- `rollup@>=4.0.0 <4.59.0` - vite requires range that could pick <4.59.0
|
|
52
|
+
- `serialize-javascript@<=7.0.2` - nitropack uses @rollup/plugin-terser@0.4.4 which requires ^6.0.1 (6.x is vulnerable)
|
|
53
|
+
- `tar@<=7.5.10` - @mapbox/node-pre-gyp requires ^7.4.0 (7.4.x-7.5.10 are vulnerable)
|
|
54
|
+
- `unhead@<=2.1.10` - @nuxt/ui/@nuxtjs/seo use @unhead/vue which pulls vulnerable unhead
|
|
48
55
|
|
|
49
|
-
## Version History (2026-03-
|
|
56
|
+
## Version History (2026-03-16)
|
|
50
57
|
|
|
51
58
|
After maintenance, all packages at latest:
|
|
52
59
|
|
|
53
|
-
- `@
|
|
54
|
-
- `
|
|
55
|
-
-
|
|
56
|
-
- `@
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
+
- `@better-auth/passkey`: 1.5.5 (from 1.5.4)
|
|
61
|
+
- `better-auth`: 1.5.5 (from 1.5.4)
|
|
62
|
+
- `@lenne.tech/nuxt-extensions`: 1.5.0
|
|
63
|
+
- `@iconify-json/lucide`: 1.2.98 (from 1.2.96)
|
|
64
|
+
- `@vitejs/plugin-vue`: 6.0.5 (from 6.0.4)
|
|
65
|
+
- `happy-dom`: 20.8.4 (from 20.8.3)
|
|
66
|
+
- `@types/node`: 25.5.0 (from 25.4.0)
|
|
67
|
+
- `lint-staged`: 16.4.0 (from 16.3.2)
|
|
68
|
+
- `nuxt`: 4.4.2 (from 4.3.1)
|
|
69
|
+
- `vitest`: 4.1.0 (from 4.0.18)
|
|
70
|
+
- `@hey-api/openapi-ts`: 0.94.2 (from 0.94.0)
|
|
71
|
+
- `jsdom`: 29.0.0 (from 28.1.0) - fixes undici vulnerabilities (jsdom 29 requires undici ^7.24.3)
|
|
72
|
+
- Residual vulnerabilities: 0
|
|
73
|
+
- `@hey-api/client-fetch`: moved from dependencies → devDependencies
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Stage 1: Install dependencies
|
|
2
|
+
FROM node:22-alpine@sha256:8094c002d08262dba12645a3b4a15cd6cd627d30bc782f53229a2ec13ee22a00 AS deps
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
RUN corepack enable
|
|
5
|
+
|
|
6
|
+
# Copy workspace configuration
|
|
7
|
+
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
|
|
8
|
+
|
|
9
|
+
# Copy all project manifests (required for pnpm workspace resolution)
|
|
10
|
+
COPY projects/api/package.json ./projects/api/
|
|
11
|
+
COPY projects/app/package.json ./projects/app/
|
|
12
|
+
|
|
13
|
+
# Install dependencies (--ignore-scripts prevents husky/simple-git-hooks errors in Docker)
|
|
14
|
+
RUN pnpm install --frozen-lockfile --ignore-scripts
|
|
15
|
+
|
|
16
|
+
# Stage 2: Build
|
|
17
|
+
FROM node:22-alpine@sha256:8094c002d08262dba12645a3b4a15cd6cd627d30bc782f53229a2ec13ee22a00 AS builder
|
|
18
|
+
WORKDIR /app
|
|
19
|
+
RUN corepack enable
|
|
20
|
+
|
|
21
|
+
COPY --from=deps /app ./
|
|
22
|
+
COPY projects/app/ ./projects/app/
|
|
23
|
+
|
|
24
|
+
RUN pnpm --filter app run build
|
|
25
|
+
|
|
26
|
+
# Stage 3: Production runner
|
|
27
|
+
FROM node:22-alpine@sha256:8094c002d08262dba12645a3b4a15cd6cd627d30bc782f53229a2ec13ee22a00 AS runner
|
|
28
|
+
WORKDIR /app
|
|
29
|
+
ENV NODE_ENV=production
|
|
30
|
+
|
|
31
|
+
# Non-root user
|
|
32
|
+
RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001
|
|
33
|
+
|
|
34
|
+
# Nuxt output is self-contained (Nitro bundles all dependencies)
|
|
35
|
+
COPY --from=builder --chown=nodejs:nodejs /app/projects/app/.output ./.output
|
|
36
|
+
|
|
37
|
+
USER nodejs
|
|
38
|
+
EXPOSE 3000
|
|
39
|
+
CMD ["node", ".output/server/index.mjs"]
|
|
@@ -91,17 +91,17 @@ npm run generate-types
|
|
|
91
91
|
|
|
92
92
|
## Tech Stack
|
|
93
93
|
|
|
94
|
-
| Technology
|
|
95
|
-
|
|
|
96
|
-
| Nuxt
|
|
97
|
-
| TypeScript
|
|
98
|
-
| Tailwind CSS
|
|
99
|
-
| NuxtUI
|
|
100
|
-
| Pinia
|
|
101
|
-
| Better Auth
|
|
102
|
-
| Playwright
|
|
103
|
-
| @hey-api/
|
|
104
|
-
| Valibot
|
|
94
|
+
| Technology | Version | Description |
|
|
95
|
+
| ------------------- | ------- | -------------------------------- |
|
|
96
|
+
| Nuxt | 4.4.x | Vue 3 meta-framework with SSR |
|
|
97
|
+
| TypeScript | 5.9.x | Strict type checking |
|
|
98
|
+
| Tailwind CSS | 4.1.x | Utility-first CSS (Vite plugin) |
|
|
99
|
+
| NuxtUI | 4.3.x | Component library with dark mode |
|
|
100
|
+
| Pinia | 0.11.x | State management |
|
|
101
|
+
| Better Auth | 1.5.x | Authentication framework |
|
|
102
|
+
| Playwright | 1.57.x | E2E testing |
|
|
103
|
+
| @hey-api/openapi-ts | 0.94.x | API client code generation (dev) |
|
|
104
|
+
| Valibot | 1.2.x | Schema validation |
|
|
105
105
|
|
|
106
106
|
## Key Features
|
|
107
107
|
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { defineConfig } from '@hey-api/openapi-ts';
|
|
2
2
|
|
|
3
3
|
export default defineConfig({
|
|
4
|
-
client: '@hey-api/client-fetch',
|
|
5
4
|
input: process.env.NUXT_API_URL || 'http://127.0.0.1:3000/api-docs-json',
|
|
6
5
|
output: {
|
|
7
|
-
format: 'prettier',
|
|
8
|
-
lint: 'eslint',
|
|
9
6
|
path: './app/api-client',
|
|
7
|
+
postProcess: ['oxlint', 'oxfmt'],
|
|
10
8
|
},
|
|
11
|
-
plugins: [
|
|
12
|
-
'@hey-api/sdk',
|
|
13
|
-
{
|
|
14
|
-
dates: true,
|
|
15
|
-
name: '@hey-api/typescript',
|
|
16
|
-
},
|
|
17
|
-
],
|
|
9
|
+
plugins: ['@hey-api/client-fetch', '@hey-api/sdk', '@hey-api/typescript', '@hey-api/transformers'],
|
|
18
10
|
});
|
|
@@ -48,22 +48,22 @@
|
|
|
48
48
|
"fix": "pnpm run lint:fix && pnpm run format"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@better-auth/passkey": "1.5.
|
|
52
|
-
"@hey-api/client-fetch": "0.13.1",
|
|
51
|
+
"@better-auth/passkey": "1.5.5",
|
|
53
52
|
"@lenne.tech/bug.lt": "latest",
|
|
54
|
-
"@lenne.tech/nuxt-extensions": "1.
|
|
53
|
+
"@lenne.tech/nuxt-extensions": "1.5.0",
|
|
55
54
|
"@nuxt/image": "2.0.0",
|
|
56
55
|
"@nuxt/ui": "4.5.1",
|
|
57
56
|
"@pinia/nuxt": "0.11.3",
|
|
58
57
|
"@vueuse/nuxt": "14.2.1",
|
|
59
|
-
"better-auth": "1.5.
|
|
58
|
+
"better-auth": "1.5.5",
|
|
60
59
|
"qrcode": "1.5.4",
|
|
61
60
|
"tus-js-client": "4.3.1",
|
|
62
61
|
"valibot": "1.2.0"
|
|
63
62
|
},
|
|
64
63
|
"devDependencies": {
|
|
65
|
-
"@hey-api/
|
|
66
|
-
"@
|
|
64
|
+
"@hey-api/client-fetch": "0.13.1",
|
|
65
|
+
"@hey-api/openapi-ts": "0.94.2",
|
|
66
|
+
"@iconify-json/lucide": "1.2.98",
|
|
67
67
|
"@nuxt/devtools": "3.2.3",
|
|
68
68
|
"@nuxt/test-utils": "4.0.0",
|
|
69
69
|
"@nuxtjs/plausible": "3.0.2",
|
|
@@ -71,23 +71,23 @@
|
|
|
71
71
|
"@playwright/test": "1.58.2",
|
|
72
72
|
"@tailwindcss/typography": "0.5.19",
|
|
73
73
|
"@tailwindcss/vite": "4.2.1",
|
|
74
|
-
"@types/node": "25.
|
|
74
|
+
"@types/node": "25.5.0",
|
|
75
75
|
"@types/qrcode": "1.5.6",
|
|
76
|
-
"@vitejs/plugin-vue": "6.0.
|
|
76
|
+
"@vitejs/plugin-vue": "6.0.5",
|
|
77
77
|
"@vue/test-utils": "2.4.6",
|
|
78
78
|
"dayjs-nuxt": "2.1.11",
|
|
79
|
-
"happy-dom": "20.8.
|
|
80
|
-
"jsdom": "
|
|
81
|
-
"lint-staged": "16.
|
|
79
|
+
"happy-dom": "20.8.4",
|
|
80
|
+
"jsdom": "29.0.0",
|
|
81
|
+
"lint-staged": "16.4.0",
|
|
82
82
|
"mongodb": "7.1.0",
|
|
83
|
-
"nuxt": "4.
|
|
83
|
+
"nuxt": "4.4.2",
|
|
84
84
|
"oxfmt": "latest",
|
|
85
85
|
"oxlint": "latest",
|
|
86
86
|
"rimraf": "6.1.3",
|
|
87
87
|
"simple-git-hooks": "2.13.1",
|
|
88
88
|
"tailwindcss": "4.2.1",
|
|
89
89
|
"typescript": "5.9.3",
|
|
90
|
-
"vitest": "4.0
|
|
90
|
+
"vitest": "4.1.0"
|
|
91
91
|
},
|
|
92
92
|
"simple-git-hooks": {
|
|
93
93
|
"pre-commit": "npx lint-staged",
|
|
@@ -116,13 +116,14 @@
|
|
|
116
116
|
],
|
|
117
117
|
"overrides": {
|
|
118
118
|
"@hono/node-server@<1.19.10": ">=1.19.10",
|
|
119
|
-
"
|
|
119
|
+
"devalue@<=5.6.3": ">=5.6.4",
|
|
120
|
+
"hono@<4.12.7": ">=4.12.7",
|
|
120
121
|
"lodash@>=4.0.0 <=4.17.22": ">=4.17.23",
|
|
121
122
|
"minimatch@>=9.0.0 <9.0.7": ">=9.0.7",
|
|
122
123
|
"rollup@>=4.0.0 <4.59.0": ">=4.59.0",
|
|
123
124
|
"serialize-javascript@<=7.0.2": ">=7.0.3",
|
|
124
|
-
"
|
|
125
|
-
"
|
|
125
|
+
"tar@<=7.5.10": ">=7.5.11",
|
|
126
|
+
"unhead@<=2.1.10": ">=2.1.11"
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
129
|
}
|