From 74854f865962d2a27509b94f7fd9bdc766a2acd9 Mon Sep 17 00:00:00 2001 From: Gaara Date: Tue, 22 Aug 2023 13:45:08 +0800 Subject: [PATCH 1/2] feat: support custom static serve options --- packages/hooks-kit/src/command/build.ts | 13 ++++++++++--- packages/hooks-kit/src/config.ts | 3 ++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/hooks-kit/src/command/build.ts b/packages/hooks-kit/src/command/build.ts index 79b33592f..a6776ef45 100644 --- a/packages/hooks-kit/src/command/build.ts +++ b/packages/hooks-kit/src/command/build.ts @@ -8,6 +8,7 @@ import { getProjectRoot } from '@midwayjs/hooks-internal' import { KitConfig, resolveConfig } from '../config' import consola from 'consola' import { register } from '@midwayjs/esrun' +import { ServeOptions } from '@midwayjs/serve' type BuildOptions = { outDir: string @@ -58,7 +59,8 @@ export function setupBuildCommand(cli: CAC) { consola.info( 'Static files and html will be automatically served from server' ) - createRender(join(root, outDir)) + const options = typeof userConfig.static === 'object' ? userConfig.static : undefined + createRender(join(root, outDir), options) } else { consola.info( 'Serve static disabled, you should serve static files manually' @@ -111,8 +113,13 @@ async function executePromise(promise: Promise | any) { } } -function createRender(dist: string) { - const code = `exports.default = require('@midwayjs/serve').Serve('/*', { dir: '_client', isKit: true });` +function createRender(dist: string, options?: ServeOptions) { + options = { + dir: '_client', + isKit: true, + ...options + } + const code = `exports.default = require('@midwayjs/serve').Serve('/*', ${JSON.stringify(options)});` const file = join(dist, '_serve/index.js') fs.ensureFileSync(file) fs.writeFileSync(file, code, 'utf-8') diff --git a/packages/hooks-kit/src/config.ts b/packages/hooks-kit/src/config.ts index 05ab184cb..1d4548664 100644 --- a/packages/hooks-kit/src/config.ts +++ b/packages/hooks-kit/src/config.ts @@ -1,11 +1,12 @@ import type { UserConfig } from '@midwayjs/hooks-internal' import { getConfig } from '@midwayjs/hooks-internal' +import { ServeOptions } from '@midwayjs/serve' import type { UserConfig as ViteConfig } from 'vite' export interface KitConfig extends Omit { [key: string]: any vite?: ViteConfig - static?: boolean + static?: boolean | ServeOptions } export function defineConfig(config: KitConfig): KitConfig { From 1a5b00de4864bcdc213ced94b670ca79797a948a Mon Sep 17 00:00:00 2001 From: Gaara Date: Tue, 22 Aug 2023 14:02:00 +0800 Subject: [PATCH 2/2] docs: add static options introduction --- docs/config.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/config.md b/docs/config.md index e7d44ff59..3ea3d427c 100644 --- a/docs/config.md +++ b/docs/config.md @@ -14,6 +14,11 @@ title: 项目配置 启用文件系统路由并配置,默认为 `undefined`。具体格式参考 [简易模式 & 文件系统路由](./file-route)。 +## static: ServeOptions | boolean + +构建产物的静态托管配置,默认为 `true`,表示使用内置的 `@midwayjs/serve` 组件托管静态文件。设置为 `false` 时,需要自行托管构建产物。 +如果像使用内置的组件托管,并配置更多的托管参数,可以传入 `ServeOptions` 对象, 其值可以参考 [midway 文档](https://midwayjs.org/docs/extensions/static_file#%E5%8F%AF%E7%94%A8%E9%85%8D%E7%BD%AE)。 + ## dev.include: string[] 配置全栈应用下,如果请求的 URL 中包含 `dev.include` 的关键词,则请求将由后端 Server 处理。