一、1. 准备工作:查找构建命令和发布目录
首先,我们需要找到你 Netlify 项目的构建命令和输出目录:
1. 登录仪表板,找到要迁移的项目。
2. 进入 Site configuration(站点配置),选择 Build & deploy(构建与部署)选项。
3. 在 Build settings(构建设置)部分,记录 Build command (构建命令)和 Publish directory(发布目录)的值。
例如:
构建命令:npm run build
发布目录:.next
这些信息将在项目配置中使用。
二、2. 配置迁移:处理重定向和标头
如果你的项目使用了 _redirects 和 _headers 文件或在 netlify.toml 文件中配置了重定向和自定义标头,需要将这些配置迁移到 EdgeOne Makers 的 edgeone.json 文件中。
在迁移之前,我们需要了解你现有的 Netlify 配置,并将其转换为 Makers 可以理解的格式。
以下是两者的对比示例:
Netlify 的 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"
在这个例子中,我们可以看到构建命令、发布目录、重定向规则和自定义标头的配置。
在 EdgeOne 中,我们需要创建一个 edgeone.json 文件来包含这些配置:
{ "buildCommand": "npm run build", "outputDirectory": "build", "redirects": [ { "source": "/articles", "destination": "/blog", "statusCode": 301 } ], "headers": [ { "source": "/*", "headers": [ { "key": "X-Frame-Options", "value": "DENY" }, { "key": "Cache-Control", "value": "max-age=7200" } ] }, { "source": "/assets/*", "headers": [ { "key": "Cache-Control", "value": "max-age=31536000" } ] } ]}
详细的配置选项可以参见 edgeone.json。
三、3. 函数迁移:从 Netlify 到 EdgeOne Makers
两个平台在语法和使用方式上有一些差异。下面将针对 Netlify 与 Makers 的两种函数进行对比:
Netlify Serverless Functions 示例:
export default async (request, context) => { return new Response("Hello, world!")}
Makers Cloud Functions 示例:
// ./cloud-functions/hello.jsexport default function onRequest(context) { return new Response("Hello world");}
Netlify Edge Functions 示例:
export default (request, context) => new Response("Hello world");export const config = { path: "/test" };
Makers Edge Functions 示例:
// ./edge-functions/test.jsexport default function onRequest(context) { return new Response("Hello world");}
主要差异:
1. 函数定义:
1.1 Netlify Serverless Functions 默认导出 async handler;Edge Functions 默认导出 handler(可 async),需显式指定路由 path。
1.2 Makers 使用命名的 onRequest 函数(或 onRequestGet、onRequestPost 等)。
2. 参数:
2.1 Netlify 函数接收 request 和 context 作为分开的参数。
2.2 Makers 函数接收一个 context 对象。
3. 响应方式:
3.1 两者都使用 Response 对象返回响应,这一点是相似的。
4. 运行时环境:
4.1 Netlify 使用 Node.js 运行时与 Deno 运行时。
4.2 Makers 使用 Node.js/Go/Python 等运行时与 Edge 运行时。
迁移建议:
·将默认导出函数改为命名的 onRequest 函数:
// Netlifyexport default async (request, context) => { // 函数体};// EdgeOne Makersexport default function onRequest(context) { // 函数体}
·调整参数使用:
// Netlifyconst { geo } = context;// EdgeOne Makersconst { request } = context;const geo = request.eo.geo;
·保持 Response 对象的使用方式,这部分基本不需要改变。
·检查并调整任何 Netlify 函数特定的 API 使用。Makers Functions 可能不支持某些特有的功能,需要寻找替代方案,可通过社群联系我们。
·文件命名可能需要调整。Netlify 使用 .js、.ts 或 .edge.js 后缀,而 Makers 目前支持 .js、.ts、.cjs、.jsx、.tsx。
注意:说明:
注意:Makers Functions 支持 Cloud Functions 和 Edge Functions,两者在特性上会有些许差异,例如 context 对象,可根据你的具体需求进行选择。
详细的函数使用可以参见 Makers Functions。
四、4. 项目部署:在 EdgeOne Makers 上创建新项目
准备工作完成后,在 Makers 上创建并部署项目:
1. 登录 腾讯云控制台,进入 Makers 服务。
2. 单击创建项目,选择你的 GitHub 仓库。
3. 在项目配置中,填入之前记录的构建命令和发布目录。
4. 单击开始部署,Makers 将自动构建和部署你的项目。
五、5. 域名配置:添加自定义域名
Netlify 和 Makers 在域名配置方面有一些区别:
1. 在 Makers 添加域名:
1.1 在控制台中,为你的项目添加相同的自定义域名。
2. 更新 DNS 记录:
2.1 如果你使用 Netlify DNS,需要将域名转移到另一个 DNS 提供商。
2.2 如果使用外部 DNS,只需更新现有记录:
2.2.1 将 A 记录或 ALIAS 记录改为 CNAME 记录。
2.2.2 将 CNAME 记录指向 Makers 提供的域名。
3. 验证 DNS 设置:
3.1 使用 dig 或在线 DNS 查询工具确认 DNS 更改已生效。
4. 等待 HTTPS 证书配置:
4.1 Makers 将自动为你的域名配置 HTTPS 证书。
详细的域名添加过程可以参见 域名管理 文档。
通过完成上述步骤,你已经成功将 Netlify 项目迁移到了 EdgeOne Makers。两个平台在某些方面有相似之处,但在强大的基础设施上,我们针对 Makers 产品特点进行了智能刷新预热等优化,提供开箱即用的使用体验。此外,Makers 在公测阶段相对竞品限制更少,为开发者提供更多选择的灵活性。在客户支持上,我们提供更及时的响应,致力于为开发者打造优质的产品体验。
如果你在迁移过程中遇到任何问题,欢迎参见 EdgeOne Makers 的 产品文档。