Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/orange-ideas-tie.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"create-cloudflare": minor
---

Remove the next-on-pages (Next.js on the Pages platform) option since the package has been deprecated
24 changes: 14 additions & 10 deletions packages/create-cloudflare/e2e/tests/cli/cli.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -635,16 +635,20 @@ describe("Create Cloudflare CLI", () => {
});
});

test("error when trying to create a solid app on Pages", async ({
logStream,
}) => {
const { errors } = await runC3(
["--platform=pages", "--framework=solid", "my-app"],
[],
logStream,
);
expect(errors).toMatch(
/Error: The .*? framework doesn't support the "pages" platform/,
describe("frameworks related", () => {
["solid", "next"].forEach((framework) =>
test(`error when trying to create a ${framework} app on Pages`, async ({
logStream,
}) => {
const { errors } = await runC3(
["--platform=pages", `--framework=${framework}`, "my-app"],
[],
logStream,
);
expect(errors).toMatch(
/Error: The .*? framework doesn't support the "pages" platform/,
);
}),
);
});
});
Expand Down
22 changes: 1 addition & 21 deletions packages/create-cloudflare/e2e/tests/frameworks/test-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -334,27 +334,7 @@ function getFrameworkTestConfig(pm: string): NamedFrameworkTestConfig[] {
nodeCompat: true,
},
{
name: "next:pages",
argv: ["--platform", "pages"],
timeout: LONG_TIMEOUT,
testCommitMessage: true,
verifyDeploy: {
route: "/",
expectedText: "Create Next App",
},
// see https://github.com/cloudflare/next-on-pages/blob/main/packages/next-on-pages/docs/supported.md#operating-systems
unsupportedOSs: ["win32"],
verifyPreview: {
previewArgs: ["--inspector-port=0"],
route: "/",
expectedText: "Create Next App",
},
nodeCompat: true,
flags: ["--yes", "--no-install", "--import-alias", "@/*"],
},
{
name: "next:workers",
argv: ["--platform", "workers"],
name: "next",
timeout: LONG_TIMEOUT,
testCommitMessage: true,
flags: ["--yes", "--import-alias", "@/*"],
Expand Down
75 changes: 68 additions & 7 deletions packages/create-cloudflare/templates/next/c3.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,70 @@
import pages from "./pages/c3";
import workers from "./workers/c3";
import type { MultiPlatformTemplateConfig } from "../../src/templates";
import { brandColor, dim } from "@cloudflare/cli/colors";
import { spinner } from "@cloudflare/cli/interactive";
import { runFrameworkGenerator } from "frameworks/index";
import { readFile, usesTypescript, writeFile } from "helpers/files";
import { installPackages } from "helpers/packages";
import type { TemplateConfig } from "../../src/templates";
import type { C3Context } from "types";

const config: MultiPlatformTemplateConfig = {
displayName: "Next.js",
platformVariants: { pages, workers },
const generate = async (ctx: C3Context) => {
await runFrameworkGenerator(ctx, [ctx.project.name]);
};

const configure = async (ctx: C3Context) => {
await installPackages(["@opennextjs/cloudflare@^1.3.0"], {
startText: "Adding the Cloudflare adapter",
doneText: `${brandColor(`installed`)} @opennextjs/cloudflare)}`,
});

const usesTs = usesTypescript(ctx);

updateNextConfig(usesTs);
};

const updateNextConfig = (usesTs: boolean) => {
const s = spinner();

const configFile = `next.config.${usesTs ? "ts" : "mjs"}`;
s.start(`Updating \`${configFile}\``);

const configContent = readFile(configFile);

const updatedConfigFile =
configContent +
`
// added by create cloudflare to enable calling \`getCloudflareContext()\` in \`next dev\`
import { initOpenNextCloudflareForDev } from '@opennextjs/cloudflare';
initOpenNextCloudflareForDev();
`.replace(/\n\t*/g, "\n");

writeFile(configFile, updatedConfigFile);

s.stop(`${brandColor(`updated`)} ${dim(`\`${configFile}\``)}`);
};
export default config;

const envInterfaceName = "CloudflareEnv";
const typesPath = "./cloudflare-env.d.ts";
export default {
configVersion: 1,
id: "next",
frameworkCli: "create-next-app",
platform: "workers",
displayName: "Next.js",
copyFiles: {
path: "./templates",
},
generate,
configure,
transformPackageJson: async () => ({
scripts: {
deploy: `opennextjs-cloudflare build && opennextjs-cloudflare deploy`,
preview: `opennextjs-cloudflare build && opennextjs-cloudflare preview`,
"cf-typegen": `wrangler types --env-interface ${envInterfaceName} ${typesPath}`,
},
}),
devScript: "dev",
previewScript: "preview",
deployScript: "deploy",
typesPath,
envInterfaceName,
} as TemplateConfig;
67 changes: 0 additions & 67 deletions packages/create-cloudflare/templates/next/pages/README.md

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading
Loading