summaryrefslogtreecommitdiff
path: root/scripts/cmd/prebuild.js
diff options
context:
space:
mode:
authorGravatar Erika <3019731+Princesseuh@users.noreply.github.com> 2024-02-14 14:01:53 +0100
committerGravatar GitHub <noreply@github.com> 2024-02-14 14:01:53 +0100
commit6884b103c8314a43e926c6acdf947cbf812a21f4 (patch)
treeac24c620009a739f398a8f96adfb24806f278348 /scripts/cmd/prebuild.js
parentf9aebe74a1d0a46c4786829fb33c8750c1f0a2eb (diff)
downloadastro-6884b103c8314a43e926c6acdf947cbf812a21f4.tar.gz
astro-6884b103c8314a43e926c6acdf947cbf812a21f4.tar.zst
astro-6884b103c8314a43e926c6acdf947cbf812a21f4.zip
feat(audits): Add initial perf audits (#10015)
* feat(audits): Add initial perf audits * feat(audits): Setup dev astro-island * fix(audits): Don't take scroll into account when getting an element's position * nit: lint * Fix tests * chore: changeset * maybe: Move this.hydrator outside the perf check * Update packages/astro/e2e/dev-toolbar.test.js Co-authored-by: Bjorn Lu <bjornlu.dev@gmail.com> * address feedback * address feedback --------- Co-authored-by: Bjorn Lu <bjornlu.dev@gmail.com>
Diffstat (limited to '')
-rw-r--r--scripts/cmd/prebuild.js42
1 files changed, 32 insertions, 10 deletions
diff --git a/scripts/cmd/prebuild.js b/scripts/cmd/prebuild.js
index 3e206f25e..de3a36910 100644
--- a/scripts/cmd/prebuild.js
+++ b/scripts/cmd/prebuild.js
@@ -29,12 +29,12 @@ export default async function prebuild(...args) {
))
);
- function getPrebuildURL(entryfilepath) {
+ function getPrebuildURL(entryfilepath, dev = false) {
const entryURL = pathToFileURL(entryfilepath);
const basename = path.basename(entryfilepath);
const ext = path.extname(entryfilepath);
const name = basename.slice(0, basename.indexOf(ext));
- const outname = `${name}.prebuilt${ext}`;
+ const outname = dev ? `${name}.prebuilt-dev${ext}` : `${name}.prebuilt${ext}`;
const outURL = new URL('./' + outname, entryURL);
return outURL;
}
@@ -61,7 +61,8 @@ export default async function prebuild(...args) {
}
tscode = newTscode;
}
- const esbuildresult = await esbuild.build({
+
+ const esbuildOptions = {
stdin: {
contents: tscode,
resolveDir: path.dirname(filepath),
@@ -73,19 +74,40 @@ export default async function prebuild(...args) {
minify,
bundle: true,
write: false,
- });
- const code = esbuildresult.outputFiles[0].text.trim();
- const rootURL = new URL('../../', import.meta.url);
- const rel = path.relative(fileURLToPath(rootURL), filepath);
- const mod = `/**
+ };
+
+ const results = await Promise.all(
+ [
+ {
+ build: await esbuild.build(esbuildOptions),
+ dev: false,
+ },
+ filepath.includes('astro-island')
+ ? {
+ build: await esbuild.build({
+ ...esbuildOptions,
+ define: { 'process.env.NODE_ENV': '"development"' },
+ }),
+ dev: true,
+ }
+ : undefined,
+ ].filter((entry) => entry)
+ );
+
+ for (const result of results) {
+ const code = result.build.outputFiles[0].text.trim();
+ const rootURL = new URL('../../', import.meta.url);
+ const rel = path.relative(fileURLToPath(rootURL), filepath);
+ const mod = `/**
* This file is prebuilt from ${rel}
* Do not edit this directly, but instead edit that file and rerun the prebuild
* to generate this file.
*/
export default \`${escapeTemplateLiterals(code)}\`;`;
- const url = getPrebuildURL(filepath);
- await fs.promises.writeFile(url, mod, 'utf-8');
+ const url = getPrebuildURL(filepath, result.dev);
+ await fs.promises.writeFile(url, mod, 'utf-8');
+ }
}
await Promise.all(entryPoints.map(prebuildFile));