Buildpacks, builders and stack images for Node.js applications that use Yarn workspaces.
The images are published in GitHub Container Registry. They are public and can be used with pack, CI jobs, or any tool that accepts Cloud Native Buildpacks builder and buildpack images.
These examples assume a Yarn zero-install Plug'n'Play workspace with a start-image script in package.json.
Use Node 26 for new applications:
pack build my-app \
--builder ghcr.io/atls/builder-base:26 \
--buildpack ghcr.io/atls/buildpack-yarn-workspace:26Use Node 24 when the application must stay on Node 24:
pack build my-app \
--builder ghcr.io/atls/builder-base:24 \
--buildpack ghcr.io/atls/buildpack-yarn-workspace:24The builder provides the Node stack and CNB lifecycle. The buildpack prepares a zero-install Yarn workspace application for build and launch.
| Image | Use it for |
|---|---|
| ghcr.io/atls/builder-base | Building application images with the ATLS Node stack. |
| ghcr.io/atls/buildpack-yarn-workspace | Building Yarn workspace applications. |
| ghcr.io/atls/stack-node | Stack base, build and run images used by the builder. |
All release images are published for linux/amd64 and linux/arm64.
Use Node-line tags for normal application builds:
- ghcr.io/atls/builder-base:26
- ghcr.io/atls/buildpack-yarn-workspace:26
Available Node lines:
- Node 24
- Node 26
Node-line tags move to the latest published image for that Node line. Use them when an application should receive the current validated builder and buildpack for its Node version.
Use semantic version tags when a rollout needs a fixed buildpack version:
- ghcr.io/atls/buildpack-yarn-workspace:0.2.2
Stack images use role-specific tags:
- ghcr.io/atls/stack-node:base-26
- ghcr.io/atls/stack-node:build-26
- ghcr.io/atls/stack-node:run-26
The same tags exist for Node 24. Tags without a Node suffix currently point to the default Node line, which is Node 26:
- ghcr.io/atls/stack-node:base
- ghcr.io/atls/stack-node:build
- ghcr.io/atls/stack-node:run
For application configuration, prefer explicit Node-line tags such as builder-base:26 and buildpack-yarn-workspace:26.
buildpack-yarn-workspace is the application buildpack for Yarn zero-install Plug'n'Play workspace projects.
The buildpack-specific launch contract is a start-image script in package.json.
For Yarn Plug'n'Play applications, the buildpack prepares launch-time Node options:
- loads .pnp.cjs with --require;
- loads .pnp.loader.mjs with --loader;
- enables source maps.
Because the buildpack owns these launch options, the application launch script can stay simple:
{
"scripts": {
"start-image": "node server.js"
}
}The image start buildpack runs yarn start-image. That script should start the application entrypoint. Do not duplicate Plug'n'Play loader flags in it unless the application intentionally overrides the buildpack behavior.
builder-base is a base builder. It does not make every application buildable by itself.
For Yarn workspace applications, pass both images:
pack build my-app \
--builder ghcr.io/atls/builder-base:26 \
--buildpack ghcr.io/atls/buildpack-yarn-workspace:26Tools that wrap CNB builds should use the same pair: one builder image and one application buildpack image for the selected Node line.
Component buildpacks and extensions are also published in GHCR:
- buildpack-yarn-install
- buildpack-yarn-cache
- buildpack-yarn-workspace-start
- buildpack-require-extension
- buildpack-extension-curl
- buildpack-extension-htop
- buildpack-extension-graphql-hive