Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(integrations): astro:build:done dir now matches SSR client output #3008

Merged
merged 3 commits into from
Apr 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/empty-pens-talk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'astro': patch
'@astrojs/partytown': patch
'@astrojs/vercel': patch
---

Updated integrations' `astro:build:done` hook: now it matches the client dist when using SSR
1 change: 1 addition & 0 deletions packages/astro/src/core/build/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ class AstroBuilder {
await viteServer.close();
await runHookBuildDone({
config: this.config,
buildConfig,
pages: pageNames,
routes: Object.values(allPages).map((pd) => pd.route),
});
Expand Down
7 changes: 6 additions & 1 deletion packages/astro/src/integrations/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { AstroConfig, AstroRenderer, BuildConfig, RouteData } from '../@types/as
import { mergeConfig } from '../core/config.js';
import ssgAdapter from '../adapter-ssg/index.js';
import type { ViteConfigWithSSR } from '../core/create-vite.js';
import { isBuildingToSSR } from '../core/util.js';

export async function runHookConfigSetup({
config: _config,
Expand Down Expand Up @@ -136,18 +137,22 @@ export async function runHookBuildSetup({

export async function runHookBuildDone({
config,
buildConfig,
pages,
routes,
}: {
config: AstroConfig;
buildConfig: BuildConfig;
pages: string[];
routes: RouteData[];
}) {
const dir = isBuildingToSSR(config) ? buildConfig.client : config.outDir;

for (const integration of config.integrations) {
if (integration.hooks['astro:build:done']) {
await integration.hooks['astro:build:done']({
pages: pages.map((p) => ({ pathname: p })),
dir: config.outDir,
dir,
routes,
});
}
Expand Down
4 changes: 2 additions & 2 deletions packages/integrations/partytown/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ export default function createPlugin(): AstroIntegration {
})
);
},
'astro:build:done': async () => {
await copyLibFiles(fileURLToPath(new URL('~partytown', config.outDir)), {
'astro:build:done': async ({ dir }) => {
await copyLibFiles(fileURLToPath(new URL('~partytown', dir)), {
debugDir: false,
});
},
Expand Down
8 changes: 4 additions & 4 deletions packages/integrations/vercel/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default function vercel(): AstroIntegration {
buildConfig.client = new URL('./static/', _config.outDir);
buildConfig.server = new URL('./server/tmp/', _config.outDir);
},
'astro:build:done': async ({ dir, routes }) => {
'astro:build:done': async ({ routes }) => {
/*
Why do we need two folders? Why don't we just generate all inside `server/pages/`?
When the app builds, it throws some metadata inside a `chunks/` folder.
Expand All @@ -50,8 +50,8 @@ export default function vercel(): AstroIntegration {
need to bundle as much as possible in one file. Hence, the following code
*/

const tmpDir = new URL('./server/tmp/', dir);
const bundleDir = new URL('./server/pages/', dir);
const tmpDir = new URL('./server/tmp/', _config.outDir);
const bundleDir = new URL('./server/pages/', _config.outDir);

await fs.mkdir(bundleDir, { recursive: true });

Expand All @@ -69,7 +69,7 @@ export default function vercel(): AstroIntegration {

// Routes Manifest
// https://vercel.com/docs/file-system-api#configuration/routes
await writeJson(new URL(`./routes-manifest.json`, dir), {
await writeJson(new URL(`./routes-manifest.json`, _config.outDir), {
version: 3,
basePath: '/',
pages404: false,
Expand Down