[ci] format
This commit is contained in:
parent
cd154e447b
commit
b680c3eb97
3 changed files with 60 additions and 48 deletions
|
@ -517,13 +517,13 @@ export interface AstroUserConfig {
|
|||
* }
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* #### Effect on Astro.url
|
||||
* Setting `build.format` controls what `Astro.url` is set to during the build. When it is:
|
||||
* - `directory` - The `Astro.url.pathname` will include a trailing slash to mimic folder behavior; ie `/foo/`.
|
||||
* - `file` - The `Astro.url.pathname` will include `.html`; ie `/foo.html`.
|
||||
*
|
||||
* This means that when you create relative URLs using `new URL('./relative', Astro.url)`, you will get consistent behavior between dev and build.
|
||||
* - `directory` - The `Astro.url.pathname` will include a trailing slash to mimic folder behavior; ie `/foo/`.
|
||||
* - `file` - The `Astro.url.pathname` will include `.html`; ie `/foo.html`.
|
||||
*
|
||||
* This means that when you create relative URLs using `new URL('./relative', Astro.url)`, you will get consistent behavior between dev and build.
|
||||
*/
|
||||
format?: 'file' | 'directory';
|
||||
};
|
||||
|
|
|
@ -244,7 +244,13 @@ function addPageName(pathname: string, opts: StaticBuildOptions): void {
|
|||
opts.pageNames.push(pathname.replace(/^\//, ''));
|
||||
}
|
||||
|
||||
function getUrlForPath(pathname: string, base: string, origin: string, format: 'directory' | 'file', routeType: RouteType): URL {
|
||||
function getUrlForPath(
|
||||
pathname: string,
|
||||
base: string,
|
||||
origin: string,
|
||||
format: 'directory' | 'file',
|
||||
routeType: RouteType
|
||||
): URL {
|
||||
/**
|
||||
* Examples:
|
||||
* pathname: /, /foo
|
||||
|
@ -252,13 +258,14 @@ function getUrlForPath(pathname: string, base: string, origin: string, format: '
|
|||
*/
|
||||
const ending = format === 'directory' ? '/' : '.html';
|
||||
let buildPathname: string;
|
||||
if(pathname === '/' || pathname === '') {
|
||||
if (pathname === '/' || pathname === '') {
|
||||
buildPathname = base;
|
||||
} else if(routeType === 'endpoint') {
|
||||
} else if (routeType === 'endpoint') {
|
||||
const buildPathRelative = removeLeadingForwardSlash(pathname);
|
||||
buildPathname = base + buildPathRelative;
|
||||
} else {
|
||||
const buildPathRelative = removeTrailingForwardSlash(removeLeadingForwardSlash(pathname)) + ending;
|
||||
const buildPathRelative =
|
||||
removeTrailingForwardSlash(removeLeadingForwardSlash(pathname)) + ending;
|
||||
buildPathname = base + buildPathRelative;
|
||||
}
|
||||
const url = new URL(buildPathname, origin);
|
||||
|
@ -312,8 +319,13 @@ async function generatePath(
|
|||
}
|
||||
|
||||
const ssr = opts.astroConfig.output === 'server';
|
||||
const url = getUrlForPath(pathname, opts.astroConfig.base, origin,
|
||||
opts.astroConfig.build.format, pageData.route.type);
|
||||
const url = getUrlForPath(
|
||||
pathname,
|
||||
opts.astroConfig.base,
|
||||
origin,
|
||||
opts.astroConfig.build.format,
|
||||
pageData.route.type
|
||||
);
|
||||
const options: RenderOptions = {
|
||||
adapterName: undefined,
|
||||
links,
|
||||
|
|
|
@ -3,50 +3,50 @@ import * as cheerio from 'cheerio';
|
|||
import { loadFixture } from './test-utils.js';
|
||||
|
||||
describe('build.format', () => {
|
||||
describe('directory', () => {
|
||||
/** @type {import('./test-utils').Fixture} */
|
||||
let fixture;
|
||||
before(async () => {
|
||||
fixture = await loadFixture({
|
||||
root: './fixtures/page-format/',
|
||||
});
|
||||
});
|
||||
describe('directory', () => {
|
||||
/** @type {import('./test-utils').Fixture} */
|
||||
let fixture;
|
||||
before(async () => {
|
||||
fixture = await loadFixture({
|
||||
root: './fixtures/page-format/',
|
||||
});
|
||||
});
|
||||
|
||||
describe('Build', () => {
|
||||
before(async () => {
|
||||
await fixture.build();
|
||||
});
|
||||
describe('Build', () => {
|
||||
before(async () => {
|
||||
await fixture.build();
|
||||
});
|
||||
|
||||
it('relative urls created point to sibling folders', async () => {
|
||||
let html = await fixture.readFile('/nested/page/index.html');
|
||||
let $ = cheerio.load(html);
|
||||
expect($('#another').attr('href')).to.equal('/nested/page/another/');
|
||||
});
|
||||
});
|
||||
});
|
||||
it('relative urls created point to sibling folders', async () => {
|
||||
let html = await fixture.readFile('/nested/page/index.html');
|
||||
let $ = cheerio.load(html);
|
||||
expect($('#another').attr('href')).to.equal('/nested/page/another/');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('file', () => {
|
||||
/** @type {import('./test-utils').Fixture} */
|
||||
let fixture;
|
||||
before(async () => {
|
||||
fixture = await loadFixture({
|
||||
root: './fixtures/page-format/',
|
||||
/** @type {import('./test-utils').Fixture} */
|
||||
let fixture;
|
||||
before(async () => {
|
||||
fixture = await loadFixture({
|
||||
root: './fixtures/page-format/',
|
||||
build: {
|
||||
format: 'file',
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Build', () => {
|
||||
before(async () => {
|
||||
await fixture.build();
|
||||
});
|
||||
describe('Build', () => {
|
||||
before(async () => {
|
||||
await fixture.build();
|
||||
});
|
||||
|
||||
it('relative urls created point to sibling folders', async () => {
|
||||
let html = await fixture.readFile('/nested/page.html');
|
||||
let $ = cheerio.load(html);
|
||||
expect($('#another').attr('href')).to.equal('/nested/another/');
|
||||
});
|
||||
});
|
||||
});
|
||||
it('relative urls created point to sibling folders', async () => {
|
||||
let html = await fixture.readFile('/nested/page.html');
|
||||
let $ = cheerio.load(html);
|
||||
expect($('#another').attr('href')).to.equal('/nested/another/');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue