This article is incompatible with recent Remix changes. Contact your account manager or our sales department at 1 (866) 200 - 5463 to get started with Remix and the latest version of Edgio Applications.
This guide shows you how to deploy a Remix application to Edgio.
Example
Prerequisites
Setup requires:
- An Edgio account. Sign up for free.
- An Edgio property. Learn how to create a property.
- Node.js. View supported versions and installation steps.
- Edgio CLI.
Install the Edgio CLI
If you have not already done so, install the Edgio CLI.
Bash
1npm i -g @layer0/cli@latest
Create a new Remix app
If you don’t already have a Remix app, create one by running the following:
Bash
1npx create-remix@latest2# Choose express server3cd project-name
You can verify your app works by running it locally with:
Bash
1npm run dev
Configuring your Remix app for Edgio
Initialize your project
In the root directory of your project run
0 init
:Bash
10 init
This will automatically update your
package.json
and add all of the required Edgio dependencies and files to your project. These include:- The
@layer0/core
package - Allows you to declare routes and deploy your application on Edgio - The
@layer0/prefetch
package - Allows you to configure a service worker to prefetch and cache pages to improve browsing speed layer0.config.js
- A configuration file for Edgioroutes.js
- A default routes file that sends all requests to Remix.
Install @layer0/express
Install @layer0/express by running the following:
Bash
1npm install @layer0/express
Update Edgio Configuration
Update
layer0.config.js
at the root of your project to the following:JavaScript
1// This file was automatically added by layer0 deploy.2// You should commit this file to source control.3module.exports = {4 connector: '@layer0/express',5 express: {6 appPath: './server/index.js',7 },8 includeFiles: {9 public: true,10 },11}
Configure the routes
Update
routes.js
at the root of your project to the following:JavaScript
1// This file was added by layer0 init.2// You should commit this file to source control.3const ONE_HOUR = 60 * 604const ONE_DAY = 24 * ONE_HOUR56const { Router } = require('@@layer0/core/router')78module.exports = new Router()9 // Prevent search engine bot(s) from indexing10 // Read more on: https://docs.layer0.co/applications/cookbook#blocking-search-engine-crawlers11 .noIndexPermalink()12 .match('/', ({ cache }) => {13 cache({14 edge: {15 maxAgeSeconds: ONE_DAY,16 },17 browser: false,18 })19 })20 .match('/example-path', ({ cache }) => {21 // other paths22 cache({23 edge: {24 maxAgeSeconds: ONE_DAY,25 },26 browser: false,27 })28 })29 .match('/build/:path*', ({ cache }) => {30 // route build output files through Edgio31 cache({32 edge: {33 maxAgeSeconds: ONE_DAY,34 forcePrivateCaching: true,35 },36 browser: {37 maxAgeSeconds: 0,38 serviceWorkerSeconds: ONE_DAY,39 },40 })41 })42 .fallback(({ renderWithApp }) => renderWithApp())
Refer to the Routing guide for the full syntax of the
routes.js
file and how to configure it for your use case.Run the Remix app locally on Edgio
Create a production build of your app by running the following in your project’s root directory:
Bash
1npm run build
Run Edgio on your local machine:
Bash
10 run --production
Load the site http://127.0.0.1:3000
Deploying
Create a production build of your app by running the following in your project’s root directory:
Bash
1npm run build
Deploy your app to the Sites by running the following command in your project’s root directory:
Bash
10 deploy
Refer to the Deploying guide for more information on the
deploy
command and its options.