create-oven 0.2.0 → 0.2.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/index.js +36 -15
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -103,13 +103,19 @@ async function main() {
|
|
|
103
103
|
|
|
104
104
|
${c.yellow}Options:${c.reset}
|
|
105
105
|
--typescript, --ts Use TypeScript (default: true)
|
|
106
|
+
--no-typescript Don't use TypeScript
|
|
106
107
|
--tailwind Add Tailwind CSS
|
|
108
|
+
--no-tailwind Don't add Tailwind CSS
|
|
107
109
|
--eslint Add ESLint
|
|
110
|
+
--no-eslint Don't add ESLint
|
|
108
111
|
--src-dir Use src/ directory
|
|
112
|
+
--no-src-dir Don't use src/ directory (default)
|
|
109
113
|
--app Use App Router (default: true)
|
|
110
114
|
--import-alias <alias> Set import alias (default: @/*)
|
|
111
115
|
--use-bun Use Bun for installing dependencies
|
|
112
116
|
--use-npm Use npm for installing dependencies
|
|
117
|
+
--no-install Skip installing dependencies
|
|
118
|
+
-y, --yes Use defaults without prompts
|
|
113
119
|
-h, --help Show this help message
|
|
114
120
|
-v, --version Show version
|
|
115
121
|
|
|
@@ -125,14 +131,14 @@ async function main() {
|
|
|
125
131
|
|
|
126
132
|
// Show version
|
|
127
133
|
if (args.includes('--version') || args.includes('-v')) {
|
|
128
|
-
console.log('create-oven v0.2.
|
|
134
|
+
console.log('create-oven v0.2.1');
|
|
129
135
|
process.exit(0);
|
|
130
136
|
}
|
|
131
137
|
|
|
132
138
|
console.log(`
|
|
133
139
|
${c.bold}${c.cyan} ╔═══════════════════════════════════════╗
|
|
134
140
|
║ ║
|
|
135
|
-
║ 🔥 Create Oven App v0.2.
|
|
141
|
+
║ 🔥 Create Oven App v0.2.1 ║
|
|
136
142
|
║ ║
|
|
137
143
|
║ Next.js-style framework for Bun ║
|
|
138
144
|
║ ║
|
|
@@ -160,28 +166,41 @@ ${c.bold}${c.cyan} ╔═══════════════════
|
|
|
160
166
|
|
|
161
167
|
// Parse CLI flags
|
|
162
168
|
const hasFlag = (flag) => args.includes(flag);
|
|
169
|
+
const skipPrompts = hasFlag('--yes') || hasFlag('-y');
|
|
170
|
+
const noInstall = hasFlag('--no-install');
|
|
163
171
|
|
|
164
172
|
// Interactive prompts (like create-next-app)
|
|
165
173
|
console.log();
|
|
166
174
|
|
|
175
|
+
// If --yes flag, use defaults. If specific flag, use that value. Otherwise ask.
|
|
167
176
|
const useTypescript = hasFlag('--typescript') || hasFlag('--ts') ||
|
|
177
|
+
hasFlag('--no-typescript') ? !hasFlag('--no-typescript') :
|
|
178
|
+
skipPrompts ? true :
|
|
168
179
|
await askYesNo(rl, 'Would you like to use TypeScript?', true);
|
|
169
180
|
|
|
170
181
|
const useEslint = hasFlag('--eslint') ||
|
|
182
|
+
hasFlag('--no-eslint') ? !hasFlag('--no-eslint') :
|
|
183
|
+
skipPrompts ? true :
|
|
171
184
|
await askYesNo(rl, 'Would you like to use ESLint?', true);
|
|
172
185
|
|
|
173
186
|
const useTailwind = hasFlag('--tailwind') ||
|
|
187
|
+
hasFlag('--no-tailwind') ? !hasFlag('--no-tailwind') :
|
|
188
|
+
skipPrompts ? true :
|
|
174
189
|
await askYesNo(rl, 'Would you like to use Tailwind CSS?', true);
|
|
175
190
|
|
|
176
191
|
const useSrcDir = hasFlag('--src-dir') ||
|
|
192
|
+
hasFlag('--no-src-dir') ? !hasFlag('--no-src-dir') :
|
|
193
|
+
skipPrompts ? false :
|
|
177
194
|
await askYesNo(rl, 'Would you like to use `src/` directory?', false);
|
|
178
195
|
|
|
179
196
|
const useAppRouter = hasFlag('--app') ||
|
|
197
|
+
hasFlag('--no-app') ? !hasFlag('--no-app') :
|
|
198
|
+
skipPrompts ? true :
|
|
180
199
|
await askYesNo(rl, 'Would you like to use App Router? (recommended)', true);
|
|
181
200
|
|
|
182
201
|
const importAliasArg = args.find((arg, i) => args[i - 1] === '--import-alias');
|
|
183
202
|
const importAlias = importAliasArg ||
|
|
184
|
-
await askText(rl, 'What import alias would you like configured?', '@/*');
|
|
203
|
+
(skipPrompts ? '@/*' : await askText(rl, 'What import alias would you like configured?', '@/*'));
|
|
185
204
|
|
|
186
205
|
rl.close();
|
|
187
206
|
|
|
@@ -826,18 +845,20 @@ vercel --prod
|
|
|
826
845
|
|
|
827
846
|
spin3.stop('Created app files');
|
|
828
847
|
|
|
829
|
-
// Install dependencies
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
848
|
+
// Install dependencies (unless --no-install)
|
|
849
|
+
if (!noInstall) {
|
|
850
|
+
const packageManager = hasFlag('--use-npm') ? 'npm' : 'bun';
|
|
851
|
+
const spin4 = spinner(`Installing dependencies with ${packageManager}...`);
|
|
852
|
+
|
|
853
|
+
try {
|
|
854
|
+
execSync(`${packageManager} install`, {
|
|
855
|
+
cwd: projectDir,
|
|
856
|
+
stdio: 'pipe',
|
|
857
|
+
});
|
|
858
|
+
spin4.stop(`Installed dependencies with ${packageManager}`);
|
|
859
|
+
} catch (e) {
|
|
860
|
+
spin4.fail(`Failed to install dependencies. Run '${packageManager} install' manually.`);
|
|
861
|
+
}
|
|
841
862
|
}
|
|
842
863
|
|
|
843
864
|
// Success message
|