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 { AstroUserConfig } from '../@types/astro.js';
|
||||
import type { AstroInlineConfig, AstroUserConfig } from '../@types/astro.js';
|
||||
import { Logger } from '../core/logger/core.js';
|
||||
|
||||
export function defineConfig(config: AstroUserConfig) {
|
||||
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 async ({ mode, command }: { mode: string; command: 'serve' | 'build' }) => {
|
||||
// Vite `command` is `serve | build`, but Astro uses `dev | build`
|
||||
|
@ -34,7 +34,7 @@ export function getViteConfig(inlineConfig: UserConfig) {
|
|||
dest: nodeLogDestination,
|
||||
level: 'info',
|
||||
});
|
||||
const { astroConfig: config } = await resolveConfig({}, cmd);
|
||||
const { astroConfig: config } = await resolveConfig(inlineAstroConfig, cmd);
|
||||
let settings = await createSettings(config, inlineConfig.root);
|
||||
settings = await runHookConfigSetup({ settings, command: cmd, logger });
|
||||
const viteConfig = await createVite(
|
||||
|
|
Loading…
Reference in a new issue