create-lve 0.2.6 → 0.2.8
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/index.js +60 -29
- package/package.json +3 -2
- package/template-react/.vscode/settings.json +0 -16
package/index.js
CHANGED
|
@@ -120,25 +120,29 @@ async function main() {
|
|
|
120
120
|
message: '选择框架',
|
|
121
121
|
options: [
|
|
122
122
|
{ value: 'react', label: 'React 19', hint: 'VitePlus + Compiler' },
|
|
123
|
+
{ value: 'next', label: 'Next.js 16', hint: 'Oxc + Server Components (Fullstack)' },
|
|
123
124
|
{ value: 'vue', label: 'Vue 3', hint: 'VitePlus + Optimized' },
|
|
124
125
|
],
|
|
125
126
|
}),
|
|
126
|
-
cssEngine: () =>
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
{
|
|
131
|
-
value: 'unocss',
|
|
132
|
-
label: 'UnoCSS',
|
|
133
|
-
hint: '⚡️ 战机级性能:动态代码注入,实现源码级‘无感’混淆',
|
|
134
|
-
},
|
|
127
|
+
cssEngine: ({ results }) =>
|
|
128
|
+
results.framework === 'next' ?
|
|
129
|
+
undefined :
|
|
130
|
+
p.select(
|
|
135
131
|
{
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
132
|
+
message: '选择 CSS 引擎',
|
|
133
|
+
options: [
|
|
134
|
+
{
|
|
135
|
+
value: 'tailwind',
|
|
136
|
+
label: 'Tailwind v4',
|
|
137
|
+
hint: '🛡️ 装甲级稳定:v4 引擎重构,完美适配所有主流 UI 库',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
value: 'unocss',
|
|
141
|
+
label: 'UnoCSS',
|
|
142
|
+
hint: '⚡️ 战机级性能:动态代码注入,实现源码级‘无感’混淆',
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
}),
|
|
142
146
|
install: () =>
|
|
143
147
|
p.confirm({
|
|
144
148
|
message: '是否现在自动安装依赖?',
|
|
@@ -160,17 +164,19 @@ async function main() {
|
|
|
160
164
|
const isUno = project.cssEngine === 'unocss'
|
|
161
165
|
const s = p.spinner()
|
|
162
166
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
167
|
+
const checkVp = () => {
|
|
168
|
+
try {
|
|
169
|
+
execSync('vp --version', { stdio: 'ignore' })
|
|
170
|
+
} catch {
|
|
171
|
+
p.log.error(pc.red('未检测到 VitePlus (vp) 环境'))
|
|
172
|
+
p.note(
|
|
173
|
+
pc.white(
|
|
174
|
+
`请先安装 vp 工具链:\n${pc.cyan('npm install -g @voidzero-dev/vite-plus')}`
|
|
175
|
+
),
|
|
176
|
+
'环境缺失',
|
|
177
|
+
)
|
|
178
|
+
process.exit(1)
|
|
179
|
+
}
|
|
174
180
|
}
|
|
175
181
|
|
|
176
182
|
s.start('🛠️ 正在按需装配架构...')
|
|
@@ -183,7 +189,7 @@ async function main() {
|
|
|
183
189
|
|
|
184
190
|
try {
|
|
185
191
|
execSync('git init', { cwd: targetDir, stdio: 'ignore' })
|
|
186
|
-
} catch {}
|
|
192
|
+
} catch { }
|
|
187
193
|
|
|
188
194
|
const oldGit = path.join(targetDir, '_gitignore')
|
|
189
195
|
if (fs.existsSync(oldGit)) await fs.move(oldGit, path.join(targetDir, '.gitignore'))
|
|
@@ -192,6 +198,31 @@ async function main() {
|
|
|
192
198
|
const pkg = await fs.readJson(pkgPath)
|
|
193
199
|
pkg.name = path.basename(targetDir)
|
|
194
200
|
|
|
201
|
+
// ================= Next.js 分支逻辑 =================
|
|
202
|
+
if (project.framework === 'next') {
|
|
203
|
+
await fs.writeJson(pkgPath, pkg, { spaces: 2 })
|
|
204
|
+
|
|
205
|
+
s.message(pc.green('检测到全栈环境,正在执行 pnpm install'))
|
|
206
|
+
|
|
207
|
+
const installCmd = 'pnpm'
|
|
208
|
+
try {
|
|
209
|
+
execSync(`${installCmd} install`, { cwd: targetDir, stdio: 'ignore' })
|
|
210
|
+
|
|
211
|
+
s.message(pc.green('使用 oxfmt 优化全栈代码结构'))
|
|
212
|
+
execSync(`${installCmd} fmt`, { cwd: targetDir, stdio: 'ignore' })
|
|
213
|
+
|
|
214
|
+
s.stop(pc.green('Next.js 全栈环境装配就绪'))
|
|
215
|
+
} catch {
|
|
216
|
+
s.stop(pc.red('依赖安装失败,请进入目录后手动安装'))
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
p.note(pc.cyan(`cd ${project.path}\npnpm dev`), '快速开始')
|
|
220
|
+
p.outro(pc.magenta('✨ 极致全栈环境已就绪!'))
|
|
221
|
+
return
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
checkVp()
|
|
225
|
+
|
|
195
226
|
if (isUno) {
|
|
196
227
|
pkg.devDependencies['unocss'] = 'latest'
|
|
197
228
|
} else {
|
|
@@ -295,7 +326,7 @@ export default defineConfig({
|
|
|
295
326
|
|
|
296
327
|
try {
|
|
297
328
|
execSync('vp fmt', { cwd: targetDir, stdio: 'ignore' })
|
|
298
|
-
} catch {}
|
|
329
|
+
} catch { }
|
|
299
330
|
|
|
300
331
|
s.stop(pc.green('全套环境装配就绪'))
|
|
301
332
|
} catch {
|
|
@@ -310,7 +341,7 @@ export default defineConfig({
|
|
|
310
341
|
p.note(pc.cyan(nextSteps), '快速开始')
|
|
311
342
|
p.outro(
|
|
312
343
|
`${pc.magenta('✨ 已经为你准备好了极致的开发环境!')}\n` +
|
|
313
|
-
|
|
344
|
+
`${pc.gray(`==== ${project.framework} + ${project.cssEngine} ====`)}`,
|
|
314
345
|
)
|
|
315
346
|
} catch (err) {
|
|
316
347
|
s.stop(pc.red('手术失败'))
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-lve",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"bin": {
|
|
5
5
|
"create-lve": "index.js"
|
|
6
6
|
},
|
|
7
7
|
"files": [
|
|
8
8
|
"index.js",
|
|
9
9
|
"template-react",
|
|
10
|
-
"template-vue"
|
|
10
|
+
"template-vue",
|
|
11
|
+
"template-next"
|
|
11
12
|
],
|
|
12
13
|
"type": "module",
|
|
13
14
|
"scripts": {
|
|
@@ -37,22 +37,6 @@
|
|
|
37
37
|
"editor.defaultFormatter": "oxc.oxc-vscode"
|
|
38
38
|
},
|
|
39
39
|
|
|
40
|
-
// ==================== Next.js 专用 ====================
|
|
41
|
-
"workbench.editor.customLabels.patterns": {
|
|
42
|
-
"**/app/**/layout.{js,jsx,ts,tsx}": "${dirname}/layout",
|
|
43
|
-
"**/app/**/page.{js,jsx,ts,tsx}": "${dirname}/page",
|
|
44
|
-
"**/app/**/route.{js,jsx,ts,tsx}": "${dirname}/route",
|
|
45
|
-
"**/app/**/loading.{js,jsx,ts,tsx}": "${dirname}/loading",
|
|
46
|
-
"**/app/**/template.{js,jsx,ts,tsx}": "${dirname}/template",
|
|
47
|
-
"**/app/**/default.{js,jsx,ts,tsx}": "${dirname}/default",
|
|
48
|
-
"**/app/**/error.{js,jsx,ts,tsx}": "${dirname}/error",
|
|
49
|
-
"**/app/**/not-found.{js,jsx,ts,tsx}": "${dirname}/not-found"
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
// ==================== TypeScript(解决 Next.js TS 问题)===================
|
|
53
|
-
"typescript.tsdk": "node_modules/typescript/lib",
|
|
54
|
-
"typescript.enablePromptUseWorkspaceTsdk": true,
|
|
55
|
-
|
|
56
40
|
// ==================== Tailwind + shadcn/ui(强烈推荐)===================
|
|
57
41
|
"tailwindCSS.experimental.classRegex": [["cn\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"]],
|
|
58
42
|
"tailwindCSS.includeLanguages": {
|