Skip to content

Commit 8e86f8a

Browse files
committed
feat: generate manifest
1 parent 311079a commit 8e86f8a

File tree

4 files changed

+42
-1
lines changed

4 files changed

+42
-1
lines changed

lib/presets/custom/astro/deliver/prebuild.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import { rm, readFile } from 'fs/promises';
2-
import { exec, getPackageManager, copyDirectory } from '#utils';
2+
import {
3+
exec,
4+
getPackageManager,
5+
copyDirectory,
6+
generateManifest,
7+
} from '#utils';
38

49
const packageManager = await getPackageManager();
510

@@ -25,6 +30,7 @@ async function prebuild() {
2530

2631
// move files to vulcan default path
2732
copyDirectory(outDir, newOutDir);
33+
generateManifest('*', '*', 'deliver');
2834
rm(outDir, { recursive: true, force: true });
2935
}
3036

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { join } from 'path';
2+
import { writeFileSync } from 'fs';
3+
import { Utils } from '#namespaces';
4+
5+
/**
6+
* @function
7+
* @memberof Utils
8+
* @description Generates manifest object and writes it to a file.
9+
* @param {string} route - the route to be used, or all represented by '*'
10+
* @param {string} filePath - the file path for the route, or all represented by '*'
11+
* @param {string} mode - The mode of the operation, either 'compute', 'deliver', or both represented by '*'.
12+
*/
13+
function generateManifest(route, filePath, mode) {
14+
const manifestPath = join(process.cwd(), '.edge/manifest.json');
15+
const manifest = {};
16+
17+
// Check the mode and add the route to the manifest appropriately.
18+
if (mode === 'compute' || mode === 'deliver' || mode === '*') {
19+
manifest[mode] = {};
20+
manifest[mode][route] = filePath;
21+
} else {
22+
throw new Error('Invalid mode. Must be "compute", "deliver", or "*".');
23+
}
24+
25+
// Write the new manifest back to the file.
26+
writeFileSync(manifestPath, JSON.stringify(manifest, null, 2), 'utf8');
27+
console.log(`New manifest created with ${mode} information.`);
28+
}
29+
30+
export default generateManifest;

lib/utils/generateManifest/index.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import generateManifest from './generateManifest.utils.js';
2+
3+
export default generateManifest;

lib/utils/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import generateWebpackBanner from './generateWebpackBanner/index.js';
1818
import relocateImportsAndRequires from './relocateImportsAndRequires/index.js';
1919
import getExportedFunctionBody from './getExportedFunctionBody/index.js';
2020
import injectFilesInMem from './injectFilesInMem/index.js';
21+
import generateManifest from './generateManifest/index.js';
2122

2223
export {
2324
copyDirectory,
@@ -40,4 +41,5 @@ export {
4041
generateWebpackBanner,
4142
relocateImportsAndRequires,
4243
injectFilesInMem,
44+
generateManifest,
4345
};

0 commit comments

Comments
 (0)