Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document experimental JS API #4234

Merged
merged 6 commits into from
Aug 21, 2023
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions src/content/docs/en/reference/cli-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -373,3 +373,125 @@ Automatically opens the app in the browser on server start.
### `--help`

Prints the help message and exits.

## Advanced APIs (Experimental)

If you need more control when running Astro, the `"astro"` package also exports APIs to programmatically run the CLI commands. These APIs are experimental and their API signature may change in any version.
bluwy marked this conversation as resolved.
Show resolved Hide resolved

### `AstroInlineConfig`

The `AstroInlineConfig` type is used by all of the command APIs below. It extends from the user [Astro config](/en/reference/configuration-reference/) type:

```ts
interface AstroInlineConfig extends AstroUserConfig {
configFile?: string | false;
mode?: "development" | "production";
logLevel?: "debug" | "info" | "warn" | "error" | "silent";
}
```

#### `configFile`

<p>

**Type:** `string | false`<br />
**Default:** `undefined`
</p>

A custom path to the Astro config file. If relative, it'll resolve based on the current working directory.
Set to `false` to disable loading any config files.

If this value is undefined or unset, Astro will search for an `astro.config.(js,mjs,ts)` file relative to
the `root` and load the config file if found.
bluwy marked this conversation as resolved.
Show resolved Hide resolved

The inline config passed in this object will take highest priority when merging with the loaded user config.

#### `mode`

<p>

**Type:** `"development" | "production"`<br />
**Default:** `"development"` when running `astro dev`, `"production"` when running `astro build`
</p>

The mode used when building your site to generate either "development" or "production" code.

#### `logLevel`

<p>

**Type:** `"debug" | "info" | "warn" | "error" | "silent"`<br />
**Default:** `"info"`
</p>

The logging level to filter messages logged by Astro.

- `"debug"`: Log everything, including noisy debugging diagnostics.
- `"info"`: Log informational messages, warnings, and errors.
- `"warn"`: Log warnings and errors.
- `"error"`: Log errors only.
- `"silent"`: No logging.

### `dev()`

**Type:** `(inlineConfig: AstroInlineConfig) => AstroDevServer`

Similar to [`astro dev`](#astro-dev), it runs Astro's development server.

```js
import { dev } from "astro";

const devServer = await dev({
root: "./my-project",
});

// Stop the server if needed
await devServer.stop();
```

### `build()`

**Type:** `(inlineConfig: AstroInlineConfig) => void`

Similar to [`astro build`](#astro-build), it builds your site for deployment.

```js
import { build } from "astro";

await build({
root: "./my-project",
});
```

### `preview()`

**Type:** `(inlineConfig: AstroInlineConfig) => AstroPreviewServer`

Similar to [`astro preview`](#astro-preview), it starts a local server to serve your static `dist/` directory.

```js
import { preview } from "astro";

const previewServer = await preview({
root: "./my-project",
});

// Stop the server if needed
await previewServer.stop();
```

### `sync()`

**Type:** `(inlineConfig: AstroInlineConfig) => number`

Similar to [`astro sync`](#astro-sync), it generates TypeScript types for all Astro modules

```js
import { sync } from "astro";

const exitCode = await sync({
root: "./my-project",
});

process.exit(exitCode)
```