defineConfig
编辑此页面defineConfig
辅助函数来自 @solidjs/start/config
,用于在 app.config.ts
中使用。
它接收一个配置对象,包含 SolidStart、Vite 和 Nitro 的设置。
配置 Vite
SolidStart 支持大多数 Vite 选项,包括通过 vite
选项配置插件:
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({ vite: { // vite 选项 plugins: [], },});
vite
选项也可以是一个函数,可以为每个 Vinxi 路由器进行自定义配置。
在 SolidStart 中,使用了 3 个路由器:
server
- 服务端路由client
- 客户端路由server-function
- 服务器函数
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({ vite({ router }) { if (router === "server") { } else if (router === "client") { } else if (router === "server-function") { } return { plugins: [] }; },});
配置 Nitro
SolidStart 使用 Nitro 来在多个平台上运行。
server
选项暴露了一些 Nitro 选项,包括构建和部署预设。
所有可用预设的概述可以在 Nitro 文档的部署部分 中找到。
一些常见的预设包括:
服务器
- Node.js 服务器 (
node
) (默认) - Deno 服务器 (
deno_server
)
提供商
- Netlify Functions 和 Edge (
netlify
,netlify-edge
) - Vercel Functions 和 Edge (
vercel
,vercel-edge
) - AWS Lambda 和 Lambda@Edge (
aws_lambda
) - Cloudflare Workers 和 Pages (
cloudflare
,cloudflare_pages
,cloudflare_module
) - Deno Deploy (
deno_deploy
)
静态站点生成
如果不传递参数,默认将使用 Node 预设。
其他预设可能会被提供商自动检测,但如果没有,则必须在 server-preset
选项中添加到配置中。
例如,使用 Netlify Edge 将如下所示:
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({ server: { preset: "netlify_edge", },});
特别说明
SolidStart 使用异步本地存储。 Netlify、Vercel 和 Deno 默认支持这个功能,但如果你使用 Cloudflare,你需要指定以下内容:
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({ server: { preset: "cloudflare_module", rollupConfig: { external: ["__STATIC_CONTENT_MANIFEST", "node:async_hooks"], }, },});
在 wrangler.toml
中,你需要启用 node 兼容性:
compatibility_flags = [ "nodejs_compat" ]
参数
| 属性 | 类型 | 默认值 | 描述 |
| -------------------- | ------------------------------------------ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|ssr | boolean | true | 在客户端和服务器渲染之间切换。 |
| solid | object | | vite-plugin-solid 的配置对象 |
| extensions | string[] | ["js", "jsx", "ts", "tsx"] | 要被视为路由的文件扩展名数组。 |
| server | object | | Nitro 服务器配置选项 |
| appRoot | string | "./src" | 应用程序根目录的路径。 |
| routeDir | string | "./routes" | 路由所在的路径。 |
| middleware | string | | 可选的中间件文件的路径。 |
| devOverlay | boolean | true | 切换开发覆盖层。 |
| experimental.islands | boolean | false | 启用"islands"模式。 |
| vite | ViteConfig
或 ({ router })=>ViteConfig
| | Vite 配置对象。可以为每个 router
配置,其中 router 的字符串值为 "server"、"client" 或 "server-function" |