Files
Michael BiancoandGitHub 14a60ffdf8 feat(node): nx support (#606)
* feat(example): add node-nx-next workspace scaffold

- Initialize an Nx workspace with a Next.js application using pnpm.
- Configure workspace tooling including TypeScript, Prettier, and ESLint.
- Include a generation script to automate the workspace setup process.

Generated-by: aiautocommit

* feat(node): add BuildScriptContains helper to PackageJson

Generated-by: aiautocommit

* feat(node): add support for Nx workspaces with Next.js

- Implement Nx workspace detection and package resolution.
- Enable automatic Nx build commands when no root build script is detected.
- Add RAILPACK_NX_APP environment variable to support selecting specific apps in multi-app workspaces.
- Refactor Next.js detection logic to better support monorepo and Nx-inferred architectures.
- Include unit tests for Nx workspace detection and build/start command generation.

Generated-by: aiautocommit

* docs: add documentation for Nx monorepo support

- Explain how Railpack handles Nx workspaces, including automatic detection and support for inferred tasks.
- Document the new `RAILPACK_NX_APP` configuration variable to target specific apps in multi-app workspaces.
- Detail the build and start behavior for Next.js applications within an Nx context.

Generated-by: aiautocommit

* test: add snapshot for Nx Node.js and Next.js example

Generated-by: aiautocommit

* chore: bump railpack images and set version to dev

- Update builder and runtime images to mise-2026.7.7
- Include RAILPACK_VERSION environment variable in build plan

Generated-by: aiautocommit
2026-07-21 12:50:43 -06:00

26 lines
555 B
Bash
Executable File

#!/usr/bin/env zsh
root="${0:A:h}"
scratch="$root/tmp/node-nx-next"
rm -rf "$scratch"
mkdir -p "$scratch"
(
cd "$scratch"
pnpm dlx create-nx-workspace@latest . \
--preset=next \
--workspaces \
--appName=web \
--nextAppDir=true \
--pm=pnpm \
--nxCloud=skip \
--interactive=false \
--skipGit \
--e2eTestRunner=none \
--unitTestRunner=none
)
# create-nx-workspace requires an empty target; sync into the example dir.
rsync -a --delete --exclude=generate.sh --exclude=tmp/ "$scratch/" "$root/"
rm -rf "$scratch"