Skip to content

Commit

Permalink
fix(#7561): refactor astro page filename logic
Browse files Browse the repository at this point in the history
  • Loading branch information
natemoo-re committed Aug 7, 2023
1 parent 51028f8 commit e546455
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 16 deletions.
20 changes: 4 additions & 16 deletions packages/astro/src/core/build/static-build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -445,22 +445,10 @@ export function makeAstroPageEntryPointFileName(
facadeModuleId: string,
routes: RouteData[]
) {
const pageModuleId = facadeModuleId
.replace(prefix, '')
.replace(ASTRO_PAGE_EXTENSION_POST_PATTERN, '.');
let route = routes.find((routeData) => {
return routeData.route === pageModuleId;
});
let name = pageModuleId;
if (route) {
name = route.route;
}
if (name.endsWith('/')) name += 'index';
const fileName = `${name.replaceAll('[', '_').replaceAll(']', '_').replaceAll('...', '---')}.mjs`;
if (name.startsWith('..')) {
return `pages${fileName}`;
}
return fileName;
const pageModuleId = facadeModuleId.replace(prefix, '').replace(ASTRO_PAGE_EXTENSION_POST_PATTERN, '.');
const route = routes.find((routeData) => routeData.component === pageModuleId);
const name = route?.route ?? pageModuleId;
return `pages${name.replace(/\/$/, '/index').replaceAll(/[\[\]]/g, '_').replaceAll('...', '---')}.astro.mjs`;
}

/**
Expand Down
58 changes: 58 additions & 0 deletions packages/astro/test/units/build/static-build.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import { expect } from 'chai';
import { makeAstroPageEntryPointFileName } from '../../../dist/core/build/static-build.js';

describe('astro/src/core/build', () => {
describe('makeAstroPageEntryPointFileName', () => {
const routes = [
{
route: '/',
component: 'src/pages/index.astro',
pathname: '/',
},
{
route: '/injected',
component: '../node_modules/my-dep/injected.astro',
pathname: '/injected',
},
{
route: '/injected-workspace',
component: '../../packages/demo/[...all].astro',
pathname: undefined,
},
{
route: '/blog/[year]/[...slug]',
component: 'src/pages/blog/[year]/[...slug].astro',
pathname: undefined,
},
]

it('handles local pages', async () => {
const input = '@astro-page:src/pages/index@_@astro';
const output = 'pages/index.astro.mjs';
const result = makeAstroPageEntryPointFileName('@astro-page:', input, routes);
expect(result).to.equal(output)
});

it('handles dynamic pages', async () => {
const input = '@astro-page:src/pages/blog/[year]/[...slug]@_@astro';
const output = 'pages/blog/_year_/_---slug_.astro.mjs';
const result = makeAstroPageEntryPointFileName('@astro-page:', input, routes);
expect(result).to.equal(output)
});

it('handles node_modules pages', async () => {
const input = '@astro-page:../node_modules/my-dep/injected@_@astro';
const output = 'pages/injected.astro.mjs';
const result = makeAstroPageEntryPointFileName('@astro-page:', input, routes);
expect(result).to.equal(output)
});

// Fix #7561
it('handles local workspace pages', async () => {
const input = '@astro-page:../../packages/demo/[...all]@_@astro';
const output = 'pages/injected-workspace.astro.mjs';
const result = makeAstroPageEntryPointFileName('@astro-page:', input, routes);
expect(result).to.equal(output)
});
});
});

0 comments on commit e546455

Please sign in to comment.