Skip to content

Commit

Permalink
feat: Allow for custom server to participate in bundling (#1504)
Browse files Browse the repository at this point in the history
feat: updated templates to make use of new compiler defaults
feat: added node polyfills for "neutral" server platforms that are not deno
fix(create-remix): make sure app has required properties before merging
fix(create-remix): add missing dependencies
ci: remove some junk from deployment scripts
chore(create-remix): workers requires a build command
feat: remove extra build step from CF template
fix: made getLoadContext optional for arc handler

Co-authored-by: Logan McAnsh <logan@mcan.sh>
  • Loading branch information
jacob-ebey and mcansh committed Jan 22, 2022
1 parent 01bf570 commit 505d087
Show file tree
Hide file tree
Showing 65 changed files with 939 additions and 592 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
node_modules/
yarn-error.log

/jacob
/MICHAEL_TODOS.md
/fixtures/cloudflare
/fixtures/test
Expand Down
11 changes: 11 additions & 0 deletions fixtures/gists-app/app/redirects.server.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { createCookieSessionStorage } from "remix";

export let sessionStorage = createCookieSessionStorage({
cookie: {
name: "redirectslogin",
path: "/",
httpOnly: true,
sameSite: true,
secure: process.env.NODE_ENV !== "development"
}
});
11 changes: 1 addition & 10 deletions fixtures/gists-app/app/routes/redirects/login.jsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
import {
redirect,
createCookieSessionStorage,
json,
Form,
useLoaderData
} from "remix";

let sessionStorage = createCookieSessionStorage({
cookie: {
name: "redirectslogin",
path: "/",
httpOnly: true,
sameSite: true,
secure: process.env.NODE_ENV !== "development"
}
});
import { sessionStorage } from "~/redirects.server";

export let action = async ({ request }) => {
let session = await sessionStorage.getSession(request.headers.get("Cookie"));
Expand Down
2 changes: 1 addition & 1 deletion fixtures/gists-app/app/routes/resources/settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { LoaderFunction } from "remix";
import { Form, json, useLoaderData, useTransition } from "remix";
import { Link } from "remix";

import { defaultStyles, sessionStorage } from "./theme-css";
import { defaultStyles, sessionStorage } from "~/themes.server";

export let handle = {
breadcrumb: () => <Link to="/resources">Resources</Link>
Expand Down
21 changes: 1 addition & 20 deletions fixtures/gists-app/app/routes/resources/theme-css.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,7 @@
import type { ActionFunction, LoaderFunction } from "remix";
import { redirect } from "remix";
import { createCookieSessionStorage } from "remix";

export let sessionStorage = createCookieSessionStorage({
cookie: {
name: "theme-css",
secrets: ["fjdlafjdkla"]
}
});

export let defaultStyles: Record<string, string> = {
"--nc-tx-1": "#ffffff",
"--nc-tx-2": "#eeeeee",
"--nc-bg-1": "#000000",
"--nc-bg-2": "#111111",
"--nc-bg-3": "#222222",
"--nc-lk-1": "#3291FF",
"--nc-lk-2": "#0070F3",
"--nc-lk-tx": "#FFFFFF",
"--nc-ac-1": "#7928CA",
"--nc-ac-tx": "#FFFFFF"
};
import { defaultStyles, sessionStorage } from "~/themes.server";

export let action: ActionFunction = async ({ request }) => {
let formData = new URLSearchParams(await request.text());
Expand Down
21 changes: 21 additions & 0 deletions fixtures/gists-app/app/themes.server.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { createCookieSessionStorage } from "remix";

export let sessionStorage = createCookieSessionStorage({
cookie: {
name: "theme-css",
secrets: ["fjdlafjdkla"]
}
});

export let defaultStyles: Record<string, string> = {
"--nc-tx-1": "#ffffff",
"--nc-tx-2": "#eeeeee",
"--nc-bg-1": "#000000",
"--nc-bg-2": "#111111",
"--nc-bg-3": "#222222",
"--nc-lk-1": "#3291FF",
"--nc-lk-2": "#0070F3",
"--nc-lk-tx": "#FFFFFF",
"--nc-ac-1": "#7928CA",
"--nc-ac-tx": "#FFFFFF"
};
2 changes: 1 addition & 1 deletion fixtures/gists-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"predev": "yarn run install_remix",
"dev": "pm2-dev pm2.config.js",
"prestart": "yarn run install_remix",
"start": "node server.js",
"start": "node ./build",
"preroutes": "yarn run install_remix",
"routes": "node node_modules/@remix-run/dev/cli.js routes"
},
Expand Down
1 change: 1 addition & 0 deletions fixtures/gists-app/remix.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module.exports = {
serverBuildDirectory: "./build",
devServerPort: 8002,
ignoredRouteFiles: [".*", "blargh.ts"],
server: "./server.js",

mdx: async filename => {
const [rehypeHighlight, remarkToc] = await Promise.all([
Expand Down
2 changes: 1 addition & 1 deletion fixtures/gists-app/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ if (process.env.NODE_ENV !== "production" && process.env.NODE_ENV !== "test") {
app.all(
"*",
createRequestHandler({
build: require("./build"),
build: require("@remix-run/dev/server-build"),
getLoadContext() {
return { userId: 4 };
}
Expand Down
3 changes: 3 additions & 0 deletions packages/create-remix/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ async function createApp({ projectDir, lang, server, install }: CreateAppArgs) {

// merge package.jsons
let appPkg = require(path.join(sharedTemplate, "package.json"));
appPkg.scripts = appPkg.scripts || {};
appPkg.dependencies = appPkg.dependencies || {};
appPkg.devDependencies = appPkg.devDependencies || {};
let serverPkg = require(path.join(serverTemplate, "package.json"));
["dependencies", "devDependencies", "scripts"].forEach(key => {
Object.assign(appPkg[key], serverPkg[key]);
Expand Down
4 changes: 0 additions & 4 deletions packages/create-remix/templates/_shared_js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
"name": "remix-app-template-js",
"description": "",
"license": "",
"scripts": {
"build": "remix build",
"dev": "remix watch"
},
"dependencies": {
"@remix-run/react": "*",
"react": "^17.0.2",
Expand Down
4 changes: 0 additions & 4 deletions packages/create-remix/templates/_shared_js/remix.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,5 @@
* @type {import('@remix-run/dev/config').AppConfig}
*/
module.exports = {
appDirectory: "app",
assetsBuildDirectory: "public/build",
publicPath: "/build/",
serverBuildDirectory: "server/build",
ignoredRouteFiles: [".*"]
};
4 changes: 0 additions & 4 deletions packages/create-remix/templates/_shared_ts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
"name": "remix-app-template",
"description": "",
"license": "",
"scripts": {
"build": "remix build",
"dev": "remix watch"
},
"dependencies": {
"@remix-run/react": "*",
"react": "^17.0.2",
Expand Down
2 changes: 1 addition & 1 deletion packages/create-remix/templates/arc/gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
node_modules

/.cache
/server/build
/server/index.js
/public/build

sam.json
Expand Down
14 changes: 10 additions & 4 deletions packages/create-remix/templates/arc/package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
{
"scripts": {
"postinstall": "remix setup node",
"build": "remix build",
"dev": "remix watch",
"start": "arc sandbox"
"build": "cross-env NODE_ENV=production remix build",
"dev:remix": "cross-env NODE_ENV=development remix watch",
"dev:arc": "cross-env NODE_ENV=development arc sandbox",
"dev": "cross-env NODE_ENV=development remix build && run-p dev:*",
"start": "cross-env NODE_ENV=production arc sandbox"
},
"dependencies": {
"@remix-run/architect": "*"
"@remix-run/architect": "*",
"cross-env": "^7.0.3"
},
"devDependencies": {
"npm-run-all": "^4.1.5"
}
}
12 changes: 7 additions & 5 deletions packages/create-remix/templates/arc/remix.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@
* @type {import('@remix-run/dev/config').AppConfig}
*/
module.exports = {
appDirectory: "app",
assetsBuildDirectory: "public/build",
publicPath: "/_static/build/",
serverBuildDirectory: "server/build",
devServerPort: 8002,
serverBuildTarget: "arc",
server: "./server.js",
ignoredRouteFiles: [".*"]
// appDirectory: "app",
// assetsBuildDirectory: "public/build",
// serverBuildPath: "server/index.js",
// publicPath: "/_static/build/",
// devServerPort: 8002
};
7 changes: 7 additions & 0 deletions packages/create-remix/templates/arc/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { createRequestHandler } from "@remix-run/architect";
import * as build from "@remix-run/dev/server-build";

export const handler = createRequestHandler({
build,
mode: process.env.NODE_ENV
});
4 changes: 0 additions & 4 deletions packages/create-remix/templates/arc/server/index.js

This file was deleted.

2 changes: 1 addition & 1 deletion packages/create-remix/templates/cloudflare-pages/gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
node_modules

/.cache
/build
/functions/[[path]].js
/public/build
12 changes: 5 additions & 7 deletions packages/create-remix/templates/cloudflare-pages/package.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
{
"main": "dist/worker.js",
"scripts": {
"postinstall": "remix setup cloudflare-pages",
"build": "cross-env NODE_ENV=production remix build",
"dev:remix": "remix watch",
"dev:wrangler": "wrangler pages dev ./public --watch ./build",
"dev": "cross-env NODE_ENV=development run-p dev:*",
"start": "npm run dev:wrangler"
"dev:remix": "cross-env NODE_ENV=development remix watch",
"dev:wrangler": "cross-env NODE_ENV=development wrangler pages dev ./public",
"dev": "cross-env NODE_ENV=development remix build && run-p dev:*",
"start": "cross-env NODE_ENV=production npm run dev:wrangler"
},
"dependencies": {
"@remix-run/cloudflare-pages": "*"
},
"devDependencies": {
"@cloudflare/workers-types": "^3.2.0",
"cross-env": "^7.0.3",
"esbuild": "0.13.14",
"npm-run-all": "^4.1.5",
"wrangler": "alpha"
"wrangler": "beta"
}
}
13 changes: 7 additions & 6 deletions packages/create-remix/templates/cloudflare-pages/remix.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
* @type {import('@remix-run/dev/config').AppConfig}
*/
module.exports = {
appDirectory: "app",
assetsBuildDirectory: "public/build",
publicPath: "/build/",
serverModuleFormat: "esm",
serverPlatform: "neutral",
serverBuildDirectory: "build",
serverBuildTarget: "cloudflare-pages",
server: "./server.js",
devServerBroadcastDelay: 1000,
ignoredRouteFiles: [".*"]
// appDirectory: "app",
// assetsBuildDirectory: "public/build",
// serverBuildPath: "functions/[[path]].js",
// publicPath: "/build/",
// devServerPort: 8002
};
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { createPagesFunctionHandler } from "@remix-run/cloudflare-pages";

// @ts-ignore
import * as build from "../build";
import * as build from "@remix-run/dev/server-build";

const handleRequest = createPagesFunctionHandler({
build
build,
mode: process.env.NODE_ENV,
getLoadContext: context => context.env
});

export function onRequest(context) {
Expand Down
17 changes: 9 additions & 8 deletions packages/create-remix/templates/cloudflare-workers/package.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
{
"main": "dist/worker.js",
"main": "build/index.js",
"scripts": {
"postinstall": "remix setup cloudflare-workers",
"build:worker": "esbuild --define:process.env.NODE_ENV='\"production\"' --minify --bundle --sourcemap --outdir=dist ./worker",
"build": "remix build",
"dev": "remix watch",
"dev:worker": "esbuild --define:process.env.NODE_ENV='\"development\"' --bundle --sourcemap --outdir=dist ./worker",
"start": "miniflare --build-command \"npm run dev:worker\" --watch",
"build": "cross-env NODE_ENV=production remix build",
"dev:remix": "cross-env NODE_ENV=development remix watch",
"dev:miniflare": "cross-env NODE_ENV=development miniflare ./build/index.js --watch",
"dev": "cross-env NODE_ENV=development remix build && run-p dev:*",
"start": "cross-env NODE_ENV=production miniflare ./build/index.js",
"deploy": "npm run build && wrangler publish"
},
"dependencies": {
"@remix-run/cloudflare-workers": "*"
},
"devDependencies": {
"@cloudflare/workers-types": "^2.2.2",
"esbuild": "0.13.14",
"miniflare": "2.0.0-next.3"
"cross-env": "^7.0.3",
"miniflare": "^2.1.0",
"npm-run-all": "^4.1.5"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
* @type {import('@remix-run/dev/config').AppConfig}
*/
module.exports = {
appDirectory: "app",
assetsBuildDirectory: "public/build",
publicPath: "/build/",
serverModuleFormat: "esm",
serverPlatform: "neutral",
serverBuildDirectory: "build",
serverBuildTarget: "cloudflare-workers",
server: "./server.js",
devServerBroadcastDelay: 1000,
ignoredRouteFiles: [".*"]
// appDirectory: "app",
// assetsBuildDirectory: "public/build",
// serverBuildPath: "build/index.js",
// publicPath: "/build/",
// devServerPort: 8002
};
7 changes: 7 additions & 0 deletions packages/create-remix/templates/cloudflare-workers/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { createEventHandler } from "@remix-run/cloudflare-workers";
import * as build from "@remix-run/dev/server-build";

addEventListener(
"fetch",
createEventHandler({ build, mode: process.env.NODE_ENV })
);

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ bucket = "./public"
entry-point = "."

[build]
command = "npm run build:worker"
watch_dir = "build/index.js"
command = "npm run build"

[build.upload]
format="service-worker"
14 changes: 10 additions & 4 deletions packages/create-remix/templates/express/package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
{
"scripts": {
"postinstall": "remix setup node",
"dev": "remix watch",
"start": "cross-env NODE_ENV=production node server/index.js",
"start:dev": "cross-env NODE_ENV=development node server/index.js"
"build": "cross-env NODE_ENV=production remix build",
"dev": "cross-env NODE_ENV=development remix build && run-p dev:*",
"dev:remix": "cross-env NODE_ENV=development remix watch",
"dev:node": "cross-env NODE_ENV=development nodemon ./build/index.js",
"start": "cross-env NODE_ENV=production node ./build/index.js"
},
"dependencies": {
"@remix-run/express": "*",
"compression": "^1.7.4",
"cross-env": "^7.0.3",
"express": "^4.17.1",
"morgan": "^1.10.0"
"morgan": "^1.10.0",
"npm-run-all": "^4.1.5"
},
"devDependencies": {
"nodemon": "^2.0.15"
}
}

0 comments on commit 505d087

Please sign in to comment.