mirror of
https://github.com/withastro/astro.git
synced 2024-12-23 21:53:55 -05:00
Support passing inline Astro config to getViteConfig() (#10963)
* Support passing inline Astro config to `getViteConfig()` * Add changeset
This commit is contained in:
parent
4436398642
commit
61f47a6842
2 changed files with 25 additions and 3 deletions
22
.changeset/nervous-waves-shop.md
Normal file
22
.changeset/nervous-waves-shop.md
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
"astro": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Adds support for passing an inline Astro configuration object to `getViteConfig()`
|
||||||
|
|
||||||
|
If you are using `getViteConfig()` to configure the Vitest test runner, you can now pass a second argument to control how Astro is configured. This makes it possible to configure unit tests with different Astro options when using [Vitest’s workspaces](https://vitest.dev/guide/workspace.html) feature.
|
||||||
|
|
||||||
|
```js
|
||||||
|
// vitest.config.ts
|
||||||
|
import { getViteConfig } from 'astro/config';
|
||||||
|
|
||||||
|
export default getViteConfig(
|
||||||
|
/* Vite configuration */
|
||||||
|
{ test: {} },
|
||||||
|
/* Astro configuration */
|
||||||
|
{
|
||||||
|
site: 'https://example.com',
|
||||||
|
trailingSlash: 'never',
|
||||||
|
},
|
||||||
|
);
|
||||||
|
```
|
|
@ -1,12 +1,12 @@
|
||||||
import type { UserConfig } from 'vite';
|
import type { UserConfig } from 'vite';
|
||||||
import type { AstroUserConfig } from '../@types/astro.js';
|
import type { AstroInlineConfig, AstroUserConfig } from '../@types/astro.js';
|
||||||
import { Logger } from '../core/logger/core.js';
|
import { Logger } from '../core/logger/core.js';
|
||||||
|
|
||||||
export function defineConfig(config: AstroUserConfig) {
|
export function defineConfig(config: AstroUserConfig) {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getViteConfig(inlineConfig: UserConfig) {
|
export function getViteConfig(inlineConfig: UserConfig, inlineAstroConfig: AstroInlineConfig = {}) {
|
||||||
// Return an async Vite config getter which exposes a resolved `mode` and `command`
|
// Return an async Vite config getter which exposes a resolved `mode` and `command`
|
||||||
return async ({ mode, command }: { mode: string; command: 'serve' | 'build' }) => {
|
return async ({ mode, command }: { mode: string; command: 'serve' | 'build' }) => {
|
||||||
// Vite `command` is `serve | build`, but Astro uses `dev | build`
|
// Vite `command` is `serve | build`, but Astro uses `dev | build`
|
||||||
|
@ -34,7 +34,7 @@ export function getViteConfig(inlineConfig: UserConfig) {
|
||||||
dest: nodeLogDestination,
|
dest: nodeLogDestination,
|
||||||
level: 'info',
|
level: 'info',
|
||||||
});
|
});
|
||||||
const { astroConfig: config } = await resolveConfig({}, cmd);
|
const { astroConfig: config } = await resolveConfig(inlineAstroConfig, cmd);
|
||||||
let settings = await createSettings(config, inlineConfig.root);
|
let settings = await createSettings(config, inlineConfig.root);
|
||||||
settings = await runHookConfigSetup({ settings, command: cmd, logger });
|
settings = await runHookConfigSetup({ settings, command: cmd, logger });
|
||||||
const viteConfig = await createVite(
|
const viteConfig = await createVite(
|
||||||
|
|
Loading…
Reference in a new issue