This guide helps you smoothly migrate your Netlify project to EdgeOne Makers.
Preparations: Search Build Command and Publish Directory
Start by finding your Netlify project's build command and output directory:
1. Log in to the dashboard and find the project to migrate.
2. Enter Site configuration, select the Build and deploy option.
3. In the Build settings section, note the values of Build command and Publish directory.
Example:
npm run build
Publish directory: .next
This information will be used in project configuration.
2.Configuration Migration: Handle Redirects and Headers
If your project uses _redirects and _headers files or configures redirects and custom headers in the netlify.toml file, migrate these configurations to the edgeone.json file in EdgeOne Makers.
Before migration, we need to understand your existing Netlify configuration and convert it into a format that Makers can understand.
The following is a comparison example of both:
Netlify configuration in netlify.toml
[build]
command = "npm run build"
publish = "build"
[[redirects]]
from = "/articles"
to = "/blogs"
status = 301
[[headers]]
source = "/*"
[[headers.headers]]
key = "X-Frame-Options"
value = "DENY"
[[headers.headers]]
key = "Cache-Control"
value = "max-age=7200"
[[headers]]
source = "/assets/*"
[[headers.headers]]
key = "Cache-Control"
value = "max-age=31536000"
In this example, we can see the build command, publish directory, redirect rules and custom headers configuration.
In EdgeOne Makers, create an edgeone.json file to include these configurations:
1.1 Netlify Serverless Functions export async handler by default; Edge Functions export handler by default (can be async) and require explicitly specifying the route path.
1.2 Makers uses named onRequest functions (such as onRequestGet, onRequestPost, and so on).
2. Parameters:
2.1 Netlify functions receive request and context as separate parameters.
2.2 Makers functions receive a context object.
3. Response method:
3.1 Both use the Response object to return responses, which is similar.
4. Runtime environment:
4.1 Netlify uses Node.js runtime and Deno runtime.
4.2 Node.js/Go/Python runtimes and Edge runtime are used in Makers.
Migration suggestions:
Change the default exported function to a named onRequest function
// Netlify
exportdefaultasync(request, context)=>{
// function body
};
// EdgeOne Makers
exportdefaultfunctiononRequest(context){
// function body
}
Adjust parameter usage
// Netlify
const{ geo }= context;
// EdgeOne Makers
const{ request }= context;
const geo = request.eo.geo;
Keep the usage of the Response object. This part basically does not need to change.
Check and adjust any Netlify function-specific API usage. Makers Functions may not support certain specific features. You need to find alternative solutions and can contact us through the community.
File naming may need to be adjusted. Netlify uses suffixes such as .js, .ts, or .edge.js, while Makers currently supports .js, .ts, .cjs, .jsx, and .tsx.
Note:
Makers Functions supports both Cloud Functions and Edge Functions. These two have some differences in features, such as the context object. You can choose between them based on your specific requirements.
By completing the steps above, you have successfully migrated your Netlify project to EdgeOne Makers. The two platforms share similarities in some aspects. However, leveraging our robust infrastructure, we have implemented optimizations such as intelligent refresh and pre-warming tailored to Makers' product features, delivering an out-of-the-box user experience. Furthermore, during the public beta phase, Makers imposes fewer restrictions compared to competitors, offering developers greater flexibility and more choices. In terms of customer support, we provide more responsive assistance and are committed to creating a superior product experience for developers.
If you encounter any issues during the migration, refer to the EdgeOne Makers official documentation.