.NET Aspire Bun hosting

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.

Bun is a modern, fast, and lightweight framework for building web applications with TypeScript. The .NET Aspire Bun hosting integration allows you to host Bun applications in your .NET Aspire app host project, and provide it to other resources in your application.

Hosting integration

The Bun hosting integration models a Bun application as the Aspire.Hosting.ApplicationModel.BunAppResource type. To access this type and APIs that allow you to add it to your app host project, install the 📦 CommunityToolkit.Aspire.Hosting.Bun NuGet package in the app host project.

This integration expects that the Bun executable has already been installed on the host machine, and that it's available in the system path.

dotnet add package CommunityToolkit.Aspire.Hosting.Bun

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

Add a Bun resource

In your app host project, call the Aspire.Hosting.BunAppExtensions.AddBunApp on the builder instance to add a Bun application resource as shown in the following example:

var builder = DistributedApplication.CreateBuilder(args);

var api = builder.AddBunApp("api")
                 .WithHttpEndpoint(env: "PORT");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(api);

// After adding all resources, run the app...

By default the working directory of the application will be a sibling folder to the app host matching the name provided to the resource, and the entrypoint will be :::no-loc text="index.ts"::. Both of these can be customized by passing additional parameters to the AddBunApp method.

var api = builder.AddBunApp("api", "../api-service", "start")
    .WithHttpEndpoint(env: "PORT");

The Bun application can be added as a reference to other resources in the app host project.

Ensuring packages are installed

To ensure that the Bun application has all the dependencies installed as defined in the lockfile, you can use the Aspire.Hosting.BunAppExtensions.WithBunPackageInstaller method to ensure that package installation is run before the application is started.

var api = builder.AddBunApp("api")
                 .WithHttpEndpoint(env: "PORT")
                 .WithBunPackageInstaller();

See also