From fe5c936485d535dec4d95e39bf98ad36ad4c52e3 Mon Sep 17 00:00:00 2001 From: Jacob Ebey Date: Thu, 2 Mar 2023 11:02:05 -0800 Subject: [PATCH] feat!: remove serverBuildTarget codepaths docs: update docs to reference removal of serverBuildTarget --- .changeset/cool-wombats-chew.md | 5 ++ docs/file-conventions/remix-config.md | 14 +--- .../fixtures/cloudflare/remix.config.js | 7 +- .../__tests__/fixtures/deno/remix.config.js | 5 +- .../__tests__/fixtures/stack/remix.config.js | 1 - .../remix-dev/__tests__/readConfig-test.ts | 9 +-- packages/remix-dev/config.ts | 70 +------------------ 7 files changed, 17 insertions(+), 94 deletions(-) create mode 100644 .changeset/cool-wombats-chew.md diff --git a/.changeset/cool-wombats-chew.md b/.changeset/cool-wombats-chew.md new file mode 100644 index 00000000000..b95c893b6ae --- /dev/null +++ b/.changeset/cool-wombats-chew.md @@ -0,0 +1,5 @@ +--- +"@remix-run/dev": major +--- + +Remove serverBuildTarget remix.config option. diff --git a/docs/file-conventions/remix-config.md b/docs/file-conventions/remix-config.md index f2b4e5e54c1..db23c5250db 100644 --- a/docs/file-conventions/remix-config.md +++ b/docs/file-conventions/remix-config.md @@ -116,25 +116,13 @@ to `"build/index.js"`. ## serverBuildTarget -This option is deprecated and will be removed in the next major version release. Use a combination of [`publicPath`][public-path], +This option has been removed in v2. Use a combination of [`publicPath`][public-path], [`serverBuildPath`][server-build-path], [`serverConditions`][server-conditions], [`serverDependenciesToBundle`][server-dependencies-to-bundle] [`serverMainFields`][server-main-fields], [`serverMinify`][server-minify], [`serverModuleFormat`][server-module-format] and/or [`serverPlatform`][server-platform] instead. -The target of the server build. Defaults to `"node-cjs"`. - -The `serverBuildTarget` can be one of the following: - -- [`"arc"`][arc] -- [`"cloudflare-pages"`][cloudflare-pages] -- [`"cloudflare-workers"`][cloudflare-workers] -- [`"deno"`][deno] -- [`"netlify"`][netlify] -- [`"node-cjs"`][node-cjs] -- [`"vercel"`][vercel] - **Migration Table:** | serverBuildTarget | publicPath | serverBuildPath | serverConditions | serverMainFields | serverModuleFormat | serverPlatform | serverDependenciesToBundle | serverMinify | diff --git a/packages/remix-dev/__tests__/fixtures/cloudflare/remix.config.js b/packages/remix-dev/__tests__/fixtures/cloudflare/remix.config.js index 7d8260a36a7..98cf28ef582 100644 --- a/packages/remix-dev/__tests__/fixtures/cloudflare/remix.config.js +++ b/packages/remix-dev/__tests__/fixtures/cloudflare/remix.config.js @@ -1,11 +1,14 @@ /** @type {import('@remix-run/dev').AppConfig} */ module.exports = { - serverBuildTarget: "cloudflare-pages", + serverBuildPath: "functions/[[path]].js", + serverConditions: ["worker"], + serverMainFields: ["browser", "module", "main"], + serverModuleFormat: "esm", + serverPlatform: "neutral", server: "./server.js", devServerBroadcastDelay: 1000, ignoredRouteFiles: ["**/.*"], // appDirectory: "app", // assetsBuildDirectory: "public/build", - // serverBuildPath: "functions/[[path]].js", // publicPath: "/build/", }; diff --git a/packages/remix-dev/__tests__/fixtures/deno/remix.config.js b/packages/remix-dev/__tests__/fixtures/deno/remix.config.js index d621422e56f..8719f855afc 100644 --- a/packages/remix-dev/__tests__/fixtures/deno/remix.config.js +++ b/packages/remix-dev/__tests__/fixtures/deno/remix.config.js @@ -1,6 +1,9 @@ /** @type {import('@remix-run/dev').AppConfig} */ module.exports = { - serverBuildTarget: "deno", + serverConditions: ["deno", "worker"], + serverMainFields: ["browser", "module", "main"], + serverModuleFormat: "esm", + serverPlatform: "neutral", server: "./server.ts", /* If live reload causes page to re-render without changes (live reload is too fast), diff --git a/packages/remix-dev/__tests__/fixtures/stack/remix.config.js b/packages/remix-dev/__tests__/fixtures/stack/remix.config.js index 5bb0822e720..adf2a0b5d3e 100644 --- a/packages/remix-dev/__tests__/fixtures/stack/remix.config.js +++ b/packages/remix-dev/__tests__/fixtures/stack/remix.config.js @@ -1,6 +1,5 @@ /** @type {import('@remix-run/dev').AppConfig} */ module.exports = { - serverBuildTarget: "node-cjs", ignoredRouteFiles: ["**/.*"], // appDirectory: "app", // assetsBuildDirectory: "public/build", diff --git a/packages/remix-dev/__tests__/readConfig-test.ts b/packages/remix-dev/__tests__/readConfig-test.ts index b953178b363..2f3388ab9a2 100644 --- a/packages/remix-dev/__tests__/readConfig-test.ts +++ b/packages/remix-dev/__tests__/readConfig-test.ts @@ -1,23 +1,17 @@ import path from "path"; import type { RemixConfig } from "../config"; -import { serverBuildTargetWarning, readConfig } from "../config"; +import { readConfig } from "../config"; const remixRoot = path.resolve(__dirname, "./fixtures/stack"); describe("readConfig", () => { let config: RemixConfig; - let warnStub; beforeEach(async () => { - let consoleWarn = console.warn; - warnStub = jest.fn(); - console.warn = warnStub; config = await readConfig(remixRoot); - console.warn = consoleWarn; }); it("generates a config", async () => { - expect(warnStub).toHaveBeenCalledWith(serverBuildTargetWarning); expect(config).toMatchInlineSnapshot( { rootDirectory: expect.any(String), @@ -75,7 +69,6 @@ describe("readConfig", () => { }, }, "serverBuildPath": Any, - "serverBuildTarget": "node-cjs", "serverBuildTargetEntryModule": "export * from \\"@remix-run/dev/server-build\\";", "serverConditions": undefined, "serverDependenciesToBundle": Array [], diff --git a/packages/remix-dev/config.ts b/packages/remix-dev/config.ts index 4c6f161eb86..3f6808d365d 100644 --- a/packages/remix-dev/config.ts +++ b/packages/remix-dev/config.ts @@ -13,7 +13,6 @@ import { serverBuildVirtualModule } from "./compiler/virtualModules"; import { writeConfigDefaults } from "./compiler/utils/tsconfig/write-config-defaults"; import { flatRoutes } from "./config/flat-routes"; import { getPreferredPackageManager } from "./cli/getPreferredPackageManager"; -import { warnOnce } from "./compiler/warnings"; export interface RemixMdxConfig { rehypePlugins?: any[]; @@ -24,15 +23,6 @@ export type RemixMdxConfigFunction = ( filename: string ) => Promise | RemixMdxConfig | undefined; -export type ServerBuildTarget = - | "node-cjs" - | "arc" - | "netlify" - | "vercel" - | "cloudflare-pages" - | "cloudflare-workers" - | "deno"; - export type ServerModuleFormat = "esm" | "cjs"; export type ServerPlatform = "node" | "neutral"; @@ -138,13 +128,6 @@ export interface AppConfig { */ serverBuildPath?: string; - /** - * The target of the server build. Defaults to "node-cjs". - * - * @deprecated Use a combination of `{@link AppConfig.publicPath}`, `{@link AppConfig.serverBuildPath}`, `{@link AppConfig.serverConditions}`, `{@link AppConfig.serverDependenciesToBundle}`, `{@link AppConfig.serverMainFields}`, `{@link AppConfig.serverMinify}`, `{@link AppConfig.serverModuleFormat}` and/or `{@link AppConfig.serverPlatform}` instead. - */ - serverBuildTarget?: ServerBuildTarget; - /** * The order of conditions to use when resolving server dependencies' * `exports` field in `package.json`. @@ -281,12 +264,6 @@ export interface RemixConfig { */ serverBuildPath: string; - /** - * The target of the server build. Defaults to "node-cjs". - * - * @deprecated Use a combination of `{@link AppConfig.publicPath}`, `{@link AppConfig.serverBuildPath}`, `{@link AppConfig.serverConditions}`, `{@link AppConfig.serverDependenciesToBundle}`, `{@link AppConfig.serverMainFields}`, `{@link AppConfig.serverMinify}`, `{@link AppConfig.serverModuleFormat}` and/or `{@link AppConfig.serverPlatform}` instead. */ - serverBuildTarget?: ServerBuildTarget; - /** * The default entry module for the server build if a {@see AppConfig.server} * is not provided. @@ -397,17 +374,7 @@ export async function readConfig( } } - if (appConfig.serverBuildTarget) { - warnOnce(serverBuildTargetWarning, "v2_serverBuildTarget"); - } - - let isCloudflareRuntime = ["cloudflare-pages", "cloudflare-workers"].includes( - appConfig.serverBuildTarget ?? "" - ); - let isDenoRuntime = appConfig.serverBuildTarget === "deno"; - let serverBuildPath = resolveServerBuildPath(rootDirectory, appConfig); - let serverBuildTarget = appConfig.serverBuildTarget; let serverBuildTargetEntryModule = `export * from ${JSON.stringify( serverBuildVirtualModule.id )};`; @@ -418,21 +385,6 @@ export async function readConfig( let serverMinify = appConfig.serverMinify; let serverModuleFormat = appConfig.serverModuleFormat || "cjs"; let serverPlatform = appConfig.serverPlatform || "node"; - if (isCloudflareRuntime) { - serverConditions ??= ["worker"]; - serverDependenciesToBundle = "all"; - serverMainFields ??= ["browser", "module", "main"]; - serverMinify ??= true; - serverModuleFormat = "esm"; - serverPlatform = "neutral"; - } - if (isDenoRuntime) { - serverConditions ??= ["deno", "worker"]; - serverDependenciesToBundle = "all"; - serverMainFields ??= ["module", "main"]; - serverModuleFormat = "esm"; - serverPlatform = "neutral"; - } serverMainFields ??= serverModuleFormat === "esm" ? ["module", "main"] : ["main", "module"]; serverMinify ??= false; @@ -547,9 +499,7 @@ export async function readConfig( process.env.REMIX_DEV_SERVER_WS_PORT = String(devServerPort); let devServerBroadcastDelay = appConfig.devServerBroadcastDelay || 0; - let defaultPublicPath = - appConfig.serverBuildTarget === "arc" ? "/_static/build/" : "/build/"; - let publicPath = addTrailingSlash(appConfig.publicPath || defaultPublicPath); + let publicPath = addTrailingSlash(appConfig.publicPath || "/build/"); let rootRouteFile = findEntry(appDirectory, "root"); if (!rootRouteFile) { @@ -638,7 +588,6 @@ export async function readConfig( rootDirectory, routes, serverBuildPath, - serverBuildTarget, serverBuildTargetEntryModule, serverConditions, serverDependenciesToBundle, @@ -692,21 +641,6 @@ const resolveServerBuildPath = ( ) => { let serverBuildPath = "build/index.js"; - switch (appConfig.serverBuildTarget) { - case "arc": - serverBuildPath = "server/index.js"; - break; - case "cloudflare-pages": - serverBuildPath = "functions/[[path]].js"; - break; - case "netlify": - serverBuildPath = ".netlify/functions-internal/server.js"; - break; - case "vercel": - serverBuildPath = "api/index.js"; - break; - } - // retain deprecated behavior for now if (appConfig.serverBuildDirectory) { serverBuildPath = path.join(appConfig.serverBuildDirectory, "index.js"); @@ -725,5 +659,3 @@ let listFormat = new Intl.ListFormat("en", { style: "long", type: "conjunction", }); - -export let serverBuildTargetWarning = `The "serverBuildTarget" config option is deprecated. Use a combination of "publicPath", "serverBuildPath", "serverConditions", "serverDependenciesToBundle", "serverMainFields", "serverMinify", "serverModuleFormat" and/or "serverPlatform" instead.`;