Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
@netlify/angular-runtime
Advanced tools
Netlify Angular Runtime - Run Angular seamlessly on Netlify.
This build plugin implements Angular Support on Netlify.
Request
and Context
during Server-Side RenderingNetlify automatically detects Angular projects and sets up the latest version of this plugin.
There's no further configuration needed from Netlify users.
If you are using Server-Side Rendering you will need to install Angular Runtime in your Angular project to be able to import required utilities to successfully deploy request handler to Netlify. See Manual Installation for installations details. See Request handling for more information about request handler.
If you need to pin this plugin to a specific version or if you are using Server-Side Rendering with Angular 19, you will need to install the plugin manually.
Install it via your package manager:
npm install -D @netlify/angular-runtime
# or
yarn add -D @netlify/angular-runtime
Request
and Context
during Server-Side RenderingDuring server-side rendering (SSR), you can access the incoming Request
object and the Netlify-specific Context
object via providers:
import type { Context } from "@netlify/edge-functions"
export class FooComponent {
constructor(
// ...
@Inject('netlify.request') @Optional() request?: Request,
@Inject('netlify.context') @Optional() context?: Context,
) {
console.log(`Rendering Foo for path ${request?.url} from location ${context?.geo?.city}`)
// ...
}
}
Keep in mind that these will not be available on the client-side or during prerendering.
To test this in local development, run your Angular project using netlify serve
:
netlify serve
If you opt into the App Engine Developer Preview accessing Request
and Context
objects is streamlined. Instead of custom Netlify prefixed providers, you should use the standardized injection tokens for those provided by @angular/core
instead:
+import { REQUEST, REQUEST_CONTEXT } from '@angular/core'
import type { Context } from "@netlify/edge-functions"
export class FooComponent {
constructor(
// ...
- @Inject('netlify.request') @Optional() request?: Request,
- @Inject('netlify.context') @Optional() context?: Context,
+ @Inject(REQUEST) @Optional() request?: Request,
+ @Inject(REQUEST_CONTEXT) @Optional() context?: Context,
) {
console.log(`Rendering Foo for path ${request?.url} from location ${context?.geo?.city}`)
// ...
}
}
Starting with Angular@19. The build plugin makes use of the server.ts
file to handle requests. The default Angular scaffolding generates incompatible code for Netlify so the build plugin will swap it for compatible server.ts
file automatically if it detects default version being used.
Make sure you have @netlify/angular-runtime
version 2.2.0 or later installed in your project. Netlify compatible server.ts
file imports utilities from this package and Angular Compiler need to be able to resolve it and it can only do that if it's installed in your project and not when it's auto-installed by Netlify.
If you need to customize the request handling, you can do so by copying one of code snippets below to your server.ts
file.
If you did not opt into the App Engine Developer Preview:
import { CommonEngine } from '@angular/ssr/node'
import { render } from '@netlify/angular-runtime/common-engine'
const commonEngine = new CommonEngine()
export async function netlifyCommonEngineHandler(request: Request, context: any): Promise<Response> {
// Example API endpoints can be defined here.
// Uncomment and define endpoints as necessary.
// const pathname = new URL(request.url).pathname;
// if (pathname = '/api/hello') {
// return Response.json({ message: 'Hello from the API' });
// }
return await render(commonEngine)
}
If you opted into the App Engine Developer Preview:
import { AngularAppEngine, createRequestHandler } from '@angular/ssr'
import { getContext } from '@netlify/angular-runtime/context'
const angularAppEngine = new AngularAppEngine()
export async function netlifyAppEngineHandler(request: Request): Promise<Response> {
const context = getContext()
// Example API endpoints can be defined here.
// Uncomment and define endpoints as necessary.
// const pathname = new URL(request.url).pathname;
// if (pathname = '/api/hello') {
// return Response.json({ message: 'Hello from the API' });
// }
const result = await angularAppEngine.handle(request, context)
return result || new Response('Not found', { status: 404 })
}
/**
* The request handler used by the Angular CLI (dev-server and during build).
*/
export const reqHandler = createRequestHandler(netlifyAppEngineHandler)
The server.ts
file that's part of the Angular scaffolding is meant for deploying to a VM, and is not compatible with this Netlify build plugin for Angular@17 and Angular@18. If you applied changes to that file, you'll need to replicate them in an Edge Function. See (#135)[https://github.com/netlify/angular-runtime/issues/135] for an example.
To use the Angular Runtime while building and deploying with the CLI, you need to have netlify-cli v17.0.0
installed (or a later version).
Please also make sure to use ntl deploy --build
(rather than ntl build && ntl deploy
).
We love to hear from you so if you have questions, comments or find a bug in the project, let us know! You can either:
We welcome contributions ❤️ - see the CONTRIBUTING.md file for details.
This project is licensed under the MIT License - see the LICENSE.md file for details
FAQs
Netlify Angular Runtime - Run Angular seamlessly on Netlify.
The npm package @netlify/angular-runtime receives a total of 1,262 weekly downloads. As such, @netlify/angular-runtime popularity was classified as popular.
We found that @netlify/angular-runtime demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.