create-avalon 0.1.21 → 0.1.22
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/dist/cli.js +102 -109
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1226,120 +1226,113 @@ function generateNetlifyToml(config) {
|
|
|
1226
1226
|
[build.environment]
|
|
1227
1227
|
NODE_VERSION = "22"
|
|
1228
1228
|
BUN_VERSION = "latest"
|
|
1229
|
-
NITRO_PRESET = "
|
|
1229
|
+
NITRO_PRESET = "netlify"
|
|
1230
1230
|
|
|
1231
|
-
[
|
|
1232
|
-
|
|
1233
|
-
|
|
1231
|
+
[functions]
|
|
1232
|
+
directory = ".netlify/functions-internal"
|
|
1233
|
+
node_bundler = "none"
|
|
1234
1234
|
|
|
1235
|
-
#
|
|
1236
|
-
#
|
|
1237
|
-
#
|
|
1235
|
+
# SSR catch-all — Netlify checks for a matching static/prerendered file
|
|
1236
|
+
# first (force=false is the default in netlify.toml). Only requests with
|
|
1237
|
+
# no static file hit the server function.
|
|
1238
|
+
[[redirects]]
|
|
1239
|
+
from = "/*"
|
|
1240
|
+
to = "/.netlify/functions/server"
|
|
1241
|
+
status = 200
|
|
1238
1242
|
`;
|
|
1239
1243
|
}
|
|
1240
1244
|
function generateBuildMjs() {
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
` setTimeout(finish, 3_000);`,
|
|
1333
|
-
` }`,
|
|
1334
|
-
`}, 1_000);`,
|
|
1335
|
-
``,
|
|
1336
|
-
`const absoluteTimeout = setTimeout(() => {`,
|
|
1337
|
-
` console.error('[build] Timeout — killing build');`,
|
|
1338
|
-
` finish();`,
|
|
1339
|
-
`}, 240_000);`
|
|
1340
|
-
];
|
|
1341
|
-
return lines.join(`
|
|
1342
|
-
`) + `
|
|
1245
|
+
return `/**
|
|
1246
|
+
* Netlify build wrapper.
|
|
1247
|
+
*
|
|
1248
|
+
* Vite/Nitro leaves open handles after the build completes, preventing
|
|
1249
|
+
* the Node process from exiting. This wrapper detects when the build
|
|
1250
|
+
* output is ready, kills the entire process group, then runs post-build.
|
|
1251
|
+
*/
|
|
1252
|
+
|
|
1253
|
+
import { spawn, execSync } from 'node:child_process';
|
|
1254
|
+
import { existsSync, rmSync } from 'node:fs';
|
|
1255
|
+
import { join } from 'node:path';
|
|
1256
|
+
|
|
1257
|
+
const CWD = process.cwd();
|
|
1258
|
+
const NITRO_JSON = join(CWD, '.netlify', 'functions-internal', 'nitro.json');
|
|
1259
|
+
const SERVER_MJS = join(CWD, '.netlify', 'functions-internal', 'server', 'server.mjs');
|
|
1260
|
+
const OUTPUT_SSR = join(CWD, '.output', 'server', '_ssr', 'ssr.mjs');
|
|
1261
|
+
|
|
1262
|
+
console.log('[build] Starting vite build...');
|
|
1263
|
+
|
|
1264
|
+
for (const dir of ['.netlify', '.output', 'netlify']) {
|
|
1265
|
+
const full = join(CWD, dir);
|
|
1266
|
+
if (existsSync(full)) {
|
|
1267
|
+
rmSync(full, { recursive: true, force: true });
|
|
1268
|
+
console.log(\`[build] Cleaned stale \${dir}/\`);
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
const child = spawn('bunx', ['--bun', 'vite', 'build'], {
|
|
1273
|
+
cwd: CWD,
|
|
1274
|
+
stdio: 'inherit',
|
|
1275
|
+
detached: true,
|
|
1276
|
+
});
|
|
1277
|
+
|
|
1278
|
+
const childPid = child.pid;
|
|
1279
|
+
let done = false;
|
|
1280
|
+
|
|
1281
|
+
function killTree() {
|
|
1282
|
+
try { process.kill(-childPid, 'SIGKILL'); } catch {}
|
|
1283
|
+
try { child.kill('SIGKILL'); } catch {}
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
function finish() {
|
|
1287
|
+
if (done) return;
|
|
1288
|
+
done = true;
|
|
1289
|
+
clearInterval(poll);
|
|
1290
|
+
clearTimeout(absoluteTimeout);
|
|
1291
|
+
killTree();
|
|
1292
|
+
|
|
1293
|
+
setTimeout(() => {
|
|
1294
|
+
console.log('[build] Running post-build...');
|
|
1295
|
+
try {
|
|
1296
|
+
execSync('node post-build.mjs', { cwd: CWD, stdio: 'inherit', timeout: 120_000 });
|
|
1297
|
+
} catch (err) {
|
|
1298
|
+
console.error('[build] post-build warning:', err.message);
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
const V1_SERVER = join(CWD, '.netlify', 'v1', 'functions', 'server', 'server.mjs');
|
|
1302
|
+
if (existsSync(V1_SERVER)) console.log('[build] ✅ Server function found (v1 API)');
|
|
1303
|
+
else if (existsSync(SERVER_MJS)) console.log('[build] ✅ Server function found (legacy)');
|
|
1304
|
+
else if (existsSync(OUTPUT_SSR)) console.log('[build] ✅ SSR bundle found');
|
|
1305
|
+
else console.error('[build] ❌ No server output found');
|
|
1306
|
+
|
|
1307
|
+
console.log('[build] ✅ Complete');
|
|
1308
|
+
process.exit(0);
|
|
1309
|
+
}, 500);
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
child.on('exit', (code) => {
|
|
1313
|
+
console.log(\`[build] vite build exited with code \${code}\`);
|
|
1314
|
+
finish();
|
|
1315
|
+
});
|
|
1316
|
+
|
|
1317
|
+
child.on('error', (err) => {
|
|
1318
|
+
console.error('[build] spawn error:', err);
|
|
1319
|
+
process.exit(1);
|
|
1320
|
+
});
|
|
1321
|
+
|
|
1322
|
+
const poll = setInterval(() => {
|
|
1323
|
+
const netlifyReady = existsSync(NITRO_JSON) && existsSync(SERVER_MJS);
|
|
1324
|
+
const nodeServerReady = existsSync(OUTPUT_SSR);
|
|
1325
|
+
if (netlifyReady || nodeServerReady) {
|
|
1326
|
+
console.log(\`[build] Output detected (\${netlifyReady ? 'netlify' : 'node-server'}), waiting 3s for final writes...\`);
|
|
1327
|
+
clearInterval(poll);
|
|
1328
|
+
setTimeout(finish, 3_000);
|
|
1329
|
+
}
|
|
1330
|
+
}, 1_000);
|
|
1331
|
+
|
|
1332
|
+
const absoluteTimeout = setTimeout(() => {
|
|
1333
|
+
console.error('[build] Timeout — killing build');
|
|
1334
|
+
finish();
|
|
1335
|
+
}, 240_000);
|
|
1343
1336
|
`;
|
|
1344
1337
|
}
|
|
1345
1338
|
|