diff --git a/.changeset/wise-swans-live.md b/.changeset/wise-swans-live.md new file mode 100644 index 000000000000..906199d37bd7 --- /dev/null +++ b/.changeset/wise-swans-live.md @@ -0,0 +1,9 @@ +--- +'astro': minor +--- + +Add support for `--base` CLI argument, which will override the [`base`](https://docs.astro.build/en/reference/configuration-reference/#base) set in your `astro.config.mjs` file. + +``` +astro --site https://astro.build --base /docs +``` diff --git a/examples/minimal/src/pages/index.astro b/examples/minimal/src/pages/index.astro index 7264ff502db6..3fba466cbaed 100644 --- a/examples/minimal/src/pages/index.astro +++ b/examples/minimal/src/pages/index.astro @@ -10,6 +10,7 @@ Astro -

Astro

+

SITE: {Astro.site}

+

BASE_URL: {import.meta.env.BASE_URL}

diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index e0954afae346..07ef350e21ba 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -76,6 +76,7 @@ export interface AstroComponentMetadata { export interface CLIFlags { root?: string; site?: string; + base?: string; host?: string | boolean; port?: number; config?: string; diff --git a/packages/astro/src/cli/index.ts b/packages/astro/src/cli/index.ts index 738427dbbc3f..da05d989ea12 100644 --- a/packages/astro/src/cli/index.ts +++ b/packages/astro/src/cli/index.ts @@ -61,6 +61,8 @@ function printAstroHelp() { 'Global Flags': [ ['--config ', 'Specify your config file.'], ['--root ', 'Specify your project root folder.'], + ['--site ', 'Specify your project site.'], + ['--base ', 'Specify your project base.'], ['--verbose', 'Enable verbose logging.'], ['--silent', 'Disable all logging.'], ['--version', 'Show the version number and exit.'], diff --git a/packages/astro/src/core/config/config.ts b/packages/astro/src/core/config/config.ts index 840971e566fa..4164dfda72d8 100644 --- a/packages/astro/src/core/config/config.ts +++ b/packages/astro/src/core/config/config.ts @@ -97,6 +97,7 @@ export function resolveFlags(flags: Partial): CLIFlags { return { root: typeof flags.root === 'string' ? flags.root : undefined, site: typeof flags.site === 'string' ? flags.site : undefined, + base: typeof flags.base === 'string' ? flags.base : undefined, port: typeof flags.port === 'number' ? flags.port : undefined, config: typeof flags.config === 'string' ? flags.config : undefined, host: @@ -114,6 +115,7 @@ function mergeCLIFlags(astroConfig: AstroUserConfig, flags: CLIFlags, cmd: strin astroConfig.server = astroConfig.server || {}; astroConfig.markdown = astroConfig.markdown || {}; if (typeof flags.site === 'string') astroConfig.site = flags.site; + if (typeof flags.base === 'string') astroConfig.base = flags.base; if (typeof flags.drafts === 'boolean') astroConfig.markdown.drafts = flags.drafts; if (typeof flags.port === 'number') { // @ts-expect-error astroConfig.server may be a function, but TS doesn't like attaching properties to a function.