Skip to content

Commit

Permalink
feat: Update Angular template to version 19
Browse files Browse the repository at this point in the history
This prerelease version 19 includes several developer experience (DX) improvements:
- Introduces a new server routing API
- Portable with no Node.js dependencies
- Supports a "neutral" output format
  • Loading branch information
alan-agius4 committed Oct 14, 2024
1 parent 2e64968 commit f89f3f8
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 76 deletions.
2 changes: 1 addition & 1 deletion packages/create-cloudflare/src/frameworks/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"dependencies": {
"create-astro": "4.8.0",
"create-analog": "1.8.1",
"@angular/create": "18.2.0",
"@angular/create": "19.0.0-next.11",
"create-docusaurus": "3.5.2",
"create-hono": "0.12.0",
"create-next-app": "14.2.5",
Expand Down
16 changes: 13 additions & 3 deletions packages/create-cloudflare/templates/angular/c3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,21 @@ async function updateAppCode() {
writeFile(resolve(appConfigPath), newAppConfig);
s.stop(`${brandColor(`updated`)} ${dim(appConfigPath)}`);

// Update an app server routes file to:
const appServerRoutesPath = "src/app/app.routes.server.ts";
const appRoutes = readFile(resolve(appServerRoutesPath));
const newAppRoutes = appRoutes.replace(
"RenderMode.Prerender",
"RenderMode.Server",
);
writeFile(resolve(appServerRoutesPath), newAppRoutes);
s.stop(`${brandColor(`updated`)} ${dim(appServerRoutesPath)}`);

// Remove unwanted dependencies
s.start(`Updating package.json`);
const packageJsonPath = resolve("package.json");
const packageManifest = readJSON(packageJsonPath);

delete packageManifest["dependencies"]["@angular/ssr"];
delete packageManifest["dependencies"]["express"];
delete packageManifest["devDependencies"]["@types/express"];

Expand All @@ -70,6 +79,8 @@ function updateAngularJson(ctx: C3Context) {
// Update builder
const architectSection = angularJson.projects[ctx.project.name].architect;
architectSection.build.options.outputPath = "dist";
architectSection.build.options.outputMode = "server";
architectSection.build.options.ssr.experimentalPlatform = "neutral";
architectSection.build.options.assets.push("src/_routes.json");

writeFile(resolve("angular.json"), JSON.stringify(angularJson, null, 2));
Expand All @@ -93,8 +104,7 @@ const config: TemplateConfig = {
scripts: {
start: `${npm} run build && wrangler pages dev dist/cloudflare ${await compatDateFlag()} --experimental-local`,
build: `ng build && ${npm} run process`,
process:
"node ./tools/copy-files.mjs && node ./tools/alter-polyfills.mjs",
process: "node ./tools/copy-files.mjs",
deploy: `${npm} run build && wrangler pages deploy dist/cloudflare`,
},
}),
Expand Down
34 changes: 0 additions & 34 deletions packages/create-cloudflare/templates/angular/templates/server.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { AngularAppEngine, createRequestHandler } from '@angular/ssr';

const angularApp = new AngularAppEngine();

/**
* This is a request handler used by the Angular CLI (dev-server and during build).
*/
export const reqHandler = createRequestHandler(async (req) => {
const res = await angularApp.render(req);

return res ?? new Response('Page not found.', { status: 404 });
});


export default { fetch: reqHandler };

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
// Copy the files over so that they can be uploaded by the pages publish command.
import fs from "node:fs";
import { join } from "node:path";
import { client, cloudflare, ssr, worker } from "./paths.mjs";
import { join, resolve } from "node:path";
import { fileURLToPath } from "node:url";

const root = resolve(fileURLToPath(import.meta.url), "../../");
const client = resolve(root, "dist/browser");
const ssr = resolve(root, "dist/server");
const cloudflare = resolve(root, "dist/cloudflare");
const worker = resolve(cloudflare, "_worker.js");

fs.cpSync(client, cloudflare, { recursive: true });
fs.cpSync(ssr, worker, { recursive: true });
Expand Down

This file was deleted.

0 comments on commit f89f3f8

Please sign in to comment.