From 9ea371cc074a2bc2e912b4ccc82bc42fb9a25135 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Tue, 2 May 2023 16:30:28 -0400 Subject: [PATCH] feat(dev): `--public-directory` option for serving non-Remix assets --- packages/remix-dev/cli/commands.ts | 9 +++++++++ packages/remix-dev/cli/run.ts | 6 ++++++ packages/remix-dev/config.ts | 1 + packages/remix-dev/devServer_unstable/index.ts | 3 ++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/remix-dev/cli/commands.ts b/packages/remix-dev/cli/commands.ts index 17dec451413..ece1033fc71 100644 --- a/packages/remix-dev/cli/commands.ts +++ b/packages/remix-dev/cli/commands.ts @@ -224,6 +224,7 @@ export async function dev( httpHost?: string; httpPort?: number; restart?: boolean; + publicDirectory?: string; websocketPort?: number; } = {} ) { @@ -515,6 +516,7 @@ let resolveDevBuild = async ( type DevServeFlags = DevBuildFlags & { command: string; + publicDirectory: string; restart: boolean; }; let resolveDevServe = async ( @@ -552,6 +554,12 @@ let resolveDevServe = async ( process.exit(1); } } + + let publicDirectory = + flags.publicDirectory ?? + (dev === true ? undefined : dev.publicDirectory) ?? + "public"; + let restart = flags.restart ?? (dev === true ? undefined : dev.restart) ?? true; @@ -560,6 +568,7 @@ let resolveDevServe = async ( httpScheme, httpHost, httpPort, + publicDirectory, websocketPort, restart, }; diff --git a/packages/remix-dev/cli/run.ts b/packages/remix-dev/cli/run.ts index c4448f122ca..ff5000c283d 100644 --- a/packages/remix-dev/cli/run.ts +++ b/packages/remix-dev/cli/run.ts @@ -48,6 +48,7 @@ ${colors.logoBlue("R")} ${colors.logoGreen("E")} ${colors.logoYellow( --http-host HTTP(S) host for the dev server. Default: localhost --http-port HTTP(S) port for the dev server. Default: any open port --no-restart Do not restart the app server when rebuilds occur. + --public-directory Path to public assets directory relative to Remix project root. Default: public --websocket-port Websocket port for the dev server. Default: any open port \`init\` Options: --no-delete Skip deleting the \`remix.init\` script @@ -188,6 +189,7 @@ export async function run(argv: string[] = process.argv.slice(2)) { "--http-host": String, "--http-port": Number, "--no-restart": Boolean, + "--public-directory": String, "--websocket-port": Number, }, { @@ -225,6 +227,10 @@ export async function run(argv: string[] = process.argv.slice(2)) { flags.httpPort = flags["http-port"]; delete flags["http-port"]; } + if (flags["public-directory"]) { + flags.publicDirectory = flags["public-directory"]; + delete flags["public-directory"]; + } if (flags["websocket-port"]) { flags.websocketPort = flags["websocket-port"]; delete flags["websocket-port"]; diff --git a/packages/remix-dev/config.ts b/packages/remix-dev/config.ts index e5c7a3924a7..8f427f9dc80 100644 --- a/packages/remix-dev/config.ts +++ b/packages/remix-dev/config.ts @@ -45,6 +45,7 @@ type Dev = { httpPort?: number; websocketPort?: number; restart?: boolean; + publicDirectory?: string; }; interface FutureConfig { diff --git a/packages/remix-dev/devServer_unstable/index.ts b/packages/remix-dev/devServer_unstable/index.ts index 7dd6ad1c66b..89accea8855 100644 --- a/packages/remix-dev/devServer_unstable/index.ts +++ b/packages/remix-dev/devServer_unstable/index.ts @@ -54,6 +54,7 @@ export let serve = async ( httpScheme: string; httpHost: string; httpPort: number; + publicDirectory: string; websocketPort: number; restart: boolean; } @@ -196,7 +197,7 @@ export let serve = async ( maxAge: "1y", }) ) - .use(express.static("public", { maxAge: "1h" })) + .use(express.static(options.publicDirectory, { maxAge: "1h" })) // handle `broadcastDevReady` messages .use(express.json())