summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/loud-emus-look.md5
-rw-r--r--packages/astro/src/core/build/index.ts4
-rw-r--r--packages/astro/src/core/build/static-build.ts28
-rw-r--r--packages/astro/test/custom-assets-name.test.js16
-rw-r--r--packages/astro/test/fixtures/custom-assets-name/astro.config.mjs4
-rw-r--r--packages/astro/test/fixtures/custom-assets-name/src/images/penguin1.jpgbin11621 -> 0 bytes
-rw-r--r--packages/astro/test/fixtures/custom-assets-name/src/pages/index.astro2
7 files changed, 29 insertions, 30 deletions
diff --git a/.changeset/loud-emus-look.md b/.changeset/loud-emus-look.md
new file mode 100644
index 000000000..ec07dec9c
--- /dev/null
+++ b/.changeset/loud-emus-look.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Remove all assets created from the server build
diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts
index bcc7fb96d..298857516 100644
--- a/packages/astro/src/core/build/index.ts
+++ b/packages/astro/src/core/build/index.ts
@@ -205,7 +205,7 @@ class AstroBuilder {
key: keyPromise,
};
- const { internals, ssrOutputChunkNames, ssrOutputAssetNames, contentFileNames } =
+ const { internals, ssrOutputChunkNames, contentFileNames } =
await viteBuild(opts);
const hasServerIslands = this.settings.serverIslandNameMap.size > 0;
@@ -214,7 +214,7 @@ class AstroBuilder {
throw new AstroError(AstroErrorData.NoAdapterInstalledServerIslands);
}
- await staticBuild(opts, internals, ssrOutputChunkNames, ssrOutputAssetNames, contentFileNames);
+ await staticBuild(opts, internals, ssrOutputChunkNames, contentFileNames);
// Write any additionally generated assets to disk.
this.timer.assetsStart = performance.now();
diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts
index 242822613..5a86992b2 100644
--- a/packages/astro/src/core/build/static-build.ts
+++ b/packages/astro/src/core/build/static-build.ts
@@ -104,26 +104,21 @@ export async function viteBuild(opts: StaticBuildOptions) {
// For static builds, the SSR output won't be needed anymore after page generation.
// We keep track of the names here so we only remove these specific files when finished.
const ssrOutputChunkNames: string[] = [];
- const ssrOutputAssetNames: string[] = [];
for (const output of ssrOutputs) {
for (const chunk of output.output) {
if (chunk.type === 'chunk') {
ssrOutputChunkNames.push(chunk.fileName);
}
- if (chunk.type === 'asset') {
- ssrOutputAssetNames.push(chunk.fileName);
- }
}
}
- return { internals, ssrOutputChunkNames, ssrOutputAssetNames, contentFileNames };
+ return { internals, ssrOutputChunkNames, contentFileNames };
}
export async function staticBuild(
opts: StaticBuildOptions,
internals: BuildInternals,
ssrOutputChunkNames: string[],
- ssrOutputAssetNames: string[],
contentFileNames?: string[],
) {
const { settings } = opts;
@@ -136,7 +131,7 @@ export async function staticBuild(
settings.timer.start('Server generate');
await generatePages(opts, internals);
await cleanStaticOutput(opts, internals);
- await ssrMoveAssets(opts, ssrOutputAssetNames);
+ await ssrMoveAssets(opts);
settings.timer.end('Server generate');
}
}
@@ -417,21 +412,28 @@ export async function copyFiles(fromFolder: URL, toFolder: URL, includeDotfiles
);
}
-async function ssrMoveAssets(opts: StaticBuildOptions, ssrOutputAssetNames: string[]) {
+async function ssrMoveAssets(opts: StaticBuildOptions) {
opts.logger.info('build', 'Rearranging server assets...');
const serverRoot =
opts.settings.buildOutput === 'static'
? opts.settings.config.build.client
: opts.settings.config.build.server;
const clientRoot = opts.settings.config.build.client;
- if (ssrOutputAssetNames.length > 0) {
+ const assets = opts.settings.config.build.assets;
+ const serverAssets = new URL(`./${assets}/`, appendForwardSlash(serverRoot.toString()));
+ const clientAssets = new URL(`./${assets}/`, appendForwardSlash(clientRoot.toString()));
+ const files = await glob(`**/*`, {
+ cwd: fileURLToPath(serverAssets),
+ });
+
+ if (files.length > 0) {
await Promise.all(
- ssrOutputAssetNames.map(async function moveAsset(filename) {
- const currentUrl = new URL(filename, appendForwardSlash(serverRoot.toString()));
- const clientUrl = new URL(filename, appendForwardSlash(clientRoot.toString()));
+ files.map(async function moveAsset(filename) {
+ const currentUrl = new URL(filename, appendForwardSlash(serverAssets.toString()));
+ const clientUrl = new URL(filename, appendForwardSlash(clientAssets.toString()));
const dir = new URL(path.parse(clientUrl.href).dir);
// It can't find this file because the user defines a custom path
- // that includes the folder paths in `assetFileNames`
+ // that includes the folder paths in `assetFileNames
if (!fs.existsSync(dir)) await fs.promises.mkdir(dir, { recursive: true });
return fs.promises.rename(currentUrl, clientUrl);
}),
diff --git a/packages/astro/test/custom-assets-name.test.js b/packages/astro/test/custom-assets-name.test.js
index 67fef1551..63cd3eb17 100644
--- a/packages/astro/test/custom-assets-name.test.js
+++ b/packages/astro/test/custom-assets-name.test.js
@@ -2,7 +2,7 @@ import assert from 'node:assert/strict';
import { before, describe, it } from 'node:test';
import { loadFixture } from './test-utils.js';
-describe('custom assets name function', () => {
+describe('custom the assets name function', () => {
/** @type {import('./test-utils').Fixture} */
let fixture;
@@ -14,15 +14,9 @@ describe('custom assets name function', () => {
await fixture.build();
});
- it('should load CSS file from custom client assets path', async () => {
- const files = await fixture.readdir('/client/assets/css');
- const cssFile = files.find((file) => file === 'a.css');
- assert.ok(cssFile, 'Expected CSS file to exist at client/assets/css/a.css');
- });
-
- it('should load image file from custom client assets path', async () => {
- const files = await fixture.readdir('/client/imgAssets');
- const imgFile = files.find((file) => file === 'penguin1.jpg');
- assert.ok(imgFile, 'Expected image file to exist at client/imgAssets/penguin1.jpg');
+ it('It cant find this file cause the node throws an error if the users custom a path that includes the folder path', async () => {
+ const csslength = await fixture.readFile('client/assets/css/a.css');
+ /** @type {Set<string>} */
+ assert.equal(!!csslength, true);
});
});
diff --git a/packages/astro/test/fixtures/custom-assets-name/astro.config.mjs b/packages/astro/test/fixtures/custom-assets-name/astro.config.mjs
index 866a05044..cfcddecc5 100644
--- a/packages/astro/test/fixtures/custom-assets-name/astro.config.mjs
+++ b/packages/astro/test/fixtures/custom-assets-name/astro.config.mjs
@@ -18,14 +18,14 @@ export default defineConfig({
const { ext, dir, base } = path.parse(option.name);
if (ext == ".css") return path.join(dir, "assets/css", 'a.css');
- return "imgAssets/[name].[ext]";
+ return "assets/img/[name].[ext]";
}
}
}
}
},
build: {
- assets: 'assetsDir'
+ assets: 'assets'
},
output: "server",
adapter: node({
diff --git a/packages/astro/test/fixtures/custom-assets-name/src/images/penguin1.jpg b/packages/astro/test/fixtures/custom-assets-name/src/images/penguin1.jpg
deleted file mode 100644
index 1a8986ac5..000000000
--- a/packages/astro/test/fixtures/custom-assets-name/src/images/penguin1.jpg
+++ /dev/null
Binary files differ
diff --git a/packages/astro/test/fixtures/custom-assets-name/src/pages/index.astro b/packages/astro/test/fixtures/custom-assets-name/src/pages/index.astro
index 507d236d9..250233e1e 100644
--- a/packages/astro/test/fixtures/custom-assets-name/src/pages/index.astro
+++ b/packages/astro/test/fixtures/custom-assets-name/src/pages/index.astro
@@ -1,6 +1,5 @@
---
const title = 'My App';
-import p1Url from '../images/penguin1.jpg';
---
<html>
@@ -9,7 +8,6 @@ import p1Url from '../images/penguin1.jpg';
</head>
<body>
<h1>{title}</h1>
- <img src={p1Url.src}/>
</body>
</html>