.NET Aspire Azure Static Web Apps emulator integration

Includes: Hosting integration not Client integration

Note

This integration is part of the .NET Aspire Community Toolkit and isn't officially supported by the .NET Aspire team.

In this article, you learn how to use the .NET Aspire Azure Static Web Apps emulator hosting integration to run Azure Static Web Apps locally using the emulator. The emulator provides support for proxying both the static frontend and the API backend using resources defined in the app host.

This integration requires the Azure Static Web Apps CLI to run, and only supports hosting the emulator for local development, not deploying to Azure Static Web Apps.

Hosting integration

To get started with the .NET Aspire Azure Static Web Apps emulator hosting integration, install the 📦 CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps NuGet package in the AppHost project.

dotnet add package CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps

For more information, see dotnet add package or Manage package dependencies in .NET applications.

Example usage

In the Program.cs file of your app host project, define the backend and frontend resources. Then, call the AddSwaEmulator method to create the emulator and pass the resources using the WithAppResource and WithApiResource methods.

var builder = DistributedApplication.CreateBuilder(args);

// Define the API resource
var api = builder.AddProject<Projects.Aspire_CommunityToolkit_StaticWebApps_ApiApp>("api");

// Define the frontend resource
var web = builder
    .AddNpmApp("web", Path.Combine("..", "CommunityToolkit.Aspire.StaticWebApps.WebApp"), "dev")
    .WithHttpEndpoint(env: "PORT")
    .WithExternalHttpEndpoints();

// Create a SWA emulator with the frontend and API resources
_ = builder
    .AddSwaEmulator("swa")
    .WithAppResource(web)
    .WithApiResource(api);

builder.Build().Run();

The preceding code defines the API and frontend resources and creates an emulator with the resources. The emulator is then started using the Run method.

See also