mirror of
https://github.com/withastro/astro.git
synced 2024-12-16 21:46:22 -05:00
Clean sourcemaps from static output (#12749)
* Clean sourcemaps from static output * Add changeset * Update test to look at frontend sourcemaps
This commit is contained in:
parent
d891d5dff5
commit
039d022b1b
6 changed files with 40 additions and 13 deletions
5
.changeset/tame-spoons-shop.md
Normal file
5
.changeset/tame-spoons-shop.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'astro': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Clean server sourcemaps from static output
|
|
@ -205,7 +205,8 @@ class AstroBuilder {
|
||||||
key: keyPromise,
|
key: keyPromise,
|
||||||
};
|
};
|
||||||
|
|
||||||
const { internals, ssrOutputChunkNames, contentFileNames } = await viteBuild(opts);
|
const { internals, ssrOutputChunkNames } =
|
||||||
|
await viteBuild(opts);
|
||||||
|
|
||||||
const hasServerIslands = this.settings.serverIslandNameMap.size > 0;
|
const hasServerIslands = this.settings.serverIslandNameMap.size > 0;
|
||||||
// Error if there are server islands but no adapter provided.
|
// Error if there are server islands but no adapter provided.
|
||||||
|
@ -213,7 +214,7 @@ class AstroBuilder {
|
||||||
throw new AstroError(AstroErrorData.NoAdapterInstalledServerIslands);
|
throw new AstroError(AstroErrorData.NoAdapterInstalledServerIslands);
|
||||||
}
|
}
|
||||||
|
|
||||||
await staticBuild(opts, internals, ssrOutputChunkNames, contentFileNames);
|
await staticBuild(opts, internals, ssrOutputChunkNames);
|
||||||
|
|
||||||
// Write any additionally generated assets to disk.
|
// Write any additionally generated assets to disk.
|
||||||
this.timer.assetsStart = performance.now();
|
this.timer.assetsStart = performance.now();
|
||||||
|
|
|
@ -92,7 +92,6 @@ export async function viteBuild(opts: StaticBuildOptions) {
|
||||||
const ssrOutputs = viteBuildReturnToRollupOutputs(ssrOutput);
|
const ssrOutputs = viteBuildReturnToRollupOutputs(ssrOutput);
|
||||||
const clientOutputs = viteBuildReturnToRollupOutputs(clientOutput ?? []);
|
const clientOutputs = viteBuildReturnToRollupOutputs(clientOutput ?? []);
|
||||||
await runPostBuildHooks(container, ssrOutputs, clientOutputs);
|
await runPostBuildHooks(container, ssrOutputs, clientOutputs);
|
||||||
let contentFileNames: string[] | undefined = undefined;
|
|
||||||
settings.timer.end('Client build');
|
settings.timer.end('Client build');
|
||||||
|
|
||||||
// Free up memory
|
// Free up memory
|
||||||
|
@ -112,20 +111,19 @@ export async function viteBuild(opts: StaticBuildOptions) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return { internals, ssrOutputChunkNames, contentFileNames };
|
return { internals, ssrOutputChunkNames };
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function staticBuild(
|
export async function staticBuild(
|
||||||
opts: StaticBuildOptions,
|
opts: StaticBuildOptions,
|
||||||
internals: BuildInternals,
|
internals: BuildInternals,
|
||||||
ssrOutputChunkNames: string[],
|
ssrOutputChunkNames: string[],
|
||||||
contentFileNames?: string[],
|
|
||||||
) {
|
) {
|
||||||
const { settings } = opts;
|
const { settings } = opts;
|
||||||
if (settings.buildOutput === 'static') {
|
if (settings.buildOutput === 'static') {
|
||||||
settings.timer.start('Static generate');
|
settings.timer.start('Static generate');
|
||||||
await generatePages(opts, internals);
|
await generatePages(opts, internals);
|
||||||
await cleanServerOutput(opts, ssrOutputChunkNames, contentFileNames, internals);
|
await cleanServerOutput(opts, ssrOutputChunkNames, internals);
|
||||||
settings.timer.end('Static generate');
|
settings.timer.end('Static generate');
|
||||||
} else if (settings.buildOutput === 'server') {
|
} else if (settings.buildOutput === 'server') {
|
||||||
settings.timer.start('Server generate');
|
settings.timer.start('Server generate');
|
||||||
|
@ -354,14 +352,12 @@ async function cleanStaticOutput(opts: StaticBuildOptions, internals: BuildInter
|
||||||
async function cleanServerOutput(
|
async function cleanServerOutput(
|
||||||
opts: StaticBuildOptions,
|
opts: StaticBuildOptions,
|
||||||
ssrOutputChunkNames: string[],
|
ssrOutputChunkNames: string[],
|
||||||
contentFileNames: string[] | undefined,
|
|
||||||
internals: BuildInternals,
|
internals: BuildInternals,
|
||||||
) {
|
) {
|
||||||
const out = getOutDirWithinCwd(opts.settings.config.outDir);
|
const out = getOutDirWithinCwd(opts.settings.config.outDir);
|
||||||
// The SSR output chunks for Astro are all .mjs files
|
// The SSR output chunks for Astro are all .mjs files
|
||||||
const files = ssrOutputChunkNames
|
const files = ssrOutputChunkNames
|
||||||
.filter((f) => f.endsWith('.mjs'))
|
.filter((f) => f.endsWith('.mjs'));
|
||||||
.concat(contentFileNames ?? []);
|
|
||||||
if (internals.manifestFileName) {
|
if (internals.manifestFileName) {
|
||||||
files.push(internals.manifestFileName);
|
files.push(internals.manifestFileName);
|
||||||
}
|
}
|
||||||
|
@ -370,7 +366,11 @@ async function cleanServerOutput(
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
files.map(async (filename) => {
|
files.map(async (filename) => {
|
||||||
const url = new URL(filename, out);
|
const url = new URL(filename, out);
|
||||||
await fs.promises.rm(url);
|
const map = new URL(url + '.map');
|
||||||
|
await Promise.all([
|
||||||
|
fs.promises.rm(url),
|
||||||
|
fs.promises.rm(new URL(map)).catch((e) => {})
|
||||||
|
]);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -426,6 +426,8 @@ async function ssrMoveAssets(opts: StaticBuildOptions) {
|
||||||
cwd: fileURLToPath(serverAssets),
|
cwd: fileURLToPath(serverAssets),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log("FILES2", files);
|
||||||
|
|
||||||
if (files.length > 0) {
|
if (files.length > 0) {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
files.map(async function moveAsset(filename) {
|
files.map(async function moveAsset(filename) {
|
||||||
|
|
|
@ -167,6 +167,14 @@ describe('Astro basic build', () => {
|
||||||
assert.doesNotMatch(otherHtml, /<style/);
|
assert.doesNotMatch(otherHtml, /<style/);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('server sourcemaps not included in output', async () => {
|
||||||
|
const files = await fixture.readdir('/');
|
||||||
|
const hasSourcemaps = files.some(fileName => {
|
||||||
|
return fileName.endsWith('.map');
|
||||||
|
});
|
||||||
|
assert.equal(hasSourcemaps, false, 'no sourcemap files in output');
|
||||||
|
});
|
||||||
|
|
||||||
describe('preview', () => {
|
describe('preview', () => {
|
||||||
it('returns 200 for valid URLs', async () => {
|
it('returns 200 for valid URLs', async () => {
|
||||||
const result = await fixture.fetch('/');
|
const result = await fixture.fetch('/');
|
||||||
|
|
|
@ -6,5 +6,10 @@ import { defineConfig } from 'astro/config';
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
integrations: [preact(), mdx()],
|
integrations: [preact(), mdx()],
|
||||||
// make sure CLI flags have precedence
|
// make sure CLI flags have precedence
|
||||||
server: () => ({ port: 4321 })
|
server: () => ({ port: 4321 }),
|
||||||
|
vite: {
|
||||||
|
build: {
|
||||||
|
sourcemap: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -17,7 +17,13 @@ describe('Sourcemap', async () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Builds non-empty sourcemap', async () => {
|
it('Builds non-empty sourcemap', async () => {
|
||||||
const map = await fixture.readFile('renderers.mjs.map');
|
const assets = await fixture.readdir('/_astro');
|
||||||
assert.equal(map.includes('"sources":[]'), false);
|
const maps = assets.filter(file => file.endsWith('.map'));
|
||||||
|
assert.ok(maps.length > 0, 'got source maps');
|
||||||
|
for(const mapName of maps) {
|
||||||
|
const filename = `/_astro/${mapName}`;
|
||||||
|
const map = await fixture.readFile(filename);
|
||||||
|
assert.equal(map.includes('"sources":[]'), false);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue