Compare commits

...

507 Commits

Author SHA1 Message Date
Jack Hsu 7c230d5954 docs(misc): complete DOC-185 - add missing pages and fix all redirects
Add missing Nx Cloud documentation pages and create dynamic route handlers for API docs.
Fix all 58 TODO: missing comments in redirect rules (reduced to 0).

Files added:
- astro-docs/src/content/docs/reference/Nx Cloud/config.mdoc
- astro-docs/src/content/docs/reference/Nx Cloud/release-notes.mdoc
- astro-docs/src/content/docs/guides/Nx Cloud/optimize-your-ttg.mdoc
- astro-docs/src/pages/reference/nx/[...slug].astro
- astro-docs/src/pages/reference/plugin/[...slug].astro
- astro-docs/src/pages/reference/web/[...slug].astro
- astro-docs/src/pages/reference/workspace/[...slug].astro

Fixes applied:
- Convert {% tab %} to {% tabitem %} for Starlight compatibility
- Replace {% fileName="..." %} with // filename comments
- Remove duplicate h1 headers (frontmatter title auto-renders)
- Update all redirect rules to point to correct paths
- Add anchors for specific items (e.g., #run-commands)

Redirects fixed (total 54):
- 8 CI/concepts pages now point to correct locations
- 46 API doc pages now use dynamic routes

Missing pages returned 404s and redirected to generic /docs/reference

All pages are now accessible at their correct URLs with proper content

Fixes DOC-185
2025-09-15 09:58:21 -04:00
Caleb Ukle 12b472548a docs(nx-dev): add astro sitemap to nx.dev (#32709)
see new entry here:
https://nx-dev-git-cu-doc-155-sitemaps-nrwl.vercel.app/sitemap.xml as
exmaple
Fixes DOC-155
2025-09-12 07:47:23 -05:00
Jack Hsu b9c9054903 chore(repo): add Slack notifications for canary publish status (#32707)
This PR adds notification through Slack when the canary release fails,
so that we are alerted to errors earlier.

Closes NXC-3131
2025-09-12 08:20:44 -04:00
Caleb Ukle 3dda99e4a6 fix(nx-dev): correctly link to url fragments for devkit (#32565)
switch to making typedoc to the rendering and then pull in the generated
file contents instead of manually parsing the reflection metadata.

Fixes: DOC-63

---------

Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-09-12 08:09:02 -04:00
Jason Jean cfc03a2a9c chore(repo): update nx to 21.6.1-beta.1 (#32702)
Updating Nx from 21.5.1-beta.5 to 21.6.1-beta.1

---------

Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-09-11 14:04:44 -04:00
Jack Hsu c90fee04e0 docs(misc): add sidebar icons for Technologies section (#32698)
Add SVG icons to the Technologies section sidebar items to improve
visual hierarchy and navigation. Icons are displayed next to technology
labels like TypeScript, Angular, React, Vue, Node.js, Java, etc.

`Sidebar` is now using a custom `SidebarSublist` that uses `data-icon`
(if it exists) to render the SVG images. A middleware is used since
`attrs` cannot be set on sidebar items with children. Alternatively, we
could cast the sidebar config to avoid type errors.

<img width="746" height="410" alt="image"
src="https://github.com/user-attachments/assets/4da0385b-e38b-4a58-b83f-19c517c79bac"
/>

<img width="529" height="509" alt="image"
src="https://github.com/user-attachments/assets/f9c00af7-5ed6-40dc-b99c-6ef78ebdd5ba"
/>


Closes #DOC-197
2025-09-11 13:32:03 -04:00
Jack Hsu 3695fc9067 docs(misc): add CTA buttons to header matching Next.js implementation (#32687)
The astro-docs header lacks the CTA buttons (Contact and Login) that are
present in the Next.js version, missing important navigation elements
for user engagement.

Added Contact and Login buttons to the astro-docs header with responsive
design:
- Desktop (≥1280px): CTA buttons visible in header
- Mobile (<1280px): CTA buttons appear in mobile menu at bottom
- Proper element priority to prevent overflow: Theme switcher (always
visible) > CTAs > Social icons
- Visual ordering: CTA buttons, social icons, divider, theme switcher


https://www.loom.com/share/34feb737d11342b19f3ef2df0174a5dc?fromJoinRequest=true

Closes DOC-142
2025-09-11 13:07:02 -04:00
Caleb Ukle 111a94304a docs(nx-dev): update CTA variants (#32670)
add `simple` variant to CTA markdoc component and make CTA in tutorials
to the point.
2025-09-11 17:03:06 +00:00
Craigory Coppola d81861d4aa fix(repo): move codeql to yml based config s.t. it runs properly on forks (#32659)
## Current Behavior
We are using the default codeql setup, which refuses to run on PRs from
forks

## Expected Behavior
We use the yml based codeql setup, which should run correctly

> [!IMPORTANT]  
> This is only the first half of this effort. After this is merged, PRs
will need to be rebased and the repo will need a settings update from
@FrozenPandaz
2025-09-11 12:45:53 -04:00
Philip Fulcher 7534d1dafb docs(nx-dev): add september webinar (#32694) 2025-09-11 10:54:50 -04:00
Philip Fulcher b86f9afb93 fix(nx-dev): correct courses page og image (#32700) 2025-09-11 10:53:29 -04:00
Leosvel Pérez Espinosa 555c69caf4 fix(core): exit fork process and children when ipc connection closes (#32681)
Fixes orphaned `fork.js` processes that occur when the parent Rust
PseudoTerminal process terminates faster than the fork process can
complete its cleanup, causing the fork to hang during Node.js socket
cleanup.
2025-09-11 10:00:19 -04:00
Omer dc901917bb feat(rspack): respect deleteOutputPath option in rspack executor (#32609)
- Add deleteOutputPath option to rspack executor schema
- Modify rspack executor to only clean output directory when
deleteOutputPath is not explicitly set to false
- This aligns rspack executor behavior with webpack executor and allows
users to control output cleaning
- Fixes issue where rspack.output.clean configuration was being bypassed

Fixes #32015

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-09-11 08:58:45 -04:00
Colum Ferry 980573a515 feat(docker): add env var for providing docker registry (#32676)
## Current Behavior
There is no method for overriding the repo config for Container Registry
and Repository Name per environment.

## Expected Behavior
Allow an environment variable `NX_DOCKER_IMAGE_REF` to be set to modify
the full image reference

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-09-11 08:07:38 -04:00
MaxKless 7b9b42b3c3 fix(core): detect vscode insiders as separate editor (#32679) 2025-09-11 09:00:47 +00:00
Jason Jean dea784f343 fix(core): move git utilities to fix WASM build (#32695)
## Summary
- Moved git utilities that depend on `ignore-files` crate from
`utils/git.rs` to `watch/git_utils.rs`
- Made `find_git_root` and `collect_workspace_gitignores` functions
private since they're only used internally
- Fixed WASM build failure caused by `ignore-files` dependency not being
available for WASM targets

## Test plan
- [x] Verified `pnpm build:wasm` now succeeds
- [x] Verified regular `nx build nx` still works
- [x] Confirmed watch functionality remains intact

The `ignore-files` crate is conditionally excluded from WASM builds in
Cargo.toml, but the git utilities were trying to import it
unconditionally. Moving these utilities to the watch module (which is
already excluded from WASM) provides a cleaner solution than conditional
compilation.
2025-09-11 03:49:18 +00:00
Jason Jean cf7cf8bac5 chore(core): remove unused import (#32691)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

Import is unused

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

Import is removed

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-10 22:51:57 +00:00
Craigory Coppola c51d247cc9 chore(repo): fixup rust setup action after pinning (#32692)
This pull request makes minor updates to the GitHub Actions workflow
configuration for Rust toolchain installation. The main change is the
addition of an explicit (empty) `rustflags` parameter to the
`actions-rust-lang/setup-rust-toolchain` steps in both the CI and
publish workflows, and a correction of the `targets` parameter to
`target` in the publish workflow.

* CI workflow updates:
* Added `rustflags: ''` to the Rust toolchain setup steps in
`.github/workflows/ci.yml` to ensure no custom Rust flags are set during
installation.
[[1]](diffhunk://#diff-b803fcb7f17ed9235f1e5cb1fcd2f5d3b2838429d4368ae4c57ce4436577f03fR72-R73)
[[2]](diffhunk://#diff-b803fcb7f17ed9235f1e5cb1fcd2f5d3b2838429d4368ae4c57ce4436577f03fR277-R278)

* Publish workflow updates:
* Changed `targets` to `target` and added `rustflags: ''` for the Rust
toolchain setup in `.github/workflows/publish.yml` to fix parameter
usage and clarify Rust flags.
2025-09-10 22:45:54 +00:00
Jason Jean bc35921690 fix(core): filter task duration estimation by successful tasks only (#32688)
## Current Behavior

Task duration estimation includes all task runs regardless of their
status (success, failure, cancelled), which can lead to inaccurate
timing predictions.

## Expected Behavior

Task duration estimation should only consider successful task runs to
provide more accurate timing estimates for future task execution
planning.

## Related Issue(s)

Fixes inaccurate task duration estimation by filtering out
failed/cancelled tasks from the calculation.

## Changes Made

- Modified SQL query in `get_estimated_task_timings` to filter by
`status = 'success'`
- Added database index on `status` column to improve query performance
- Updated both the WHERE clause condition and table schema
initialization
2025-09-10 21:20:31 +00:00
Jason Jean 3d6e304580 chore(core): remove unused import (#32689)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

The import is unused

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

The import is removed 
## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-10 21:07:37 +00:00
Craigory Coppola b582e1f761 chore(repo): turn off pm cache from setup-node in pr-title-validation (#32684)
This pull request updates the workflow configuration for PR title
validation to simplify the setup and improve caching behavior.

Workflow configuration updates:

* Removed the explicit installation step for `pnpm` using
`pnpm/action-setup`, as this workflow doesn't install packages
* Updated the Node.js setup step to disable package manager caching by
setting `package-manager-cache: false`, which replaces the previous
`cache: 'pnpm'` option.…. as this workflow doesn't install packages
2025-09-10 16:13:52 +00:00
Leosvel Pérez Espinosa 0805d4eb1e feat(testing): infer task to merge reports from playwright atomized tasks (#31615)
## Current Behavior

When using Atomizer with Playwright, test reports are generated per
atomized tasks, and Nx doesn't offer a way to merge them into a single
report. This requires the user to handle multiple reports for a single
test file or run a manual/custom aggregation.

## Expected Behavior

When using Atomizer with Playwright, Nx offers an extra target that can
be run separately to merge/aggregate the Atomized task reports.

The "blob" reporter must be configured in the Playwright configuration
so that it can be generated and used to merge and generate a unified
report. For that purpose, the Nx Playwright preset includes the blob
reporter by default when in CI. An option called `generateBlobReports`
can be used to opt out.

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Leosvel Pérez Espinosa <leosvelperez@users.noreply.github.com>
Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-09-10 17:27:42 +02:00
Leosvel Pérez Espinosa 1782e8c746 feat(core): replace the pagination from the tui tasks list with scrolling (#32560)
## Current Behavior

The TUI tasks list uses pagination when it has many tasks that don't fit
in the viewport.

## Expected Behavior

The TUI tasks list should be scrollable and not use pagination.

Additionally, this PR includes a fix so that when a task is selected in
the task list, it's always ensured that the task is visible if resizing
the terminal or when the task is moved due to a different status.
2025-09-10 16:59:54 +02:00
Craigory Coppola 44b0c61a29 chore(repo): add CI check to prevent tracked files being listed in .gitignore (#32460)
> [!NOTE]
> CI is failing on this PR right now, its expected. We don't currently
adhere to this advice, and its causing issues. This PR should represent
a sync of this, and future protection


## Current Behavior

Previously, we had no automated check to detect when files tracked by
Git were inadvertently listed in `.gitignore`. This could lead to
inconsistent behavior in Nx's caching system.

## Expected Behavior

With this PR, the CI pipeline now includes a check
(`check-git-ignored-tracked-files`) that identifies tracked files that
would be ignored by Git if they weren't already being tracked. This
ensures consistency in Nx's cache hash calculation.

## Why This Matters for Nx

This check is critical for Nx's caching system because:

**Hash Calculation Consistency**: Nx calculates cache hashes based on
the files that Git tracks. When a file is both tracked by Git and listed
in `.gitignore`, it creates an inconsistency where:
- Git includes the file in operations (and Nx hash calculations)  
- `.gitignore` indicates the file should be ignored
- This can lead to different hash calculations depending on timing and
environment

**Impact on Cache Performance**:
- **Cache Misses**: Valid cache entries may be missed due to hash
discrepancies
- **Unreliable Builds**: Tasks may not re-run when they should, or may
re-run unnecessarily
- **Cross-Environment Issues**: Different developers or CI environments
may calculate different hashes for identical code

**The Solution**: The new script identifies these problematic files and
provides clear remediation steps:
- For files that shouldn't be tracked: `git rm --cached <file>`
- For files that should be tracked: Update `.gitignore` to be more
specific

This ensures that Nx's intelligent caching system works as designed,
providing fast, reliable builds across the entire development workflow.

## Related Issue(s)

Fixes the inconsistency between Git tracking and ignore patterns that
can affect Nx cache hash calculations.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 10:42:27 -04:00
Jack Hsu 3a4b2752f2 chore(repo): update Node e2e test to be less flaky (#32678)
This PR updates a test such that it doesn't just wait 1 second for
output, but waits until the expected output either prints or times out.
2025-09-10 10:17:09 -04:00
MaxKless 25c2001caf fix(core): handle uninstalled nx console case in autoinstall logic (#32673) 2025-09-10 16:13:59 +02:00
MaxKless 1ff26dde52 fix(core): check nx packages for provenance config before running nx migrate (#32557) 2025-09-10 10:56:41 +02:00
Jason Jean 27cfc7efa1 fix(core): resolve watcher infinite loops from missing parent gitignore support (#32604)
## Current Behavior

Nx watcher ignores parent `.gitignore` files, causing infinite loops
when `.nx` folders are ignored only by parent gitignores outside
workspace root. Tasks hang indefinitely with no error messages.

## Expected Behavior

Watcher respects parent `.gitignore` files up to git repository
boundaries, preventing infinite loops.

## Changes Made

- **Fixed watcher**: Now traverses parent directories and respects
`.gitignore` files up to git root
- **Centralized logic**: New `git.rs` module eliminates duplicate, buggy
implementations
- **Path handling**: Fixed absolute vs relative path issues causing
filter failures
- **Git boundaries**: Added proper git root detection for traversal
limits

## Files Modified

- `packages/nx/src/native/utils/git.rs` - New module with git utilities
- `packages/nx/src/native/utils/mod.rs` - Export git module  
- `packages/nx/src/native/walker.rs` - Use shared utilities
- `packages/nx/src/native/watch/utils.rs` - Remove duplicate functions
- `packages/nx/src/native/watch/watch_filterer.rs` - Use centralized
functions

## Related Issue(s)

Fixes #30313

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-09 14:57:08 -04:00
Copilot c586749a93 fix(core): add bold styling to terminal pane title when focused (#32462)
## Current Behavior

Terminal panes in the TUI show focus state through color changes only -
focused panes display the task name in primary foreground color while
unfocused panes use secondary foreground color.

## Expected Behavior

Terminal panes should provide stronger visual feedback when focused by
making the title bold in addition to the existing color change,
consistent with other TUI components like the dependency view.

## Related Issue(s)

This enhancement improves the visual hierarchy and makes it easier for
users to identify which terminal pane currently has focus, especially in
multi-pane layouts.

## Changes Made

- Modified the title styling logic in `TerminalPane::render()` to
conditionally apply `Modifier::BOLD` when the pane is focused
- Added a test to verify the focus state behavior is correctly
implemented
- The change follows the existing pattern used in other components and
maintains backward compatibility

The implementation uses a conditional modifier that applies bold styling
only when `state.is_focused` is true, leaving unfocused panes unchanged.
This provides consistent visual feedback across the TUI while preserving
existing functionality.

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AgentEnder <6933928+AgentEnder@users.noreply.github.com>
2025-09-09 18:51:43 +00:00
Jack Hsu 4299d82b9b docs(misc): update links on plugin-registry to point to intro pages when they exist (#32611)
This PR updates the the plugin registry links to point to intro since
the API docs aren't useful as a discovery page.

Since we use the API path to build generator, executor, etc. links I
added a new `introPath` property instead.
2025-09-09 14:43:14 -04:00
Jack Hsu 6eb1d21384 chore(repo): pin actions to shas (#32657)
This PR pins our publish actions to specific SHAs, and removes unused
logic tied to the previous PR release support.

Note: `dtolnay/rust-toolchain` cannot be pinned since will treat the SHA
as the Rust version. e.g. `@abc` will try to install Rust version `abc`,
which is invalid.
2025-09-09 14:10:47 -04:00
Jack Hsu 8fe7b0b066 feat(misc): add Cookiebot global scripts to astro-docs (#32660)
Adds cookie consent management and analytics tracking to the astro-docs
project:
- Cookiebot consent script integration with COOKIEBOT_ID environment
variable
- GlobalScripts React component reused from nx-dev for consistency
- Head.astro component override to integrate scripts into Starlight
- Cookie consent categories: statistics (GA, GTM) and marketing
(HubSpot, Apollo, Hotjar, Twitter)
- Production-only script loading with COOKIEBOT_DISABLE bypass option

Fixes DOC-95

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-09 08:30:21 -04:00
Jack Hsu ec78ef1928 docs(misc): add opengraph image support for astro docs (#32636)
This PR adds `og:image` meta tags to documentation pages for the new
docs.

The images are provided for pages under `docs` and `plugin-docs`
collections, with a fallback for pages not in those collections. We can
add more in the future as well if needed.

Examples:

<img width="1200" height="630" alt="releases"
src="https://github.com/user-attachments/assets/52322296-6048-4f40-8a78-7878406aa053"
/>

<img width="1200" height="630" alt="generators"
src="https://github.com/user-attachments/assets/cb238f9f-28c6-4c3d-83aa-ee231d99d72e"
/>

---

Closes #DOC-1164
2025-09-09 08:30:05 -04:00
Miguel 383f3aa8ce fix(release): optimize release version internals (#32534)
ReleaseGroupProcessor already iterates through all release groups, and
sometimes change is anyways not propagated.

## Current Behavior

All release groups are iterated in a way that, if group A depends on
group B:
- A will
[propagate](https://github.com/nrwl/nx/blob/53bb276a39a2de09938ed1161fadbbe92a96e596/packages/nx/src/command-line/release/version/release-group-processor.ts#L832)
changes to B
- B will
[check](https://github.com/nrwl/nx/blob/53bb276a39a2de09938ed1161fadbbe92a96e596/packages/nx/src/command-line/release/version/release-group-processor.ts#L894)
if it should be bumped by its dependencies

This means there is redundant double-checking in the code.

However, propagation doesn't always work. The linked
[snippet](https://github.com/nrwl/nx/blob/53bb276a39a2de09938ed1161fadbbe92a96e596/packages/nx/src/command-line/release/version/release-group-processor.ts#L1626-L1661)
selects a random project of group *A*, and if that project doesn't have
dependencies to projects in group *B*, it doesn't consider *B* as
bumped.

## Expected Behavior

### Ideally
There would be no double loops. 

### Otherwise 
If there are, they should consider all projects when deciding what to
bump. For instance, with something like:
```typescript
      const hasDependencyInChangedGroupV2 = Array.from(releaseGroupFilteredProjects).some(
        (project) => {
          const dependencies = this.projectGraph.dependencies[project] || [];
          return dependencies.some(
            (dep) =>
              this.getReleaseGroupNameForProject(dep.target) ===
              changedDependencyGroup
          )
      })
```

## Notes

- I know it's a bold move to simply delete code. I wanted to highlight
that, if tests pass, we are either missing tests or we are doing
unnecessary work. I would like to replicate locally with a bit more
confidence, but `jest` tests seem to be flaky
- I would need to pick @JamesHenry 's brain about what's the intention
with this "double" propagation in order to have the full context here
2025-09-09 14:38:56 +04:00
Craigory Coppola fdc3e39899 fix(core): check if daemon process is actually alive before trying to kill it (#32661)
## Current Behavior
If the daemon shuts down, and the user tries to run `nx reset`, an ESRCH
error is thrown since the pid in server-process.json doesn't match up to
a process

## Expected Behavior
We check if the process is alive before terminating it

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-08 19:39:52 -04:00
Colum Ferry 95e7b49967 fix(bundling): postcss-cli-resources should handle relative urls #32582 (#32658)
## Current Behavior
Relative urls are not being handled correctly in the
`postcss-cli-resources` Plugins for Webpack and Rspack after switching
to use WHATWG URL in favour of the deprecated `url.parse()` method.

## Expected Behavior
Ensure relatives are handled appropriately by resolving them based on
the context of the current resource being loaded.

## Related Issue(s)

Fixes #32582
2025-09-08 15:34:47 -04:00
Leosvel Pérez Espinosa 5011ecd0a1 fix(core): invalidate project graph when external nodes change (#32626)
## Current Behavior

When external nodes change, the project graph cache is not invalidated.
This can sometimes lead to missing dependencies due to reusing cached
dependencies for nodes that no longer exist.

## Expected Behavior

When external nodes change, the project graph cache should be
invalidated.
2025-09-08 15:33:06 -04:00
Copilot f91420d7c5 fix(repo): update broken CI documentation link in README (#32633)
## Current Behavior

The README.md file contains a broken link to the CI documentation that
points to `/ci/intro`, which no longer exists.

## Expected Behavior

The README.md file should contain the correct link to the CI
documentation pointing to `/ci/getting-started/intro`.

## Related Issue(s)

Fixes #32549

Credits to @MeAkib for originally identifying and addressing this issue.

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 Share your feedback on Copilot coding agent for the chance to win a
$200 gift card! Click
[here](https://survey3.medallia.com/?EAHeSx-AP01bZqG0Ld9QLQ) to start
the survey.

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FrozenPandaz <8104246+FrozenPandaz@users.noreply.github.com>
2025-09-08 11:44:23 -04:00
Colum Ferry ceaa58e36c fix(core): ensure only supported bundlers are used for angular fallback to default (#32655)
## Current Behavior
If an invalid bundler is provided to `create-nx-workspace` for the
`angular-monorepo` preset, it defaults to `webpack`.

## Expected Behavior
Invalid bundler option should default to the default provided within in
the angular app generator
2025-09-08 16:39:11 +01:00
Miroslav Jonaš 46c26280e6 fix(vite): handle config server properly for libs (#32608)
## Current Behavior
The `Vite`'s `resolveConfig` always adds default server settings to the
config:

```
server: {
    preTransformRequests: true,
    sourcemapIgnoreList: [Function: isInNodeModules$1],
    middlewareMode: false,
    fs: {
      strict: true,
      allow: [Array],
      deny: [Array],
      cachedChecks: undefined
    }
  },
```

This leads to `libs` always ending up with serve targets even if we
don't define `serve` configuration

## Expected Behavior
The serve targets should only exist if we explicitly set port or host.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-08 16:39:28 +02:00
Miroslav Jonaš 727d431ef5 chore(repo): update core team in readme (#32585)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-08 16:30:56 +02:00
Jason Jean 9bccff918d chore(repo): update nx to 21.5.1-beta.5 (#32631)
Updating Nx from 21.5.1-beta.3 to 21.5.1-beta.5
2025-09-05 22:38:37 +00:00
Louie Weng b12d4218ea chore(gradle): migrate plugin to 0.1.7 (#32638)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

Migrate gradle project graph plugin to 0.1.7

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-05 16:44:23 -04:00
Louie Weng 0c90f2c38a Revert "fix(gradle): allow test target name to be configured from nx.json" (#32637)
Reverts nrwl/nx#32416

Picking up tests via test name is fragile and breaks workspaces where
nx-expected task names do not have exact named counterparts.
2025-09-05 20:27:53 +00:00
Jason Jean 43d2c712a4 Revert "fix(core): exclude non-cacheable tasks from flaky detection (… (#32635)
…#32435)"

This reverts commit 2c678a1d51.

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

This causes a regression in Nx Cloud

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

There is no regression in Nx Cloud.. gotta find a different way.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-05 18:59:28 +00:00
Juri 02580f626e docs(nx-dev): add article about s1ngularity 2025-09-05 20:03:06 +02:00
Jack Hsu 106cc65269 docs(core): add Node 24 to compat matrix (#32630)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Closes #32526
2025-09-05 12:51:37 -04:00
Rares Matei 13367dee2e fix(nx-cloud): forward --help to nx-cloud aliases (#32627)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

`--help` behaviour is defined in the Nx alias entrypoints, and doesn't
show the correct output:

```
npx nx start-ci-run --help
nx start-ci-run [options]

Starts a new CI run for distributed task execution. This command is an alias for [`nx-cloud start-ci-run`](/ci/reference/nx-cloud-cli#npx-nxcloud-start-ci-run).

Options:
  --help     Show help                                                                                                                                                                                                                   [boolean]
  --version  Show version number                                                                                                                                                                                                         [boolean]
  --verbose  Prints additional information about the commands (e.g., stack traces).   
```

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

When running `npx nx start-ci-run --help` the help from the file in the
NxCloud repo should be displayed:

```
npx nx start-ci-run --help
Usage: npx nx-cloud start-ci-run [options]

Starts an Nx Cloud CI Pipeline Execution and configures distribution.

Options:
  --distribute-on <config>        Configure how to distribute with Nx Agents. Accepts:
                                  - "<count> <launchTemplate>" (e.g., "8 linux-medium-js")
                                  - path to a .yaml/.yml file for dynamic changesets
                                  - "manual" to disable the warning for legacy DTE setups
  --stop-agents-after <targets>   Comma-separated targets that signal agents can stop.
                                  Include configuration when needed, e.g., "build:locale-en".
  --require-explicit-completion   Require explicitly completing the CI run with
                                  "npx nx-cloud complete-ci-run".
  --stop-agents-on-failure        Stop all agents when a command fails (default: true).
  --with-env-vars <CSV>           Extra env vars to forward to agents in addition to NX_* (e.g., "VAR1,VAR2").
  --use-dte-by-default            Use this to disable auto-distribution of Nx tasks (default: true)
  --no-distribution               Disable distribution for this run
  --assignment-rules <file>       YAML file with assignment rules (for manual DTE only, see docs)
  --fix-tasks <csv>               Task names to auto fix
  --force                         Force start a CIPE even when a CI environment is not detected.
  --help, -h                      Show this help and exit.

Notes:
  - Do not run this command locally. If run accidentally, clean up with "npx nx-cloud cleanup".
  - For legacy manual DTE setups, you can pass "--distribute-on=manual".

Examples:
  npx nx-cloud start-ci-run --distribute-on="8 linux-medium-js" --stop-agents-after=lint,test,build
  npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" --stop-agents-after=e2e
  npx nx-cloud start-ci-run --distribute-on="manual" --stop-agents-after=e2e
  npx nx affected -t lint,test,build

Docs:
  https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun
  https://nx.dev/ci/reference/assignment-rules
```

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #CLOUD-3580
2025-09-05 16:28:35 +03:00
Jason Jean 27e8ce0771 fix(core): reduce CPU usage by adding 20ms interval to daemon process check (#32618)
## Current Behavior

The daemon process check in `startServer()` was running continuously
without any interval, causing excessive CPU usage. The `setInterval()`
call was missing the timing parameter, making it run as fast as
possible.

## Expected Behavior

With this change, the daemon process check runs every 20ms,
significantly reducing CPU overhead while maintaining responsive daemon
process monitoring.

## Related Issue(s)

This change optimizes CPU usage in the Nx daemon server by preventing a
continuous polling loop.

## Changes Made

- Added `20` as the interval parameter to the `setInterval()` call in
`packages/nx/src/daemon/server/server.ts:572`
- The daemon process ID check now runs every 20ms instead of
continuously
- Maintains the same functionality while dramatically reducing CPU
consumption
2025-09-04 20:28:26 -04:00
Leosvel Pérez Espinosa 37b806a8bd fix(devkit): remove nx as direct dependency (#32614)
## Current Behavior

The `@nx/devkit` package has `nx` as a direct dependency.

## Expected Behavior

The `@nx/devkit` package should not have `nx` as a direct dependency.
2025-09-04 23:54:36 +00:00
Leosvel Pérez Espinosa 636c6ecf3c feat(angular-rspack): do not rely on postinstall >20.2 (#32613)
Update `postinstall` script to only be needed for Angular versions lower
than v20.2.0, for which the relevant entry points are patched to expose
needed functionality.
2025-09-04 23:35:52 +00:00
Jason Jean 41887866bd Revert "chore(core): support node 24 (#31934)" (#32619)
This reverts commit f3bc2b207a.

# Testing

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

Many CI runs are running out of memory causing Agents to get OOM killed.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

This change is reverted and CI runs.. only sometimes run out memory
😅

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-04 23:03:34 +00:00
Craigory Coppola 1a2582e477 chore(repo): install cargo deps separately from first access (#32617)
## Current Behavior
Cargo deps get fetched on first usage, which is when graph computes +
cargo metadata runs under @monodon/rust

## Expected Behavior
Cargo deps are fetched separately.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-04 16:37:36 -04:00
Craigory Coppola 5679b3ea8c feat(core): add NX_PROJECT_ROOT environment variable to runtime cache inputs (#31428)
Add NX_PROJECT_ROOT environment variable to runtime cache inputs

## Current Behavior

Runtime cache input commands do not have access to project-specific
context, making it impossible to create project-aware runtime inputs.

## Expected Behavior

Runtime cache input commands can access `$NX_PROJECT_ROOT` environment
variable containing the project's root directory path.

## Related Issue(s)

Fixes #20949

Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: AgentEnder <AgentEnder@users.noreply.github.com>
Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-09-04 16:04:55 -04:00
Jason Jean 2c678a1d51 fix(core): exclude non-cacheable tasks from flaky detection (#32435)
## Current Behavior

Currently, the flaky task detection considers ALL tasks that have mixed
success/failure results as "flaky", including non-cacheable tasks like
development servers (`nx serve`) which are expected to have inconsistent
behavior.

## Expected Behavior

With this PR, only explicitly cacheable tasks (`cache: true`) are
considered for flaky detection. Non-cacheable tasks with mixed results
will no longer trigger flaky warnings.

## Related Issue(s)

This addresses the issue where non-cacheable tasks like development
servers were incorrectly being flagged as flaky, creating noise in the
flaky task detection system.

## Implementation Details

### Changes Made

1. **Database Schema Updates**
   - Added `cache` column to `task_details` table 
   - Updated `HashedTask` struct to include `cache: Option<bool>` field

2. **Query Logic Enhancement**
- Modified flaky task detection query to JOIN with `task_details` table
- Added filter condition `AND task_details.cache = 1` to exclude
non-cacheable tasks
   - Added clear comments explaining the query logic

3. **Data Flow Updates**
- Updated TypeScript code in `hash-task.ts` to pass `cache` information
from Task objects to native layer
- Both batch and individual task detail recording now include cache
property

4. **Comprehensive Testing**
   - Updated existing tests to include cache information
- Added new test "should not consider non-cacheable tasks as flaky" that
verifies:
     - Tasks with `cache: false` are NOT marked as flaky
     - Tasks with `cache: undefined` are NOT marked as flaky  
- Only explicitly cacheable tasks with mixed results are marked as flaky

### Test Results
- **Rust tests**: 202 passed 
- **TypeScript tests**: 4 passed  (all NxTaskHistory tests)

## Benefits

- **Improved Accuracy**: Flaky detection now focuses only on tasks where
consistency is expected
- **Reduced Noise**: Development servers and other non-cacheable tasks
no longer create false positives
- **Better Developer Experience**: More relevant and actionable flaky
task warnings

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-04 15:57:11 -04:00
Jack Hsu 27769450b8 fix(nx-dev): remove self-referencing redirects causing infinite loops (#32615)
When NEXT_PUBLIC_ASTRO_URL is set and nx-dev serves docs through Astro,
certain URLs cause infinite redirect loops due to self-referencing
redirect rules. Specifically:
- /docs/guides/nx-cloud/setup-ci redirected to itself
- /docs/reference/devkit redirected to itself

There is also a missing redirect from `/docs` to
`/docs/getting-started/intro` in the Next.js app, leading to a
client-side redirect from Astro website. Plus, `/getting-started/:path*`
was being redirected to the intro page instead of the the more specific
pages.

URLs should either redirect to their proper destinations or serve
content without infinite loops. Removed the two self-referencing
redirect rules that were causing the problem.

`/docs` redirects on server-side not client-side, and `/getting-started`
URLs are redirected to specific pages e.g.
/getting-started/start-new-project ->
/docs/getting-started/start-new-project

Fixes DOC-196
2025-09-04 14:26:50 -04:00
Jason Jean 246b5c808d chore(gradle): add dynamic clean and testClasses tasks for CodeQL compatibility (#32593)
## Current Behavior

CodeQL analysis fails for Java projects in Gradle workspaces because the
required build tasks (clean and testClasses) are not available for
included builds.

## Expected Behavior

CodeQL can successfully analyze Java code by having access to the
necessary Gradle build tasks for all included builds in the workspace.

## Related Issue(s)

This change ensures CodeQL compatibility for Java projects by
dynamically adding clean and testClasses tasks to all included builds.

Fixes #
2025-09-04 12:47:25 -04:00
Jonathan Cammisuli 2f1dae2154 chore(repo): include fix-ci command in the workflow (#32326)
Co-authored-by: James Henry <james@henry.sc>
2025-09-04 12:31:26 -04:00
Craigory Coppola a1b25894f8 fix(core): use more reasonable scroll speed on trackpads (#32603)
## Current Behavior
Scrolling via trackpad is way too fast in comparison with scrolling via
arrow keys / mouse wheel

## Expected Behavior
Scrolling via trackpad is analogous to mouse / arrow keys. Additionally,
home + end can jump to the beginning / end of terminal outputs.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-04 12:02:59 -04:00
Jason Jean 4bc5540a65 chore(repo): update nx to 21.5.1-beta.3 (#32601)
Updating Nx from 21.5.0-beta.2 to 21.5.1-beta.3
2025-09-04 12:02:06 -04:00
MaxKless 5ecf4cbea7 fix(graph): repair theme detection for nx console components (#32607)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
Themes are not picked up correctly from Nx Console
<img width="1128" height="637" alt="image"
src="https://github.com/user-attachments/assets/8dad4935-6d98-49f3-95a9-34f4880e2551"
/>


## Expected Behavior
Theme is applied
<img width="856" height="543" alt="image"
src="https://github.com/user-attachments/assets/aa7e21ae-a243-4399-b351-a85be339fd4b"
/>
2025-09-04 11:56:24 -04:00
Nicholas Cunningham f3bc2b207a chore(core): support node 24 (#31934)
### Changes
- Fix builtin module test to avoid duplicate `node:` prefixes

### Testing
- Update ci pipeline to use node v24
- Update agents to use node v24

### MISC
Requires: https://github.com/nrwl/nx/pull/32223

---------

Co-authored-by: Jack Hsu <jack.hsu@gmail.com>
2025-09-04 08:54:18 -04:00
Caleb Ukle 8e34d066f6 docs(nx-cloud): update description of neverConnectToCloud (#32602)
`neverConnectToCloud` can be confusing due to 2 aspects
1. the setup of nx cloud is named via the command `nx connect`
2. network connectsion to external services i.e. nx cloud

`neverConnectToCloud` is meant to control 1 and not 2
this means if you have previously connected to nx cloud and have an
access token configures. nx cloud will still be used since you're not
trying to "setup up nx cloud" aka `nx connect` but are instead using nx
cloud (i.e. making network requests to nx cloud)

Instead using `--no-cloud` or `NX_NO_CLOUD=true` would be how you
prevent network access to nx cloud

Fixes: DOC-194
2025-09-04 08:43:02 -04:00
Jack Hsu 7ec6f4e725 docs(misc): update styling for plugin registry cards (#32563)
This PR updates the cards on `/docs/plugin-registry` for the new Astro
docs.

<img width="830" height="286" alt="image"
src="https://github.com/user-attachments/assets/942e6764-3f7f-4986-85a1-3b6c603078c6"
/>

With the PR changes it looks like this:

(dark theme)
<img width="897" height="811" alt="image"
src="https://github.com/user-attachments/assets/06ed3045-d0f2-4c5c-88bd-eb39b0dd7b0b"
/>

(light theme) 

<img width="803" height="811" alt="image"
src="https://github.com/user-attachments/assets/7347402c-0829-450d-b85d-5b0b0b541b9c"
/>

**Changes:**

- Use `<div>` rather than cards so we can match production styles more
closely
- Customize the badge colors to match existing production 


Fixes #DOC-172
2025-09-03 16:46:46 -04:00
Leosvel Pérez Espinosa ec1f1a4559 fix(js): store stale references correctly in typescript-sync generator (#32596)
## Current Behavior

The `@nx/js:typescript-sync` wrongly identifies stale project
references.

## Expected Behavior

The `@nx/js:typescript-sync` should correctly identify stale project
references.
2025-09-03 10:28:06 -04:00
Miguel 4e1708861d fix(release): ensure versionData is accurate for all transitive dependencies (#32531) 2025-09-03 16:40:33 +04:00
Leosvel Pérez Espinosa 5bb824c074 fix(testing): log the correct installed cypress version when erroring due to using an unsupported version (#32598) 2025-09-03 16:00:58 +04:00
Jason Jean 1fcec26224 chore(repo): disable claude workflow (#32592)
## Current Behavior

The Claude Code workflow is currently enabled and responds to @claude
mentions in issues and PRs.

## Expected Behavior

The Claude Code workflow should be disabled by removing the workflow
file.

## Related Issue(s)

This change disables the automated Claude responses on the repository.
2025-09-02 21:48:26 +00:00
Juri c7d540614c docs(misc): update new subtagline 2025-09-02 23:43:24 +02:00
Juri 2af5446fba feat(nx-dev): update homepage subtagline 2025-09-02 23:43:24 +02:00
Jason Jean 92bd11a221 chore(repo): update nx to 21.5.0-beta.2 (#32589)
Updating Nx from 21.5.0-beta.1 to 21.5.0-beta.2
2025-09-02 15:48:55 -04:00
Colum Ferry c5785ea8fc fix(rspack): expand serve-static target names for init generator (#32587)
## Current Behavior
If another plugin, or project/package.json exists in the repo that has a
`serve-static` target, running `nx add @nx/rpsack` will fail.

The `@nx/rspack:init` generator does not have any alternative names for
`serve-static` causing conflicts.

## Expected Behavior

The `init` generator should provide more options for the `serve-static`
target such that the plugin can be added without error.
2025-09-02 13:42:06 +01:00
Miroslav Jonaš 06456482c2 docs(nx-dev): add missing info to 2025.07.1 release notes (#32584)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-09-02 11:33:38 +02:00
Chau Tran f34b5ef78b fix(graph): project details navigating for new taskGraph and tasks with default configuration on UI (#32510)
- fix some remnants on old navigation pattern for task graph in PDV
- fix an issue where UI only has `target` and `project` but backend
returns TaskGraph with default configuration
2025-08-29 17:44:49 -05:00
Colum Ferry dfc042ee1f chore(repo): set canary schedule to 8pm utc (#32574) 2025-08-29 16:41:57 -04:00
Craigory Coppola 056043314c chore(repo): limit pr validation runs to checkout only from master (#32545)
Reduces some unnecessary permissions to ease future risks.
2025-08-29 12:56:00 -04:00
Colum Ferry f929324303 chore(repo): add environment protection for publish (#32573) 2025-08-29 16:25:20 +00:00
MaxKless f9d5bb8edd fix(core): detect devcontainer environment and skip Nx Console installation prompt if it exists (#32571)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
In a devcontainer environment, the tmp file we write to when the user
doesn't want to install nx console isn't saved. This means that every
time they start

## Expected Behavior
Devcontainers are a special case, we can skip asking the user if we
detect we are in one.
2025-08-29 11:13:07 -04:00
Colum Ferry 8d067f8ecc feat(module-federation): align dynamic federation with latest from module federation and rspack (#32509)
## Description
With `@module-federation/enhanced@0.18`, dynamic federation changed. The
`init` method is now deprecated and setup is different dependent on
whether the MFP Build Plugin is used. For us, it is, requiring a change
to how we initialise MF.
This also requires an update to Rspack also to `1.5.0`.
`NxModuleFederationDevServerPlugin` currently ignores static dynamic
remotes and does not start them automatically locally.

## Changes
- Replace usage of `init` with `registerRemotes`
- Support Rspack 1.5
- Fix issue with `NxModuleFederationDevServerPlugin` ignoring static
dynamic remotes during dev locally
- Remove restriction on shape of the `module-federation.manifest.json` 

## Related Issues

Fixes #32542
2025-08-29 10:39:20 -04:00
MaxKless 8de8ff0931 docs(core): document NX_SKIP_VSCODE_EXTENSION_INSTALL environment variable (#32570) 2025-08-29 14:05:53 +02:00
Caleb Ukle 23cffe6949 docs(nx-cloud): clean up concept doc (#32564) 2025-08-28 23:24:16 +02:00
Caleb Ukle 247c0492d8 fix(nx-dev): add missing data in plugin migrations (#32562)
- adds "always add to package json" column for package json updates
<img width="786" height="529" alt="image"
src="https://github.com/user-attachments/assets/6e4383c3-e4ec-4167-b76c-ad9a800e3564"
/>

- add migration examples 
- **note** examples typically have mdoc tags, we plan to remove those
from source files once we're clear to push to prod
<img width="782" height="926" alt="image"
src="https://github.com/user-attachments/assets/67c1a8c2-c36c-4bc3-badc-b9657646babd"
/>


- add migration requirements section

![WKMac
2025-08-28T19-01-57](https://github.com/user-attachments/assets/b0bd0a3b-74e7-4f82-8d48-c7a322301bcd)


- fixes header indentation level for migrations 
- **note** this now breaks overflow on toc, will fix in future PR, see
DOC-191
  
<img width="441" height="479"
alt="73083796c066816a69e44747e6e62eec05dfd4c4fc02f27a30d085f6c8d86235"
src="https://github.com/user-attachments/assets/ccb0b908-403a-40fb-bf4d-61b8059b8d20"
/>



Fixes: DOC-146
Fixes: DOC-147

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-28 14:53:34 -05:00
Jack Hsu 3211169e42 fix(nx-dev): resolve multiple styling issues in Astro documentation (#32561)
## Current Behavior
- Sidebar active link uses default text color instead of accent color
(DOC-143)
- Breadcrumb current page text is barely visible with opacity 0.2
(DOC-141)
- TOC lacks proper spacing between items and has no background styling
(DOC-174)
- TOC hard to parse (DOC-138)

## Expected Behavior
- Sidebar active link uses accent color for better visibility
- Breadcrumb current page has proper text color and visibility
- Deepdive callout paragraphs have compact 12px spacing
- TOC has proper spacing and background styling with dark mode support
<img width="1450" height="1357" alt="Screenshot 2025-08-28 at 1 58
10 PM"
src="https://github.com/user-attachments/assets/b0414e22-ed6c-46ac-b66f-79e80fb868a5"
/>
<img width="1331" height="1030" alt="image"
src="https://github.com/user-attachments/assets/d0a7341e-f389-4357-9028-9def94a23b4f"
/>
<img width="716" height="1187" alt="image"
src="https://github.com/user-attachments/assets/fe4617fa-4c45-4748-aced-a0e513f50965"
/>


## Related Issue(s)
Fixes DOC-143
Fixes DOC-141
Fixes DOC-138
Fixes DOC-174
2025-08-28 15:42:09 -04:00
Caleb Ukle d38bf3db4a fix(nx-dev): issue with index pages not showing content lists (#32559)
also fixed issue where links contained 'CI Features' instead of
'ci-features' in URL breaking the markdown to html link rendering

Fixes: DOC-181
Fixes: DOC-186
2025-08-28 12:39:25 -05:00
Louie Weng 95da233553 chore(gradle): bump nx for gradle plugin to 0.1.6 (#32505)
## Current Behavior
Nx for Gradle plugin is at version 0.1.6

## Expected Behavior
Bumped up the version for the Nx for Gradle plugin, and added necessary
migrations to `nx migrate` the plugin to the newest version.
2025-08-28 16:11:13 +00:00
Jack Hsu 427c691732 docs(nx-dev): add comprehensive redirect rules from Next.js docs to new Astro docs site (#32520)
The Next.js documentation site has no redirect rules to guide users to
the new Astro documentation structure, resulting in broken links and 404
errors when users try to access the old URLs.

All legacy documentation URLs from the Next.js site should redirect to
their appropriate locations in the new Astro documentation site,
following a consistent mapping strategy.

This commit implements the following redirect mapping strategy:

1. **API References Consolidation**: Individual generator and executor
pages are redirected to their parent listing pages since the new docs
don't have individual pages:
   - `/api/generators/<specific>` → `/generators`
   - `/api/executors/<specific>` → `/executors`
   - `/api/migrations` → `/migrations`

2. **CI Content Reorganization**: CI-related content has been
restructured into three main areas:
- Platform-specific CI setup guides consolidated into
`/docs/guides/nx-cloud/setup-ci`
- DTE setup for all platforms consolidated into
`/docs/guides/nx-cloud/manual-dte`
- Security topics moved to `/docs/concepts/ci-concepts/cache-security`

3. **URL Convention Normalization**:
   - All redirect targets are prefixed with `/docs`
- Spaces in paths converted to hyphens (e.g., "Nx Cloud" → "nx-cloud")
- Special cases like `convert-to-inferred` redirect to
`/docs/guides/tasks-caching/convert-to-inferred`

4. **Content Consolidation**:
- Technologies without dedicated executor/generator pages (Java, Vue,
Node) redirect to their main/intro technology page
- Deprecated content marked with TODO comments for future migration
decisions

All redirect targets have been verified to exist on canary.nx.dev.

There are some TODOs for missing content that we need to follow-up on,
or check if they are addressed in other PRs.

Fixes DOC-154

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-28 13:55:29 +00:00
Colum Ferry a6685fa83e feat(rspack): support passing templateParameters to HtmlRspackPlugin (#32553)
## Current Behavior
There is currently no way to pass `templateParameters` to the
`HtmlRspackPlugin`.

## Expected Behavior
Add `templateParameters` to the NxAppRspackPluginOptions and pass
through to `HtmlRspackPlugin`
2025-08-28 13:16:14 +01:00
MaxKless 493d6233c2 chore(repo): add lourw as gradle reviewer (#32537)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-27 23:45:01 -04:00
Jack Hsu 7678806af9 docs(misc): fix issue with AI chat (#32547)
The React dep is needed in the `package.json` in order for the AI chat
dialog to load.
2025-08-27 23:44:34 -04:00
Colum Ferry e634b58b70 chore(repo): disable failing mf e2es (#32538) 2025-08-27 15:20:44 -04:00
MaxKless 2fe6080db5 chore(repo): change publish step to use npm trusted publishing (#32533)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
We use a regular npm publish flow using access tokens and provenance.
## Expected Behavior
We use https://docs.npmjs.com/trusted-publishers which is more secure
and has provenance configured automatically.
2025-08-27 12:25:03 -04:00
Jack Hsu a73712e7f8 chore(repo): add SECURITY.md and disable PR release (#32536)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-27 11:39:37 -04:00
Caleb Ukle 53bb276a39 docs(nx-dev): verify all internal links do not 404 (#32491)
add link verification script that
- gets all links in the build html files
- compares all links to sitemap links
- fails if there is a link not in the sitemap to prevent creating broken
links

NOTE: 
some generated api docs still ref the old URLS (i.e. non /docs prefixed)
which we'll need to change either in this PR or in a quick follow up PR
before releasing as to not break any doc changes that have to be shipped
before full astro port

---------

Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
Co-authored-by: Jack Hsu <jack.hsu@gmail.com>
2025-08-26 19:44:20 -04:00
Jack Hsu 80db8ab857 fix(nx-dev): update header logo to link to nx.dev homepage (#32502)
The logo in the documentation header links to the docs intro page
(/docs/getting-started/intro) instead of the main Nx homepage.

The logo should link to https://nx.dev to allow users to easily navigate
back to the main Nx homepage from the documentation.

Fixes DOC-167

Demo: https://www.loom.com/share/71fb2b78d40b4730a073fdfe4a3b66c2
2025-08-26 19:39:20 -04:00
Jack Hsu ffada18156 docs(nx-dev): remove 'Docs' from breadcrumb UI to prevent 404 (#32503)
The breadcrumbs component was showing 'Docs' as a clickable segment
which led to a 404 since there's no page at /docs. This filters out the
'docs' segment from the UI while keeping all href links with the /docs/
prefix.

Fixes DOC-165

Demo: https://www.loom.com/share/33aa13e515cf4213a64ecbf29200f3e1
2025-08-26 19:38:11 -04:00
Craigory Coppola 347eb0d000 fix(core): normalize root project root when merging project config results (#32517)
## Current Behavior
When merging project config its easy to return `''` for the root
project's root, but we expect `'.'`.

## Expected Behavior
We normalize this to prevent plugin author's from making an easy mistake

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-26 18:42:43 -04:00
Colum Ferry 98cf4b7faa chore(react-native): fix nightly (#32507)
## Current Behavior

The React Native e2e tests contain variable naming conflicts and
inconsistent error handling in the process cleanup sections:
- Variables named `process` shadow the global Node.js `process` object
- Inconsistent error handling patterns in process cleanup logic
- Some cleanup operations attempt to kill processes that may not exist

## Expected Behavior

The React Native e2e tests should have:
- Clear variable names that don't shadow global objects
- Consistent error handling patterns throughout all test cleanup
sections
- Robust process cleanup that handles cases where processes may not be
running

### Changes Made

1. **Variable Naming**: Renamed `process` variables to `childProcess` to
avoid shadowing the global Node.js `process` object
2. **Error Handling**: Added consistent try-catch blocks around all
process cleanup operations
3. **Process Cleanup**: Simplified cleanup logic by passing `undefined`
for process ID when the process reference is not available, allowing
`killProcessAndPorts` to handle port cleanup appropriately

This fixes issues that could occur in nightly builds where process
cleanup wasn't being handled consistently, potentially leading to
hanging processes or ports.
2025-08-26 16:10:04 -04:00
Philip Fulcher 3d2e2566d2 docs(nx-dev): remove Auguest webinar notifiers (#32516) 2025-08-26 15:55:17 -04:00
Colum Ferry a2f6e4f50b docs(docker): explain default version scheme option (#32508)
Add docs explaining docker version schemes and the default option

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-26 13:09:38 -04:00
Leosvel Pérez Espinosa a5606adff4 chore(js): fix test setup (#32515)
Fix e2e test failing for pnpm in nightlies.
2025-08-26 16:30:08 +00:00
Leosvel Pérez Espinosa ec6b707d13 fix(js): use a unique typescript custom condition name for the workspace (#32429)
## Current Behavior

Workspaces using the new setup with TS project references + package
manager workspaces are generated with a custom condition named
`development`. Projects have a conditional `development` entry point
that points to the source to improve the DX in the repo.

This condition name can cause issues with published libraries because
it's not unique, and some build tools automatically pick it up. While
using it locally in the workspace is safe because the source file
exists, this is not the case when the published library is used outside
the workspace.

## Expected Behavior

Workspaces using the new setup with TS project references + package
manager workspaces should be generated with a unique custom condition
named after the name in the root `package.json` file. Projects should
have a conditional entry point matching that name and pointing to the
source to improve the DX in the repo.

Users can customize the custom condition and name it something else as
long as it starts with `@nx-source/` so that Nx generators and helpers
can identify it. Additionally, in the unlikely scenario that the root
`package.json` doesn't have a `name` set, Nx will fall back to use
`@nx/source`.

This new behavior matches an emerging pattern of using scoped custom
export conditions for pointing to the source:

- [Announcing TypeScript
5.7](https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/#path-rewriting-for-relative-paths:~:text=As%20a%20result%2C%20if%20you%E2%80%99ve%20been%20using%20a%20workspace%2Dstyle%20layout%20with%20multiple%20packages%20referencing%20each%20other%2C%20you%20might%20need%20to%20use%20conditional%20exports%20with%20scoped%20custom%20conditions%20to%20make%20this%20work%3A)
- [Live types in a TypeScript
monorepo](https://colinhacks.com/essays/live-types-typescript-monorepo#:~:text=Here%27s%20how%20a%20custom%20condition%20might%20look%20in%20your%20package.json.%20There%27s%20nothing%20special%20about%20the%20string%20%22%40colinhacks/zod%22%20here!%20It%20could%20be%20anything.)
- [Loading from
Source](https://github.com/isaacs/tshy?tab=readme-ov-file#loading-from-source)

## Related Issue(s)

Fixes #31332
2025-08-26 09:25:06 +02:00
Louie Weng af446081d6 fix(nx-cloud): read package.json correctly for workspace name when creating new cloud workspace (#32504)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

When we attempt to create a new cloud-connected workspace with
`create-nx-workspace`, we read `package.json` from the incorrect
location. This means we are not able to retrieve the workspace name
correctly and results in the newly created cloud workspace having the
fallback name `my-workspace`

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

When we try to read `package.json` we pass in in the correct directory
in which we expect to find the file. This allows us to correctly parse
the json file and retrieve the correct workspace name.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-25 20:23:03 +00:00
Chau Tran 0919b6237e feat(graph): unwrap RankDirPanel from experimental (#32490)
closes #32482 #32481
2025-08-25 13:40:26 -04:00
Chau Tran 348758e599 fix(nx-dev): task graph should not break docs (#32501)
There was a recent change to `TaskGraphClientResponse` where we drop the
multiple `taskGraphs` and replace with single `taskGraph`. Goal was to
improve the performance for `nx graph` task graph in general and support
multiple targets. Docs pages that render task graph were not updated to
adhere to the new single task graph model. This PR fixes it.

This PR also adjusts the project graph to handle missing props more
gracefully.
2025-08-25 11:28:53 -05:00
Jack Hsu ca54cf84be docs(misc): fix OpenGraph image generation for nested technologies (#32485)
The image generation does not account for nested paths like we have in
the `/technologies` section. That means the `og:image` meta tag is
pointing to non-existent images.

## Current Behavior
OpenGraph images return 404 for nested technology pages (e.g.,
/technologies/build-tools/docker/introduction). The generation script
only processes top-level items and doesn't recurse through nested
structures.

e.g.
https://nx.dev/technologies/typescript/recipes/switch-to-workspaces-project-references
points to
https://nx.dev/images/open-graph/technologies-typescript-recipes-switch-to-workspaces-project-references.jpg
but this was not generated

## Expected Behavior
All pages should have working OpenGraph images, including deeply nested
technology documentation.

e.g.
https://nx-dev-git-doc-163-nrwl.vercel.app/technologies/typescript/recipes/switch-to-workspaces-project-references
still points to
https://nx.dev/images/open-graph/technologies-typescript-recipes-switch-to-workspaces-project-references.jpg
but this is now generated
(https://nx-dev-git-doc-163-nrwl.vercel.app/images/open-graph/technologies-typescript-recipes-switch-to-workspaces-project-references.jpg)

## Related Issue(s)
Fixes DOC-163
2025-08-25 11:55:45 -04:00
Craigory Coppola b9488968d2 feat(core): auto-retry lock files changed daemon msgs (#32489)
## Current Behavior
We retry NX_VERSION_CHANGED errors

## Expected Behavior
We retry NX_VERSION_CHANGED and LOCK_FILES_CHANGED errors

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-25 10:18:09 -04:00
Jason Jean 1b3a533f62 feat(core): add incompatibleWith field for packageJsonUpdates (#32464)
## Summary

- Adds support for `incompatibleWith` field in `packageJsonUpdates` to
prevent updates from running when specified packages are present
- Provides the opposite functionality of the existing `requires` field
- Implements logic to skip packageJsonUpdates when any incompatible
packages are found

## Changes Made

### Core Implementation
- Added `incompatibleWith?: Record<string, string>` to
`PackageJsonUpdates` type
- Implemented `areIncompatiblePackagesPresent()` method with semver
checking
- Updated migration logic to check for both requirements and
incompatibilities
- Added comprehensive tests for both positive and negative scenarios

### Vite 7 Compatibility Fix
- Added `incompatibleWith: { "@remix-run/dev": "*" }` to vite 7
packageJsonUpdate
- Prevents vite 7 update from running when @remix-run/dev is present

## Usage Example

```json
{
  "packageJsonUpdates": {
    "17.0.0": {
      "version": "17.0.0",
      "packages": {
        "new-package": { "version": "^17.0.0" }
      },
      "incompatibleWith": {
        "old-package": "*",
        "conflicting-package": "<2.0.0"
      }
    }
  }
}
```

The update will be skipped if either `old-package` (any version) or
`conflicting-package` (version < 2.0.0) is present in the workspace.

## Test Plan

- [x] Added unit tests covering both positive and negative scenarios
- [x] Verified existing tests still pass
- [x] Applied to real-world case (vite 7 + Remix incompatibility)
- [ ] Test on workspace with @remix-run/dev to verify vite 7 is skipped
- [ ] Test on workspace without @remix-run/dev to verify vite 7 is
applied

## Type of Change

- [x] New feature (non-breaking change which adds functionality)
- [x] Bug fix (non-breaking change which fixes an issue)

## Notes

This feature enables better control over migration paths and prevents
package conflicts during nx migrate operations. The vite 7 + Remix case
is a concrete example where this prevents incompatible package
combinations.
2025-08-25 10:17:49 -04:00
Leosvel Pérez Espinosa a0c78e0bb9 feat(angular): support angular v20.2 (#32351)
## Current Behavior

Angular v20.2 is not supported.

## Expected Behavior

Angular v20.2 is supported.

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-25 11:57:14 +02:00
Nicole Oliver 9401ae3d3f fix(nx-dev): re-enable contact form (#32493)
Re-enable the hubspot script for our contact forms.
2025-08-23 20:57:19 -05:00
Craigory Coppola c6de3de4a0 chore(repo): mitigate script injection vulnerability in PR title validation (#32488) 2025-08-23 12:33:28 +04:00
Nicole Oliver a93e74e2fb feat(nx-dev): nx.dev homepage feature illustrations and CTA (#32298)
Updates one feature illustration so that it renders well in SVG, and
adds a CTA with some stats about Nx's impact.
2025-08-22 14:37:00 -07:00
Jason Jean 84163dc402 feat(repo): un-add GitHub Actions workflow to validate PR title (#32486)
… (#32458)"

This reverts commit c916349179.

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

This workflow may have a vulnerability.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

We'll investigate it before re-introducing it.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-22 15:45:45 -04:00
Steven Nance c043b122d6 fix(core): allow additional properties in ProjectMetadata type (#32483)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
The `ProjectMetadata` type does not allow for additional properties,
despite the schema having `"additionalProperties": true`. This prevents
folks who are extending Nx and adding details there from doing so in a
way that does not result it type errors.

## Expected Behavior
Userland code extending Nx should be able to add to ProjectMetadata
without running into type errors.
2025-08-22 14:58:50 -04:00
Jack Hsu 1976d56457 docs(misc): fix issues with base href, rewrites, and connecting next.js and astro docs (#32484)
This PR fixes issues with connecting new Astro docs with the `/docs`
rewrite rule on Next.js side.

https://www.loom.com/share/150deedd25a24259b0aa8cb141cec1d3

The redirects now go through Netlify since it's a lot more flexible, and
we need to do that later when porting Next.js to Netlify, etc.

## Not done / follow-up:
Other pages and UI components that use `<Link>` to a doc page need to
check against `NEXT_PUBLIC_ASTRO_URL` and make sure to use the updated
`/docs` path for that. I only handled the homepage for now just to show
it working.
2025-08-22 14:36:08 -04:00
Chau Tran 560c0c6ae5 fix(graph): nxArgs.projects can be an empty array (#32479)
make sure when no projects filter is applied, we should build a `/all`
URL
2025-08-22 18:28:11 +00:00
Caleb Ukle 95e603e792 docs(nx-dev): add sitemap and robots.txt as static assets (#32461)
update robots.txt to point to the sitemap-index.xml so crawlers
shouldn't actually look at sitemap.xml directly anyway
but also included sitemap.xml to match that of the sitemap-index.xml
content for historical reasons in case anything still references that
older sitemap
2025-08-22 13:47:44 -04:00
Colum Ferry d6266ebcbe docs(docker): add docker overview page (#32469)
## Current Behavior
There is currently no overview page for the Docker plugin, just
documentation on the using it with Nx Release.

## Expected Behavior
Add an overview page for the Docker plugin
2025-08-22 12:28:01 -04:00
Leosvel Pérez Espinosa 86ebc846d7 feat(js): detect duplicate project references in @nx/js:typescript-sync (#32443)
## Current Behavior

The `@nx/js:typescript-sync` generator does not detect duplicate project
references.

## Expected Behavior

The `@nx/js:typescript-sync` generator should detect duplicate project
references.
2025-08-22 16:25:40 +00:00
Louie Weng 82652db569 fix(gradle): allow test target name to be configuration from nx.json (#32416)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

We had hardcoded test target names which meant that users who specify
custom test suites would not get their atomized tests correctly picked
up.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

Allow users to configure the `testTargetName` field in their `nx.json`
and correctly identify which tasks to atomize.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-22 09:11:59 -07:00
Colum Ferry 5a423f9c04 fix(expo): export output should be within project directory (#32477)
## Current Behavior
`expo export` expects the `--output-dir` to be within the project
directory.
When using Nx w/o Inference Plugins, we generate an export target that
attempts to place the output directory outside the project directory.

## Expected Behavior
Ensure that the output directory is within the project directory.
2025-08-22 17:04:44 +01:00
Caleb Ukle 0c765fe9d9 docs(nx-dev): update sidebar to contain auto generated content + static files (#32478)
- **docs(nx-dev): rename directory to match existing routes**
- **docs(nx-dev): use route middleware to populate sidebar w/ auto
generate command docs**


Unlike the technology section w/convention based file structure driving
the content that is auto generated. the devkit/nx-cli/cnw pages do not
have a reference file structure to generate from. so we leverage the
astro content collections to pull the desired pages. only issues is this
has to be at "run time" and not at setup time. which means we have to
inject these routes via the route middleware.
2025-08-22 16:03:17 +00:00
Louie Weng 7aa7cbe927 fix(gradle): use AST parsing to migrate updates to version catalogs (#32463)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

When we migrate version catalogs to use new versions of the gradle
project graph plugin, we lose the original formatting of the version
catalogue file.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

We use AST parsing on the version catalogue so that we can make version
edits on the specific portion of the file.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-22 11:56:16 -04:00
Leosvel Pérez Espinosa 0494d09e8e fix(misc): check for packages existence to detect pnpm workspaces setup (#32474)
## Current Behavior

When detecting whether a workspace is set up with pnpm workspaces, we
only check for the existence of the `pnpm-workspace.yaml` file. While
most of the time that's enough, it's not entirely correct because that
file can exist without a `packages` entry and solely contain other
settings.

## Expected Behavior

When detecting whether a workspace is set up with pnpm workspaces, we
should check for the existence of the `pnpm-workspace.yaml` file and the
`packages` entry.
2025-08-22 11:39:28 -04:00
MaxKless 900bb277ab fix(core): repair nx mcp in pnpm/yarn (#32452)
This pull request updates the `mcp.ts` command handler to improve
compatibility with multiple package managers and enhance argument
handling for command execution. The changes ensure that the correct
flags are used for each package manager and that commands with spaces
are executed properly.


* Adjusted arguments passed to the `dlx` command for `npm`, `yarn`, and
`bun` to use their respective flags (`-y`, `--quiet`, `--silent`),
ensuring consistent behavior across different package managers.
* Improved handling of `dlx` commands that may contain spaces (e.g.,
`pnpm dlx`) by splitting the command and passing arguments appropriately
to `spawnSync`.
* Updated both `mcpHandler` and `showHelp` functions to use the new
argument handling logic for executing commands and displaying help
output.
2025-08-22 10:00:20 -04:00
Caleb Ukle ed723b0406 docs(nx-cloud): add new nx cloud intro page (#32432)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-22 09:59:54 -04:00
Caleb Ukle 66df12592f docs(nx-cloud): update launch template example (#32454)
- add yaml anchors
- add patch dirs to cache restore keys

Related to DOC-152

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-22 13:46:46 +00:00
Colum Ferry e631602489 chore(react-native): mark react-native and expo as golden (#32472)
Mark React Native and Expo projects as Golden
2025-08-22 09:41:07 -04:00
Jack Hsu d821e0eecf chore(misc): remove .env.local since we should be setting these elsewhere (#32475)
Remove unnecessary file.

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #DOC-157
2025-08-22 09:33:27 -04:00
Leosvel Pérez Espinosa 7a435f4244 fix(core): create pnpm peer deps settings in the appropriate location when creating workspace (#32470)
## Current Behavior

When creating a workspace, some pnpm-specific settings are written to an
`.npmrc` file in the workspace root. Npm warns about those unknown
config properties.

## Expected Behavior

The pnpm-specific settings should be written to the
`pnpm-worskpace.yaml` file for pnpm versions that support it (10.6.0+).
2025-08-22 09:33:04 -04:00
Colum Ferry 5c1ff81384 chore(repo): cleanup packageJson updates for angular rspack (#32468) 2025-08-22 09:30:26 -04:00
Leosvel Pérez Espinosa a7a3508f48 chore(repo): stop reusing test runner browsers from agent setup (#32473)
## Current Behavior

The e2e tests in the repo can sometimes fail due to Cypress and/or
Playwright version mismatches between the version in the repo lockfile
and the version that gets installed in workspaces generated when running
the e2e tests.

The e2e tests rely on the browsers installed by the agent, but the agent
installs the browser for the version the repo lockfile has, while the
e2e tests need the version that gets generated in the workspaces.

## Expected Behavior

The e2e tests in the repo should not fail due to Cypress and/or
Playwright version mismatches. It's unreliable to rely on the browsers
installed by the agent due to potential version mismatches.
2025-08-22 08:32:47 -04:00
Craigory Coppola 2e39402591 fix(core): handle no daemon when stopping (#32455)
## Current Behavior
When daemon is not running, its pid is null... We don't handle this in
`stop`

## Expected Behavior
We handle this in stop.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-21 21:59:18 -04:00
Jason Jean 0c961801f4 chore(repo): update nx to 21.5.0-beta.1 (#32436)
Updating Nx from 21.4.0-beta.12 to 21.5.0-beta.1
2025-08-21 16:58:26 -04:00
Craigory Coppola c916349179 feat(repo): add GitHub Actions workflow to validate PR titles (#32458)
## Current Behavior

Currently, there is no automated check to ensure that PR titles follow
our conventional commit format. This can lead to inconsistent PR titles
that don't match our commit conventions.

## Expected Behavior

With this change, all PR titles will be automatically validated against
our git commit rules when a PR is:
- Opened
- Edited
- Synchronized
- Reopened

The check uses the existing `scripts/commit-lint.js` script to validate
PR titles, ensuring they follow the same format as our commit messages
(e.g., `feat(scope): description`, `fix(scope): description`, etc.).

## Related Issue(s)

This was requested to improve PR quality and consistency across the
repository.

## Implementation Details

- Added a new GitHub Actions workflow:
`.github/workflows/pr-title-validation.yml`
- The workflow writes the PR title and body to a temporary file in the
format specified
- Runs `node ./scripts/commit-lint.js` on the file to validate the PR
title
- The check will fail if the PR title doesn't match our conventional
commit format
- The workflow only runs for the `nrwl` repository owner (consistent
with other workflows)

## Test Plan

- [x] Tested locally with valid PR titles (e.g., `feat(core): add new
feature`)
- [x] Tested locally with invalid PR titles (confirmed validation
failure)
- [x] Tested with breaking change notation (`fix(core)!: breaking
change`)
- [ ] Test on actual PR once merged

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-21 16:31:27 -04:00
Caleb Ukle 5bdfc76a30 docs(nx-cloud): update to new onboarding urls (#32456) 2025-08-21 20:06:00 +00:00
Jason Jean b3dc00584a feat(tools): add repository update system for automated Nx migrations (#32124)
## Current Behavior

There is no automated system for updating multiple repositories with Nx
migrations, requiring manual updates across different repositories.

## Expected Behavior

A comprehensive TypeScript-based automation system that can efficiently
update multiple repositories with Nx migrations using GitHub CLI
integration and concurrent processing.

## Related Issue(s)

Introduces a new tool for automating repository updates with Nx
migrations.

## Changes Made

### 🚀 New Repository Update System
- **Automated repository cloning**: Uses GitHub CLI with shallow clones
(`--depth 1`) for fast setup
- **Package manager detection**: Automatically detects npm, pnpm, yarn,
or bun based on lockfiles
- **Concurrent processing**: Clones and updates multiple repositories in
parallel
- **Nx migration automation**: Runs `nx migrate` with automatic commit
generation
- **Pull request creation**: Automatically creates PRs with consistent
formatting

### 📁 Project Structure
```
tools/update-repos/
├── src/
│   ├── setup-repos.ts          # Clone repositories concurrently
│   └── update-repo.ts          # Update repos with migrations
├── config/
│   └── repos.json              # Repository configuration
├── project.json                # Nx project configuration
├── tsconfig.json               # TypeScript configuration
├── tsconfig.lib.json           # TypeScript library configuration
└── README.md                   # Comprehensive documentation
```

### ⚙️ Nx Targets
- `setup-update-repos`: Clone all configured repositories
- `update-nx-repo`: Update the Nx repository
- `update-ocean-repo`: Update the Ocean repository  
- `update-nx-examples-repo`: Update the Nx examples repository
- `update-all-repos`: Update all repositories with progress tracking

### 🔧 Key Features
- **OS temp directory isolation**: Stores clones in
`os.tmpdir()/updating-nx/repos`
- **TypeScript compilation**: Full Nx project with proper build pipeline
- **Error handling**: Comprehensive error catching and reporting
- **Verbose logging**: Real-time progress tracking with timestamps
- **GitHub CLI integration**: Authenticated operations for cloning and
PR creation

### 📚 Documentation
- Complete usage instructions and examples
- Architecture overview and workflow explanation
- Troubleshooting guide for common issues
- Performance optimization details
- Security considerations and best practices

This system provides a robust, scalable solution for maintaining
consistency across multiple repositories when updating Nx versions.
2025-08-21 15:49:25 -04:00
Jack Hsu 2c1461c13f docs(misc): use /docs as the base href of astro docs to the links and assets are generated correctly (#32453)
This PR updates the base href for the new astro docs to match how we
plan to launch it.

The assets including `_astro/` and `.netlify/` are rewritten correctly
now, as well as stripping trailing slash to match what we have in
Next.js.
2025-08-21 14:25:32 -04:00
Chau Tran a27707414d feat(graph): task graph support multiple targets (#32418)
- [x] graph-client supports multiple targets with multiselect and query
params `?targets`
- [x] `nx graph` supports multiple targets (i.e: `nx run-many -t
build,test --graph`

<img width="277" height="385" alt="image"
src="https://github.com/user-attachments/assets/6869b652-2ecb-4afb-9ae5-ec29628afec1"
/>
2025-08-21 13:00:21 -05:00
Jack Hsu 52e16823a6 docs(misc): skip Netlify adapter for astro-docs if local (#32446)
By skipping the Netlify adapter, local preview server works again.
2025-08-21 13:28:52 -04:00
Leosvel Pérez Espinosa 1fda6fe256 fix(angular): do not update project configuration when not changes were made in migration (#32448)
Avoid writing back the project configuration when the migration made no
changes to it.
2025-08-21 12:12:19 -04:00
Craigory Coppola d298de5dd9 fix(devkit): include UPDATE changes in findCreatedProjectFiles for generator callbacks (#31429)
## Current Behavior

getProjects(Tree) from project-configuration.ts does not return projects
created in generators when called from generator callbacks. This happens
because findCreatedProjectFiles only looks for changes with type ===
'CREATE', but during callbacks, the tree has already been flushed to
disk, so newly created project files are marked as 'UPDATE' instead of
'CREATE'.

## Expected Behavior

getProjects(Tree) should return all projects, including those created
during the current generator run, even when called from generator
callbacks.

## Changes Made

- Modified findCreatedProjectFiles() to include both CREATE and UPDATE
changes
- Added deduplication using Set to prevent duplicate project files
- Added comprehensive test coverage for the callback scenario

## Related Issue(s)

Fixes #29852

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: AgentEnder <AgentEnder@users.noreply.github.com>
2025-08-21 11:54:22 -04:00
Colum Ferry 1ca3cfef93 fix(angular-rspack): do not error on server budget violation (#32445)
## Current Behavior
Angular with Esbuild does not error when server bundles violate the
budgets.
Currently, Angular Rspack will error when server bundles violate the
budgets.

## Expected Behavior
Match the behaviour with Angular with Esbuild in Angular Rspack.
Do not error when server bundles violate the budgets.

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-21 16:34:54 +01:00
Craigory Coppola cb27e6a42f fix(misc): respect string values in alwaysAddToPackageJson migration flag (#32433)
## Summary

Fixed bug where `alwaysAddToPackageJson: "devDependencies"` was ignored
and always defaulted to "dependencies".

- Updated ternary logic in migrate.ts to properly handle string values
- Added comprehensive test case for string values
- Maintains backward compatibility with boolean values

## Test Plan

- [x] Added test case covering both "dependencies" and "devDependencies"
string values
- [x] Verified existing tests still pass
- [x] Confirmed backward compatibility with boolean values

Fixes #30586

Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Craigory Coppola <AgentEnder@users.noreply.github.com>
2025-08-21 10:19:36 -04:00
Craigory Coppola f7b4a0ebd2 fix(plugin): handle directory paths correctly in executor and generator generators (#31856)
Fixes path handling issue in @nx/plugin generators where the last folder
name in the path was being ignored.

The executor and generator generators were not creating subdirectories
as expected when provided with directory paths. This fix detects when
the path looks like a directory path and adjusts the directory to
include the artifact name as a subdirectory.

**Changes:**
- Modified normalizeOptions in both executor and generator generators to
detect directory paths
- Added logic to create subdirectories when the path segment matches the
artifact name
- Added comprehensive tests to verify the fix works correctly
- Ensures backward compatibility with existing file path usage

Fixes #31803
Fixes #31776

Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Craigory Coppola <AgentEnder@users.noreply.github.com>
2025-08-21 10:18:57 -04:00
Leosvel Pérez Espinosa d23cb37d7e fix(core): fail fast when running commands in parallel (#32386)
## Current Behavior

When running commands in parallel with `nx:run-commands`, if a command
fails, others are not stopped, and the task continues until all commands
finish. This means that if a long-running command is running, it won't
be stopped when other commands have already failed.

## Expected Behavior

`nx:run-commands` should fail fast. In a parallel execution, the rest of
the running commands should be terminated if a command fails.

## Related Issue(s)

Fixes #28477
2025-08-21 09:40:57 -04:00
Philip Fulcher 3682a89b85 docs(nx-dev): update subheading on Java landing page (#32444) 2025-08-21 15:18:31 +02:00
Colum Ferry b8f9a95266 fix(module-federation): do not rely on virtualRuntimeEntry #31831 (#32387)
## Current Behavior
Previously, we needed to rely on `virtualRuntimeEntry` to allow builds
between caching to operate successfully.

## Expected Behavior
In more recent version of `@module-federation/enhanced` this is no
longer the case.
By setting this option, it is now inflating the size of the bundles
produced by Webpack and Rspack
As it is no longer a strict requirement, remove it. 

Users can still set it manually if they run into issues

## Related Issue(s)

Fixes #31831
Fixes #32404
2025-08-21 14:13:20 +01:00
Caleb Ukle 22b8fc45af docs(nx-dev): handle reported content render/format issues (#32437)
- **docs(nx-dev): fixup markdoc usage across .mdoc files, closes:
DOC-144**
- **docs(nx-dev): clean up markdoc on tuts. closes: DOC-129**
- **docs(nx-dev): fix CTA text color issues**
- **docs(nx-dev): cleanup assets and fix img pathing when deployed.
closes DOC-130**
2025-08-21 08:25:31 -04:00
Colum Ferry d8b98e3e92 feat(vite): support vite 7 (#32422)
Add support for Vite 7
2025-08-21 08:17:12 -04:00
Craigory Coppola 885a3d515d fix(core): use black for all fg elements when in light theme (#32415)
## Current Behavior
We use dark gray for a secondary fg color, but when dimmed and in
certain terminals its not easy to read for light mode

## Expected Behavior
We've struggled with getting this pallet right for a while, while we
continue working on it we'll just set it to all black

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-20 23:42:59 -04:00
Craigory Coppola fc8f9a9f9a feat(js): add includeIgnoredAssetFiles option and per-asset includeIgnoredFiles (#31813)
## Summary

Adds support for including files that are ignored by `.gitignore` and
`.nxignore` when copying assets in @nx/js executors.

### Changes Made

- **Global option**: Added `includeIgnoredAssetFiles` option to
@nx/js:tsc and @nx/js:swc executors
- **Per-asset option**: Added `includeIgnoredFiles` option to
`AssetGlob` interface for granular control
- **Precedence logic**: Per-asset `includeIgnoredFiles` takes precedence
over global `includeIgnoredAssetFiles`
- **Updated all implementations**: Modified `CopyAssetsHandler`, batch
processing, and utility functions

### Usage Examples

**Global level** - include ignored files for all assets:
```json
{
  "executor": "@nx/js:tsc",
  "options": {
    "includeIgnoredAssetFiles": true,
    "assets": ["src/assets"]
  }
}
```

**Per-asset level** - include ignored files for specific asset patterns:
```json
{
  "executor": "@nx/js:tsc", 
  "options": {
    "assets": [
      {
        "glob": "**/*",
        "input": "src/assets",
        "output": "assets",
        "includeIgnoredFiles": true
      }
    ]
  }
}
```

### Test Plan

- [x] TypeScript compilation passes
- [x] All existing tests pass
- [x] Documentation updated automatically
- [x] Both TSC and SWC executors support the new options

###
Fixes: [20309](https://github.com/nrwl/nx/issues/20309)

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Craigory Coppola <AgentEnder@users.noreply.github.com>
Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-08-20 23:40:31 -04:00
Craigory Coppola 0e2b903515 fix(core): retry current message when receiving NX_VERSION_CHANGED from daemon (#32417)
## Current Behavior

When the Nx daemon detects a version mismatch and returns
`NX_VERSION_CHANGED`, the client shuts down the connection but doesn't
retry the current message that triggered the error. This causes the
current operation to fail silently.

## Expected Behavior

When `NX_VERSION_CHANGED` is received, the client should:
1. Shut down the current connection
2. Automatically retry the message that triggered the version change
error
3. Continue with the operation transparently

## Related Issue(s)

This improves daemon resilience when Nx versions change during
development.

Fixes #29446

## Changes Made

- Modified `packages/nx/src/daemon/client/client.ts` to track the last
sent message and retry it when `NX_VERSION_CHANGED` is received
- Added `retryLastMessage()` method to `PromisedBasedQueue` to support
message retry
- Added proper logging for version change detection in
`shutdown-utils.ts`

The fix ensures that operations don't fail when the daemon detects a
version change, improving the developer experience.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 23:40:17 -04:00
Jason Jean 4ba2085fec chore(repo): remove users from Claude GitHub Actions permissions (#32434)
## Current Behavior

The Claude GitHub Actions workflow includes xiongemi, ndcunningham,
isaacplmann, and mandarini in the allowed users list.

## Expected Behavior

These users should be removed from the allowed users list for Claude
GitHub Actions workflow permissions.

## Related Issue(s)

<!-- No specific issue number -->

Fixes configuration by removing users from allowed list.
2025-08-20 19:37:13 -04:00
Craigory Coppola 4ac6923328 fix(core): enhance validation for continuous task dependencies (#31786)
## Current Behavior
We error if a non-parallel task has a continuous dependency, but when
running a command that contains a task that depends on a continuous task
which itself is marked as non-parallel we do not error. This results in
the command hanging on the continuous non-parallel task, instead of
running the parent task as well.

## Expected Behavior
We error in both situations.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #

---------

Signed-off-by: AgentEnder <craigorycoppola@gmail.com>
Co-authored-by: Jason Jean <jasonjean1993@gmail.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-08-20 19:27:45 -04:00
Jason Jean cc7e7543c2 fix(core): only prompt for NX Console installation in TTY environments (#32425)
## Current Behavior

Currently, the NX Console installation prompt can appear in
non-interactive environments like CI/CD pipelines, causing processes to
hang indefinitely waiting for user input.

## Expected Behavior

The NX Console installation prompt should only appear in TTY
(interactive terminal) environments where users can actually respond to
the prompt.

## Related Issue(s)

This change adds a TTY check (`process.stdout.isTTY`) before showing the
NX Console installation prompt, preventing hanging in automated
environments while preserving the interactive experience for developers
working in terminals.
2025-08-20 15:10:55 -04:00
Juri Strumpflohner 20842f1468 fix(nx-dev): update navbar CTA buttons and updates event tracking (#32392) 2025-08-20 18:36:04 +00:00
Jack Hsu 8fbc5f6278 docs(misc): update Run Tasks feature pages so the title aligns with sidebar in both old and new docs (#32430)
The title didn't make much sense, let's update it.
2025-08-20 13:59:22 -04:00
Tomáš Čarnecký 9248dcd9a9 feat(nx): use platform certificate trust store (#31999)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior

Certificates in the local trust store are ignored, because reqwest
(rustls) is using webpki-roots.

## Expected Behavior

Certificates from the local trust store are trusted.

This PR solves this the same way as turborepo - by turning on the
`rustls-tls-native-roots` feature in reqwest.
2025-08-20 13:49:54 -04:00
Jack Hsu ec6274d225 docs(nx-dev): fix broken markdoc components in documentation (#32427)
This PR re-enables the escaped markdoc tags. Note that graph and PDV
tags that pointed to an external JSON file is changed to inline the JSON
instead so we don't need that extra file loading logic.

## Current Behavior
Multiple pages in the Astro documentation site display broken components
due to:
- Escaped template blocks (\{% ... %\}) that prevent proper rendering
- Component name mismatches using hyphens instead of underscores
- Missing side-by-side component causing "Undefined tag" errors
- Graph components showing "Could not parse JSON" due to markdown code
blocks
- External JSON file references not being inlined properly

## Expected Behavior
All documentation pages render correctly with:
- Proper template block syntax without backslash escaping
- Component names matching markdoc.config.mjs registrations
- All required components available and properly configured
- Graph and project_details components displaying JSON data inline
- All Markdoc components functioning as intended

<img width="824" height="849" alt="Screenshot 2025-08-20 at 10 55 53 AM"
src="https://github.com/user-attachments/assets/3d94e2a8-c971-49a6-a7aa-95ac40a8c86b"
/>

<img width="797" height="627" alt="Screenshot 2025-08-20 at 12 33 19 PM"
src="https://github.com/user-attachments/assets/1352e8bd-f5df-4db0-8679-a1627b2b6911"
/>

Also add back the `side_by_side` tag for now since it's used in a couple
of places:

<img width="797" height="627" alt="Screenshot 2025-08-20 at 12 33 19 PM"
src="https://github.com/user-attachments/assets/4ecaf12b-592f-4885-88d8-bc25e4c7d087"
/>
<img width="775" height="1059" alt="Screenshot 2025-08-20 at 12 55
23 PM"
src="https://github.com/user-attachments/assets/0cc32bd4-e2f0-41b9-b2a6-29edabccae0e"
/>


## Related Issue(s)
Fixes DOC-148

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-20 13:18:09 -04:00
Jack Hsu 2369e16b55 docs(nx-dev): convert code snippets to Starlight format for filename display (#32426)
## Current Behavior
Code snippets use custom Nx attributes (fileName and highlightLines)
that don't display properly in Astro Starlight

## Expected Behavior
Code snippets use Starlight's native format with filenames shown as
comments and highlights using curly brace syntax


<img width="980" height="710" alt="Screenshot 2025-08-20 at 10 58 07 AM"
src="https://github.com/user-attachments/assets/38c6629f-8be3-4934-b839-ae5ece980f36"
/>

## Related Issue(s)
Fixes DOC-137
2025-08-20 13:14:02 -04:00
Jack Hsu 4b77d136a4 feat(nx-dev): configure rewrite to astro-docs when NEXT_PUBLIC_ASTRO_URL is set (#32424)
This PR prepares for the canary environment where we can use `/docs/*`
for the new astro docs while keeping the same domain.

## Current Behavior
The nx-dev Next.js app doesn't have any rewrite rules for the `/docs`
path, making it unable to proxy requests to the Astro documentation
site.

## Expected Behavior
When the `NEXT_PUBLIC_ASTRO_URL` environment variable is set, the
Next.js app configures rewrites for `/docs` and `/docs/*` paths to proxy
to the Astro documentation site. If the environment variable is not set,
no rewrites are configured, maintaining backward compatibility.

## Related Issue(s)
Fixes DOC-134

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-20 13:13:53 -04:00
Jack Hsu 8973bae5d6 docs(nx-dev): remove duplicate h1 titles from mdoc pages (#32423)
## Current Behavior
The Astro/Starlight documentation pages display duplicate titles because
both the frontmatter title and an h1 heading in the content are being
rendered. This creates a poor user experience with the same title
appearing twice at the top of each page.

## Expected Behavior
Each documentation page should display its title only once. Starlight
automatically renders the frontmatter title as the page's h1, so there
should be no h1 headings in the content body. The frontmatter title
should be the single source of truth for the page title, with optional
sidebar labels for customization.

## Related Issue(s)
Fixes DOC-125
2025-08-20 13:13:45 -04:00
Leosvel Pérez Espinosa c7d0c7310b cleanup(core): normalize paths in test expectations to prevent test failures in macos (#32410)
## Current Behavior

Some test expectations fail in macOS due to some paths not being
normalized in the assertions.

## Expected Behavior

Tests should pass.
2025-08-20 12:56:32 -04:00
Jason Jean b8eb249c9a fix(core): handle unsupported platforms in Cursor IDE install command (#32419)
Fixes platform detection logic for Cursor editor to handle unsupported
OS gracefully.
2025-08-20 09:23:39 -04:00
Leosvel Pérez Espinosa 2788d91979 fix(js): do not infer the project type in the @nx/js/typescript plugin (#32421)
## Current Behavior

The `@nx/js/typescript` plugin incorrectly infers that all projects are
libraries. This is not correct, because apps also have tsconfig files
which would be processed and targets will be inferred for them (e.g.
`typecheck`). Depending on the order of the plugin execution, it can
result in projects having the wrong type.

## Expected Behavior

The `@nx/js/typescript` plugin should not infer the project type. The
project type will be correctly derived later, when the project graph
nodes are normalized.
2025-08-20 10:58:46 +00:00
Craigory Coppola bdb466ecfd fix(devkit): restore peer dep range to 2 majors (#32406)
## Current Behavior
Nx release now updates peer dependency versions, which is great... but
it broke the peer dep range in the published version of @nx/devkit.

## Expected Behavior
@nx/devkit maintains a version range of +/- 1 major version of nx. We
will fix release soon.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #31801 (already fixed, but comments on this highlighted the
problem)
2025-08-20 01:10:29 -04:00
Jason Jean 960b9c6f90 fix(core): ensure deterministic dummy task generation in task graphs (#32414)
## Summary

Fixes an issue where dummy tasks (created when dependency projects don't
have required targets) would generate non-deterministic dependency
structures based on target processing order.

## Current Behavior

When creating task graphs with targets in different orders, dummy tasks
would inherit different configurations from different source tasks,
leading to inconsistent task graphs.

For example:
- Processing `[test, lint]` vs `[lint, test]` would create the same
dummy task IDs
- But the dummy tasks would have different dependency structures
depending on which task created them first

## Expected Behavior

Task graphs should be deterministic regardless of target processing
order. The same dummy task should always have the same dependencies.

## Related Issue(s)

This addresses the issue described where task graph generation was
non-deterministic due to dummy task dependency variations.

## Test Plan

- [x] Added unit test: "should create deterministic task graphs
regardless of target order"
- [x] Verified existing tests continue to pass
- [x] Test validates task graphs are identical when targets are
processed in different orders

🤖 Generated with [Claude Code](https://claude.ai/code)
2025-08-19 18:27:18 -04:00
Jack Hsu 5c699c70ab docs(nx-dev): fix broken links in footer for astro site (#32413)
This PR fixes an issue where the astro site has broken footer links due
to them not being in the app.

e.g. https://nx-docs.netlify.app/getting-started/intro
2025-08-19 16:44:21 -04:00
Juri c02d448b9f feat(nx-dev): link ukg article on homepage 2025-08-19 22:38:52 +02:00
Nicole Oliver f2bda54c22 docs(misc): allow cookiebot to be disabled (#32394)
Allow for temporarily disabling the cookie consent mechanism.
2025-08-19 12:09:27 -07:00
Jack Hsu 47043550a8 docs(nx-dev): side technologies sidebar ordering and collapsed config (#32411)
## Current Behavior

The sidebar in the Astro docs has two issues:
1. Introduction pages are not appearing first in technology sections -
they appear after Generators, Executors, and Migrations
2. Nested groups (like Guides folders and sub-technology sections) are
expanded by default, making the sidebar difficult to navigate

## Expected Behavior

With this PR:
1. Technology sections now display items in the correct order:
   - Introduction (if exists)
   - Guides (if exists)
   - Generators (if exists)
   - Executors (if exists)
   - Migrations (if exists)
   - Everything else (other static files and nested sections)

2. All nested groups are collapsed by default for better navigation:
   - Guides folders are collapsed
- Sub-technology sections (Next, Remix, Express, Nest, etc.) are
collapsed
   - Any auto-generated folder groups are collapsed

<img width="789" height="484" alt="Screenshot 2025-08-19 at 2 30 36 PM"
src="https://github.com/user-attachments/assets/0562693c-b17a-4562-8f58-a0fba50fc6fe"
/>

## Related Issue(s)

DOC-122 (Linear)
2025-08-19 14:41:53 -04:00
Jack Hsu 62bc06023d docs(docker): remove @nx/docker@next in guides since it is in latest (#32409)
Remove `@next` from `@nx/docker` plugin instructions since we published
latest (21.4.0).
2025-08-19 13:11:52 -04:00
Chau Tran 4a1a6eeb00 fix(graph): some misc fixes to the graph (#32401)
- Expanded inputs with placeholder to prevent content shifting
- Bump `@nx/graph` to fix task graph missing transitive deps issue
- Disabling cache will throw runtime errors for expanded inputs
operation so putting in a couple of safe fallbacks when things are
undefined
2025-08-19 11:16:39 -05:00
Colum Ferry 782ffa79cc chore(angular-rspack): ensure details and codeowners are correct (#32408)
Fix details regarding codeowners and package info for angular-rspack and
angular-rspack-compiler
2025-08-19 16:49:57 +01:00
Jason Jean c38eb0f9f1 fix(webpack): migrate from deprecated url.parse() to WHATWG URL API (#32399)
## Current Behavior

The PostCSS CLI resources plugins in webpack, rspack, and angular-rspack
packages currently use the deprecated `url.parse()` and `url.format()`
methods, which generate security warnings:

```
(node:xxx) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead.
```

## Expected Behavior

The code should use the modern WHATWG URL API to eliminate deprecation
warnings and improve security.

## Related Issue(s)

This change addresses the Node.js deprecation of `url.parse()` due to
security implications and lack of standardization.

## Changes Made

- **URL Parsing**: Replace `url.parse(inputUrl)` with `new
URL(normalizedUrl, 'file:///')`
- **URL Reconstruction**: Replace `url.format({ pathname, hash, search
})` with simple string concatenation
- **URL Resolution**: Replace `url.resolve(deployUrl, outputUrl)` with
`new URL(outputUrl, deployUrl).href`

## Files Modified

- `packages/webpack/src/utils/webpack/plugins/postcss-cli-resources.ts`
- `packages/rspack/src/plugins/utils/plugins/postcss-cli-resources.ts`  
- `packages/angular-rspack/src/lib/utils/postcss-cli-resources.ts`

## Implementation Details

- Uses WHATWG URL API with a `file:///` base for parsing relative URLs
consistently
- Maintains backward compatibility - all existing functionality works
the same
- Simple string concatenation for URL reconstruction is cleaner and more
readable
- Clear variable names (`normalizedUrl`, `parsedUrl`) improve code
maintainability

## Testing

- All existing tests pass
- Build and lint validation successful
- No functional changes to URL handling behavior

This migration eliminates security warnings while modernizing the
codebase to use standardized URL APIs.
2025-08-19 11:08:19 -04:00
Jason Jean d22677f48f fix(core): improve Cursor editor detection and extension installation (#32374)
## Summary
- Add CURSOR_TRACE_ID environment variable detection for Cursor
- Simplify get_env_var to be purely map-based for better testability  
- Add Cursor support to extension installation logic
- Add test case for CURSOR_TRACE_ID detection

## Test plan
- [x] All existing tests pass
- [x] New test case for CURSOR_TRACE_ID detection passes
- [x] Rust code compiles and passes clippy checks
- [x] Prepush validation passes

This ensures Nx Console extension can be properly installed in Cursor
when the CURSOR_TRACE_ID environment variable is present, providing
better support for Cursor users.

Fixes #[ISSUE_NUMBER]
2025-08-19 11:02:33 -04:00
Leosvel Pérez Espinosa 74e0de0360 fix(angular): set the tsConfig option when possible to aid with angular migrations (#32355)
## Current Behavior

Running Angular migrations (particularly Angular Material migrations)
normally results in many warnings stating that projects were skipped.
This happens because Angular migrations make some assumptions that are
not guaranteed in Nx monorepos:

- build and test tasks are literally called `build` and `test` (it they
have a different name, the Angular migrations don't handle them)
- those tasks must have a `tsConfig` option set in the task `options`
object

While Nx can't change the first assumption, it can ensure that
`tsConfig` is set in some tasks that allow it.

## Expected Behavior

Tasks using the `@nx/angular:package`, `@nx/angular:ng-packagr-lite`,
and `@nx/jest:jest` executors should have the `tsConfig` option set to
aid the Angular migrations to run.

Note: This PR restores the `tsConfig` option for the `@nx/jest:jest`
executor that was recently removed. The option description states that
it is only metadata for Angular migrations and is not used by the
executor. The option will only be set by Nx generators for Angular
projects.

## Related Issue(s)

Fixes #32138
2025-08-19 15:28:10 +02:00
Leosvel Pérez Espinosa 4bf937e408 fix(js): improve @nx/js/typescript plugin check for buildable libraries (#32405)
## Current Behavior

The `@nx/js/typescript` plugin exhibits the following wrong behaviors
when it comes to determining whether a project is buildable:

- Having a custom conditional export other than `development` pointing
to a source file means the project is not buildable
- Having any conditional export pointing to source files means the
project is not buildable
- It falls back to check against included files when `outDir` is defined

The above creates issues where some buildable libraries are not
identified.

## Expected Behavior

The `@nx/js/typescript` plugin should behave as follows (simplified)
when it comes to determining whether a project is buildable:

- If `outFile` is defined:
- If the `.` entry point is defined and it's pointing to the `outFile`
or any of its conditional exports are pointing to the `outFile`, it's
buildable
- If `exports` is not defined and `main` or `module` are defined and
pointing to the `outFile`, it's buildable
  - Otherwise, it's not buildable
- Otherwise, if `outDir` is defined:
- If the `.` entry point is defined and it's pointing to a path
contained in the `outDir` or any of its conditional exports are pointing
to a path contained in the `outDir`, it's buildable
- If `exports` is not defined and `main` or `module` are defined and
pointing to a path contained in the `outDir`, it's buildable
  - Otherwise, it's not buildable
- Otherwise (no `outFile` and no `outDir`):
- If the `.` entry point is defined and it's pointing to a path not
matched by the `files` or `include` patterns or any of its conditional
exports are pointing to a path not matched by the `files` or `include`
patterns, it's buildable
- If `exports` is not defined and `main` or `module` are defined and
pointing to a path not matched by the `files` or `include` patterns,
it's buildable
  - Otherwise, it's not buildable

The above also ensures that custom conditional exports are not a factor,
given that all that is needed is that at least one conditional export is
deemed non-buildable.

## Related Issue(s)

Fixes #32116 
Fixes #32290
2025-08-19 12:44:45 +00:00
Marc Palm 8737c07957 fix(testing): fall back to tsconfig.json in the jest resolver (#32083)
## Current Behavior

The Jest resolver requires tsconfig.(spec|test|jest).json

## Expected Behavior

The Jest resolver falls back to tsconfig.json.
2025-08-19 14:13:38 +02:00
Jason Jean 2307a8d33f chore(testing): temporarily disable failing module federation tests (#32400)
Temporarily disables failing module federation e2e tests with TODO
comments for @Coly010 to re-enable once fixed.
2025-08-18 18:35:46 -04:00
Jason Jean 6abfbc8eba Revert "feat(webpack): migrate from deprecated url.parse() to WHATWG … (#32397)
…URL API"

This reverts commit f768886ae7.

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

Accidentally pushed this without review

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

Reverting it so it can be reviewed

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-18 17:52:16 -04:00
FrozenPandaz f768886ae7 feat(webpack): migrate from deprecated url.parse() to WHATWG URL API
Replace the deprecated url.parse() and url.format() methods with the modern WHATWG URL API in PostCSS CLI resources plugins to resolve security and maintainability concerns.

- Replace url.parse(inputUrl) with new URL(normalizedUrl, 'file:///')
- Replace url.format({ pathname, hash, search }) with simple string concatenation
- Replace url.resolve(deployUrl, outputUrl) with new URL(outputUrl, deployUrl).href
- Apply changes consistently across webpack, rspack, and angular-rspack packages

The deprecated url.parse() method is prone to security vulnerabilities and is not standardized. WHATWG URL API provides a modern, secure, and standardized way to parse URLs while maintaining all existing functionality.

Resolves deprecation warnings about url.parse() security implications.
2025-08-18 17:44:47 -04:00
Nicole Oliver 731e037f27 Revert "docs(misc): allow for disabling cookie consent" (#32391)
Reverts nrwl/nx#32378 to investigate make sure it works in production
environments as expected.
2025-08-18 16:16:22 +00:00
Nicole Oliver f6abf599d3 docs(misc): allow for disabling cookie consent (#32378)
Allow for temporarily disabling the cookie consent mechanism.
2025-08-18 08:38:12 -07:00
Jack Hsu c90809f919 docs(nx-dev): ensure rounded corners are used for codeblocks, asides, etc. (#32390)
This PR adds to the `components` CSS layers in Starlight to use rounded
corners for codeblocks and other components.

Examples:

<img width="793" height="884" alt="Screenshot 2025-08-18 at 10 25 04 AM"
src="https://github.com/user-attachments/assets/dbffa6a6-abf4-47f9-a840-9b20c588ae30"
/>
<img width="819" height="1082" alt="Screenshot 2025-08-18 at 10 24
58 AM"
src="https://github.com/user-attachments/assets/d5d75179-bf4d-4e0e-8fa6-ab97eb974d66"
/>
2025-08-18 10:52:33 -04:00
Jack Hsu f51215cb0d chore(nx-dev): improve error message when changelog fails due to expired token (#32389)
This PR improves our error message whenever our GitHub API token expires
so we're not confused about what's broken. It expires each year as
required by Octokit.

Current error:

```
 Error occurred prerendering page "/changelog". Read more:  https://nextjs.org/docs/messages/prerender-error
  HttpError: Bad credentials
```

New error:

```
Error occurred prerendering page "/changelog". Read more: https://nextjs.org/docs/messages/prerender-error

Error: The GitHub token is invalid or has expired. Please provide a new Personal Access Token (PAT) via the GITHUB_TOKEN environment variable.
```
2025-08-18 10:52:04 -04:00
MaxKless 5c6cd1fda6 docs(core): adjust MCP section with new VSCode integration (#32354) 2025-08-18 16:19:43 +02:00
Caleb Ukle c2c918d112 docs(nx-dev): move remaining cloud docs over (#32377) 2025-08-18 08:20:51 -05:00
Nicholas Cunningham 6ce1061471 fix(misc): update @types/node to v20.19.9 to support fetch API (#32092)
## Current Behavior

Nx currently installs an outdated `@types/node` version (18.16.9) which
lacks TypeScript definitions for the native `fetch` API introduced in
Node.js 18. This causes "fetch is undefined" TypeScript errors in NestJS
projects and other Node.js applications when using webpack transformers
or other build tools.

## Expected Behavior

The `fetch` API should be properly typed in TypeScript without requiring
additional type packages or workarounds. Users should be able to use the
native fetch API in Node.js applications without TypeScript compilation
errors.

## Related Issue(s)

Fixes #31637
Fixes https://github.com/nrwl/nx/issues/29714

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-18 14:00:16 +01:00
Caleb Ukle 8dee4ec540 docs(nx-dev): add redirects for astro docs (#32372)
add new redirects file
redirect root to the intro page
redirect legacy showcase projects to quickstart until those projects get
updated

closes: DOC-94
closes: DOC-114
2025-08-18 08:49:09 -04:00
Colum Ferry b5439b9ef8 fix(js): esm loader should handle absolute paths on windows #32376 (#32383)
## Current Behavior
ESM Loader for Windows is not working because it is encountering an
absolute path that is not using the `file://` protocol.

## Expected Behavior
Ensure that when loading the `esm-loader`, it uses the file protocol

## Related Issue(s)

Fixes #32376
2025-08-18 13:24:02 +01:00
Colum Ferry 55b446a654 feat(rspack): add support for converting webpack plugin configs #30292 (#32382)
## Current Behavior
We currently do not support converting webpack configs using
`NxAppWebpackPlugin` to `NxAppRspackPlugin`.

## Expected Behavior
Add support for converting webpack configs using the
`NxAppWebpackPlugin`.

## Related Issue(s)

Fixes #30292
2025-08-18 12:24:12 +01:00
Jonathan Gelin d5de2c6a50 fix(testing): support NX_CACHE_PROJECT_GRAPH when reading inferred config from jest cache file (#32380)
## Current Behavior

The Jest plugin does not use `NX_CACHE_PROJECT_GRAPH` in its
implementation. Unlike other plugins (e.g., ESLint, TypeScript), it does
not provide a way to control or disable its internal caching behavior.

## Expected Behavior

The Jest plugin should leverage `NX_CACHE_PROJECT_GRAPH`, ensuring
consistent caching behavior across Nx plugins. This would make it easier
to manage or override caching strategies when building higher-order
plugins that extend Nx core functionality.

## Related Issue(s)

Fixes #

---

### Additional Context

* When creating higher-order plugins that extend Nx core plugins, it’s
often useful to manage cache differently. Without this, concurrency
issues can occur if `createNodesV2` is invoked multiple times in
parallel.
* This highlights a broader need for improved plugin extensibility:

* Instead of re-invoking `createNodesV2` (which handles multiple files,
cache, etc.), it would be helpful to expose lower-level functions
responsible only for generating configuration.
* This would give plugin authors more granular control while reducing
unintended side effects.
2025-08-18 11:40:06 +02:00
Nicole Oliver fcfb5abd10 chore(nx-dev): update all docs references to the gradle plugin (#32373)
Changes references of the gradle plugin to "the Nx plugin for Gradle"
2025-08-15 21:42:56 +00:00
Jack Hsu 1ca6c22c17 docs(nx-dev): add breadcrumbs (#32371)
## Current Behavior
The Astro docs site doesn't display breadcrumbs at the top of the page
content, making navigation context unclear.

## Expected Behavior
Breadcrumbs should appear at the top of each page content (after the
page title) showing the navigation hierarchy, matching the behavior from
the original Next.js app.


<img width="1343" height="361" alt="Screenshot 2025-08-15 at 2 47 19 PM"
src="https://github.com/user-attachments/assets/8f2c983a-710f-4d0b-aa6e-b2303884596a"
/>
2025-08-15 16:27:18 -04:00
Jason Jean da0ac85822 chore(repo): update nx to 21.4.0-beta.12 (#32350)
Updating Nx from 21.4.0-beta.11 to 21.4.0-beta.12
2025-08-15 14:12:40 -05:00
Colum Ferry d48ff63ff9 fix(js): node executor handles processes robustly (#32356)
## Current Behavior

  The @nx/js:node executor had several process management issues:

- Multiple concurrent builds could cause overlapping/corrupted console
output,
  especially in NestJS projects
- Process stdout streams weren't properly coordinated between different
tasks
- Rapid file changes could trigger multiple simultaneous rebuilds
without
  proper debouncing
- Console output formatting could break with mixed output from
overlapping
  processes

## Expected Behavior

  The node executor should:

- Handle process output streams cleanly with no overlapping/corrupted
output
  - Properly debounce rebuild triggers to prevent resource conflicts
  - Maintain clean console formatting even with rapid file changes
- Coordinate output between concurrent processes using a global stream
manager

## Related Issue(s)

  Fixes #30247 
  Fixes #22999 
  Fixes #22945
2025-08-15 19:01:58 +01:00
Colum Ferry 9bbcbe4f36 fix(release): only delete version plans that are used #31327 (#32362)
## Current Behavior
When using version plans, after running the release command, version
plans were deleted.
This happened even if a `project` or `group` filter was supplied and not
all version plans were used.


## Expected Behavior
Ensure that:
- Only Version Plans for projects in filter are deleted
- If filtered projects exist in version plans that contain unfiltered
projects, hard error

## Related Issue(s)

Fixes #31327

---------

Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-08-15 15:20:44 +01:00
Colum Ferry 3142624522 fix(module-federation): module federation does not depend on static remotes port (#32363)
## Current Behavior
If a host does not have any remotes, it fails to serve as the
`staticRemotesPort` returns as `-Infinity`.

## Expected Behavior
When a host has no remotes, set `staticRemotesPort` to `undefined` and
use this to determine whether we should wait for it.
2025-08-15 15:08:34 +01:00
Leosvel Pérez Espinosa 18ba3157aa feat(js): add plugin option to skip build checks when inferring the build task (#32358)
Add a new option `skipBuildCheck` to the `@nx/js/typescript` plugin
build options to allow skipping the check for a buildable setup and
always infer a build task.
2025-08-14 18:36:19 -05:00
Leosvel Pérez Espinosa 42ec4d9f20 fix(core): handle .nx installation during nx migrate (#32357)
## Current Behavior

Running `nx migrate` in a non-js repo (no `package.json` in the
workspace root) hangs.

## Expected Behavior

Running `nx migrate` in a non-js repo should work correctly.
2025-08-14 14:50:11 -04:00
Jack Hsu b833f87ba5 fix(nx-dev): fix Open Graph image 404s (#32360)
Open Graph images on nx.dev are returning 404 errors for several pages:
- `/ai-chat` and `/changelog` reference non-existent
`/images/nx-media.jpg`
- `/extending-nx` references non-existent
`/images/open-graph/extending-nx.jpg`
- Pages with anchors have broken og:image URLs

All pages should have working Open Graph images for proper social media
sharing.

Fixes DOC-98

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-14 12:36:57 -04:00
Colum Ferry 34e1badd68 fix(release): handle git_protocol https when getting auth token #31828 (#32353)
## Current Behavior
When resolving token data for creating the GitHubReleaseClient, The GH
CLI supports `https` option for `git_protocol` and it is not being
handled.
This results in no token data being resolved.

Further API requests that require a `Bearer` token in the headers fail.

## Expected Behavior
Ensure `https` protocol is also handled.
`gh auth token` still operates and produces a token that can be used.

## Related Issue(s)

Fixes #31828
2025-08-14 13:36:48 +01:00
Colum Ferry 8bc353882b fix(react): host generator should not add loadRemote helper when no remotes (#32352)
## Current Behavior
When `nx g @nx/react:host` is used and 0 `--remotes` are passed, we
still add the `loadRemote` helper from
`@module-federation/enhanced/runtime`.
This causes a typecheck error as it is unused.

## Expected Behavior
Only add the helper when it is needed (i.e. >0 remotes).
2025-08-14 13:21:59 +01:00
Juri 722e4ffc81 docs(nx-cloud): optimize ttg 2025-08-14 09:03:26 +02:00
Jack Hsu 86858e2650 docs(nx-dev): add index pages with auto-generated directory cards and proper sidebar configuration (#32348)
## Current Behavior

The astro-docs structure lacks index pages for directory navigation,
making it difficult for users to discover and navigate between related
content sections. Additionally, some index pages were missing the proper
sidebar configuration to hide them from the navigation.

## Expected Behavior

With these changes, all directories in astro-docs now have proper
index.mdoc files that:
- Display auto-generated cards for subdirectory navigation using the `{%
indexpagecards %}` component
- Are hidden from the sidebar navigation with `sidebar: hidden: true`
- Provide clear entry points for discovering related content

The changes include:
- Added index.mdoc files for all technology, concept, guide, and
reference directories
- Implemented proper case handling for directory names (e.g., "Guides" →
"guides")
- Enhanced the IndexPageCards component to work with .mdoc files
- Ensured consistent sidebar configuration across all index pages

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-13 18:03:14 -04:00
Jack Hsu 77a32ac25f docs(nx-dev): make header more consistent with prod headers (#32349)
The Astro docs site header had a different structure and styling
compared to the production nx.dev header. It was missing key navigation
elements like the version switcher, Resources dropdown with icons, and
proper navigation ordering.

The Astro docs header now matches the production nx.dev header structure
with:
- Version switcher (v21, v20, v19) positioned correctly
- Resources dropdown with organized sections (Learn, Events, Company)
and icons
- Proper navigation order: Blog, Resources, | AI, Nx Cloud | Enterprise
- Consistent styling using Tailwind CSS classes
- Maintained social icons and theme switcher functionality
- All links without underlines and proper hover states

Fixes DOC-111
2025-08-13 18:02:55 -04:00
Nicole Oliver de9fbfe487 chore(nx-dev,graph): replace gradle logo (#32346)
Replaces the Gradle logo with the Java logo in our blogs, docs, and the
graph package.
2025-08-13 16:48:59 -04:00
Jack Hsu de59bf4a4c chore(misc): remove circular dep from @nx/cypress to itself and clarify why other remaining packages are ignored (#32344)
This removes the need to ignore `@nx/cypress` in
`packages/cypress/.eslintrc.json`. This was never really a ciruclar dep,
as
`packages/cypress/src/generators/configuration/files/v9/__directory__/plugins/index.js`
is a template for `generateFiles`, thus appending `__tmpl__` fixes it.

Other packages have valid reasons so a comment is added to clarify for
the future.
2025-08-13 16:12:58 -04:00
Louie Weng 0ff43a5638 feat(gradle): enable migrations to occur with workspaces using version catalogs (#32342)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

Our project graph gradle migrations currently only bump up the gradle
plugin if its versions are set in `build.gradle.kts` files. This means
that migrations will not work with workspaces that use version catalogs
and aliases.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

Given a workspace using the project graph gradle plugin on a legacy
version, migrations should bump up the version of the Nx gradle plugin
if its specified in `libs.versions.toml` instead of `build.gradle.kts`

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #NXC-2952
2025-08-13 14:30:11 -05:00
Caleb Ukle a56d7a468d docs(nx-dev): move external plugins docs (#32345)
move over plugin docs for
- [x] shared-fs-cache
- [x] azure-cache
- [x] s3-cache
- [x] gcs-cache
- [x] conformance
- [x] owners
2025-08-13 14:20:30 -05:00
Abdullah Ebrahim 72b6972d03 fix(release): add missing git config options to nx-schema (#32300) 2025-08-13 22:19:03 +04:00
Colum Ferry e3493cd36e fix(angular): prevent worker creation snippet from being added to worker file (#32339)
- Added "worker" to exclusion pattern in add-snippet.ts to prevent
worker creation code from being added to the generated worker file
itself
- Fixed double slash in tsconfig.worker.json template by removing extra
"/" since offsetFromRoot() already returns paths ending with "/"
- Added comprehensive tests to prevent regression including edge cases
with complex worker names

Fixes #31977
2025-08-13 16:42:21 +01:00
Wenzel dbb732fe0f fix(node): ensure cwd is set in target correctly (#31864)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->


<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->
The Nest.js webpack build target configuration was generating
webpack-cli arguments without the required cwd in build.options.
## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
The Nest.js webpack build target should generate proper webpack-cli
arguments with the cwd as part of the build.options
## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #31863

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-13 16:41:15 +01:00
Jack Hsu 0452910daf fix(vite): add tslib as a dep for @nx/vite and remove @swc/helpers (#32341)
When we switched to the TS solution setup with inferred `tsc` builds, we
didn't update the dependencies for `@nx/vite` to use `tslib` instead of
`@swc/helpers`. It was previously using `@nx/js:swc` executor, but now
`build-base` target is inferred as `tsc -b`.

It did not cause issues since other packages including `nx` always
install tslib, but technically it is incorrect, and we were ignoring the
errors by adding `tslib` and `@swc/helpers` to be ignored in
`.eslintrc.json`.

This PR also cleans up the eslint config for all other packages since we
do not need to ignore `tslib` for `@nx/dependency-checks` to pass.

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
`@nx/vite` is missing `tslib` dependency even though the built JS file
uses it.

## Expected Behavior
Should have `tslib` as a dependency and not `@swc/helpers`.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-13 11:36:43 -04:00
Leosvel Pérez Espinosa 48807b6d89 chore(repo): ensure cypress browsers are installed in nightly e2e (#32337)
## Current Behavior

Cypress nightly e2e tests for pnpm are failing due to missing Cypress
browsers.

Failing run:
https://github.com/nrwl/nx/actions/runs/16928038580/job/47967766466

## Expected Behavior

Cypress nightly e2e tests should succeed.

Passing run:
https://github.com/nrwl/nx/actions/runs/16938135801/job/47999869854
2025-08-13 10:56:32 -04:00
Colum Ferry 82f4b02e1e fix(rspack): enable build mode for TypeScript checker in TS solution setups (#32340)
When using TypeScript solution setup with rspack, conditionally enable
build mode for TsCheckerRspackPlugin to generate declaration files.
This prevents TS6305 errors in module federation scenarios where
declaration files are expected but missing.

Fixes #31929
2025-08-13 10:54:46 -04:00
Colum Ferry 4449b3afa3 fix(bundling): normalize Windows paths for additionalEntryPoints (#32336)
The additionalEntryPoints option was failing on Windows because
tinyglobby
expects POSIX-style paths but was receiving Windows-style paths with
backslashes.
This fix applies normalizePath to ensure cross-platform compatibility.

Fixes #29690
2025-08-13 15:43:52 +01:00
Caleb Ukle 91225fe33e docs(nx-dev): add documents for plugins (#32302)
add the plugin "documents" sections. this includes the
guides/concepts/intro pages for each item.
2025-08-13 14:37:24 +00:00
Jason Jean 2373b4526f chore(repo): update nx to 21.4.0-beta.11 (#32328)
Updating Nx from 21.4.0-beta.8 to 21.4.0-beta.11
2025-08-13 09:14:08 -04:00
Rodrigo Yokota f4f55cfaa3 fix(module-federation): skip splitChunk options for prod build (#32330)
## Current Behavior
Rspack + React + Module Federation applications are not able to work
properly due to the presence of splitChunks optimization on default web
configs.

## Expected Behavior
Optimizations like this should be overridden by the Module Federation
plugin in order for them to work.

## Related Issue(s)
https://github.com/nrwl/nx/issues/32329

Fixes #
Added override of splitChunks configs for Nx's Module Federation
plugins.

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-13 13:18:08 +01:00
Hassan Khan b360446a51 feat(expo): upgrade Expo to v53 and React Native to 0.79 (#31497)
Upgrades both `@nx/expo` and `@nx/react-native` to use the latest
versions of Expo and React Native. Expo iOS and Android builds work
perfectly.

> [!WARNING] 
> This PR explicitly does not modify `@nx/detox`; see comment
[here](https://github.com/nrwl/nx/discussions/19473#discussioncomment-13414668)
on a discussion about why Nx should consider using Maestro instead.

## Tasks

- [x] Fix `@nx/expo` E2E tests
- [x] Verify Android and iOS builds
- [x] Fix `@nx/expo` legacy tests (see comment
[here](https://github.com/nrwl/nx/pull/31497#issuecomment-2961048831))
- [x] Fix Android builds with `@nx/expo` 
- [x] Remove `react-test-renderer` from `@nx/expo` 
- [x] Add migration to remove dependencies from `@nx/expo`
	- [x] `@testing-library/jest-native`
	- [x] `react-test-renderer` 
- [x] Fix `@nx/react-native` E2E tests (see comment
[here](https://github.com/nrwl/nx/pull/31497#issuecomment-2964720118))
- [x] Verify Android and iOS builds (see comment
[here](https://github.com/nrwl/nx/pull/31497#issuecomment-2960921558))
- [x] Add migrations to update deps for `@nx/react-native`
- [x] Add migration to remove dependencies from `@nx/react-native`
	- [x] `@testing-library/jest-native`
	- [x] `jest-react-native`
	- [x] `react-test-renderer` 
- [x] Remove `react-test-renderer` from `@nx/react-native` 

## Changes

- Upgrade Expo to v53 and update project templates
- Upgrade React Native to v0.79 and update project templates
- Upgrade React to v19.0
- Upgrade `metro-config` and `metro-resolver` to v0.82.4 (fixes #30557)
- Remove `react-test-renderer`
- Remove `jest-react-native`
- Remove `@testing-library/jest-native`
- Fix bug in `@nx/expo` and `@nx/react-native` application generators
where the generated `package.json` was being overwritten (fixes #31416)

## Links

-
https://github.com/facebook/react/tree/main/packages/react-test-renderer#react-native-testing
-
https://callstack.github.io/react-native-testing-library/docs/migration/jest-matchers
-
https://react.dev/blog/2024/04/25/react-19-upgrade-guide#deprecated-react-test-renderer

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

Nx generates an Expo project using SDK v52, and React Native projects
using RN 0.76

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

Nx should generate an Expo project using SDK v53, and React Native
projects using RN 0.79

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #31498, #30557, #31416

---------

Co-authored-by: Emily Xiong <xiongemi@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-13 12:13:36 +01:00
Louie Weng 811d184874 feat(gradle): derive atomizer test names using AST parsing (#32275)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->
- use regex to get test class name

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
- remove the filter on the test file name
- use junit first to get test class name
- then if junit does not work, use regex as fallback
- fix warnings of unit tests
- upgrade dev.nx.gradle.project-graph to 0.1.3

in ci, in order to testClassDirs to exist, might need to run
compileTestKotilin or compileTestJava first.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Closes https://github.com/nrwl/nx/pull/31693

---------

Co-authored-by: Emily Xiong <xiongemi@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-12 17:58:45 -04:00
Colum Ferry 2c185d7fda chore(repo): fix snapshot tests (#32327) 2025-08-12 17:39:34 -04:00
Philip Fulcher 90fc51b417 docs(nx-dev): update community links on home page (#32321) 2025-08-12 14:58:13 -06:00
Jack Hsu ae10425e27 docs(misc): update astro-docs readme (#32325)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #

---------

Co-authored-by: Caleb Ukle <caleb@nrwl.io>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-12 15:21:57 -04:00
Colum Ferry 27e94373f0 chore(repo): fix release for angular-rspack (#32322)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-12 19:16:16 +00:00
Jack Hsu 2fd7bf8a8b docs(misc): bring deepdive callout back (#32324)
Bring back deepdive since it's pretty noisy otherwise.
2025-08-12 14:46:53 -04:00
Jack Hsu dc299c6bce fix(core): prevent error.log from generating during create-nx-workspace (#32317)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
Running `npx create-nx-workspace` always results in `error.log` in the
new workspace.

## Expected Behavior
No `error.log`

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-12 13:27:24 -04:00
James Henry aa32b1fc60 feat(release): allow custom nx-release-publish executors to read versionData (#32306) 2025-08-12 20:46:12 +04:00
Colum Ferry 85e1b9d40a fix(core): include nested library dependencies in generated package.json (#32313)
When using build targets with nested library dependencies (App -> lib1
-> lib2),
dependencies from the deepest libraries were not being included in the
generated
package.json due to restrictive target input patterns.

This fix adds an isTransitiveDependency parameter to findAllNpmDeps
function that
uses broader file patterns ({projectRoot}/**/*) when processing
transitive
project dependencies instead of the restrictive build target patterns.

Fixes #30895
2025-08-12 17:34:24 +01:00
Colum Ferry a24df404c4 fix(node): ensure windows paths are resolved correctly #31992 (#32318)
## Current Behavior
`joinPathFragments` in nest app generator for the target dir of the
template files is incorrect because it makes the path unix-style which
does not work for Windows.

## Expected Behavior
Use `path.join`

## Related Issue(s)

Fixes #31992
2025-08-12 12:34:08 -04:00
Colum Ferry 721066f1ce fix(misc): ensure generateFiles is called using path.join (#32319)
## Current Behavior
Using `joinPathFragments` with `generateFiles` is incorrect as we do not
take into OS-specific paths with `joinPathFragments`.
This is problematic when trying to read files on the system for Windows
users for example.


## Expected Behavior
Use `path.join` to ensure the correct file path is used and passed to
`readdirSync`
2025-08-12 12:33:45 -04:00
Colum Ferry 13f63eb79c fix(vite): set name property for test to project name #32163 (#32308)
## Current Behavior
The `name` property is not set for vitest configs. Vitest will therefore
infer the name for the test suite based off the directory name.
In a monorepo this can cause issues as the directory name may be
repeated but for different contexts.

## Expected Behavior
Set the project name as the name in the test config

## Related Issue(s)

Fixes #32163
2025-08-12 16:13:55 +01:00
Juri 94c7b7e38d docs(nx-dev): ukg article 2025-08-12 16:51:14 +02:00
Jason Jean eb5e2035d8 feat(angular-rspack): move angular rspack to nx (#32226)
# Description
Move Angular Rspack into the Nx repo.

The relevant packages are:
- angular-rspack
- angular-rspack-compiler

## Examples
Adds `Angular Rspack` examples to `examples/angular-rspack` which allow
for demonstration of various configs to use various features within
angular, such as:
 - proxy
 - ssr
 - ssg
 - i18n
 
These examples use `@nx/angular-rspack` with `workspace:*` protocol
allowing for immediate feedback on changes to `angular-rspack` and
`angular-rspack-compiler` to be reflected in these examples.
2025-08-12 10:43:20 -04:00
Colum Ferry f65e0cda61 chore(angular-rspack): typo in outputs for build 2025-08-12 15:41:51 +01:00
Colum Ferry f5bd135e08 chore(angular-rspack): repo operations related cleanups 2025-08-12 15:41:51 +01:00
Colum Ferry 737961bb02 chore(repo): reset angular rspack package versions after local release 2025-08-12 15:41:51 +01:00
Colum Ferry 4a34dc13c3 chore(repo): set release config for angular-rspack on project level 2025-08-12 15:41:51 +01:00
Colum Ferry 1b73284df1 fix(angular-rspack): ensure i18n inline plugin uses sourcemap correctly 2025-08-12 15:41:51 +01:00
Colum Ferry fcb10118dc chore(angular-rspack): ensure package can be released 2025-08-12 15:41:51 +01:00
Colum Ferry 16035f42fd feat(angular-rspack): add angular-rspack package 2025-08-12 15:41:51 +01:00
Jakub Chlebowicz fb99c3e56f feat(angular-rspack): Add "zoneless" option to enable Angular's provideZonelessChangeDetection() usage (#115)
* feat(angular-rspack): add "zoneless" option to disable zone.js initialization within PrerenderPlugin

* test: add e2e fixture for zoneless CSR with CSS spec

* test: add e2e fixture for zoneless CSR (i18n) with CSS spec

* test: add e2e fixture for zoneless SSG with CSS spec

* test: add e2e fixture for zoneless SSR with CSS spec

* fix: update import format

* fix: replace zoneless property, inferring zone.js polyfill presence instead

* fix: update pnpm-lock.yaml

---------

Co-authored-by: Jakub Chlebowicz <contact@jakubchlebowicz.com>
2025-08-12 15:41:51 +01:00
github-actions[bot] 73b26bcec5 chore(release): publish 21.2.0 2025-08-12 15:41:51 +01:00
Colum Ferry abc3eeb0c0 fix(angular-rspack): remove failing node importer 2025-08-12 15:41:51 +01:00
Colum Ferry 438fdf37eb feat(angular-rspack,angular-rspack-compiler): update to angular 20.1.0 2025-08-12 15:41:51 +01:00
Tobias Lampert 15addad3b8 fix(angular-rspack): delete build outputPath only once (#127) 2025-08-12 15:41:51 +01:00
Tobias Lampert b0d0b34942 fix(angular-rspack): add node_modules to includePaths if populated (#126) 2025-08-12 15:41:51 +01:00
Zack Yang 71d8b0463c feat(angular-rspack): support pkg scheme importer (#124) 2025-08-12 15:41:51 +01:00
Tobias Lampert b6ece01b24 fix(angular-rspack): fix ignore glob for .gitkeep (#121) 2025-08-12 15:41:51 +01:00
Tobias Lampert 91d141f119 feat(angular-rspack): include js-based postcss config (#120) 2025-08-12 15:41:51 +01:00
Tobias Lampert 9fd4905d70 fix(angular-rspack): apply SASS deprecation for global stylesheets (#119) 2025-08-12 15:41:51 +01:00
Tobias Lampert 109ab8b8cf feat(angular-rspack): support index transformer (#118) 2025-08-12 15:41:51 +01:00
Tobias Lampert 0031707719 fix(angular-rspack): exclude assets from being copied into server build (#117) 2025-08-12 15:41:50 +01:00
github-actions[bot] 42d7601016 chore(release): publish 21.1.0 2025-08-12 15:41:50 +01:00
Colum Ferry e3de95966f feat(angular-rspack,angular-rspack-compiler): support angular 20 (#99)
* feat(angular-rspack,angular-rspack-compiler): support angular 20

* chore(repo): integration test output updaet

* chore(repo): rsbuild-ssr-csr server entry update

* feat(angular-rspack): match changes in v20

* feat(angular-rspack): update nx and angular versions

---------

Co-authored-by: Leosvel Pérez Espinosa <leosvel.perez.espinosa@gmail.com>
2025-08-12 15:41:50 +01:00
github-actions[bot] dce72ef747 chore(release): publish 21.0.4 2025-08-12 15:41:50 +01:00
Colum Ferry a0bd226843 fix(angular-rspack): ensure mode is set based on optimization settings 2025-08-12 15:41:50 +01:00
github-actions[bot] d40dad833b chore(release): publish 21.0.3 2025-08-12 15:41:50 +01:00
Colum Ferry 75bcf5818a fix(angular-rspack): do not generate sourceMaps when disabled 2025-08-12 15:41:50 +01:00
github-actions[bot] 72c665d4cf chore(release): publish 21.0.2 2025-08-12 15:41:50 +01:00
Colum Ferry dd82e584bc fix(angular-rspack): ensure cjs for serve (#98) 2025-08-12 15:41:50 +01:00
github-actions[bot] f850f4c003 chore(release): publish 21.0.1 2025-08-12 15:41:50 +01:00
Colum Ferry 916c40b7c3 fix(angular-rspack): type warning on budgets 2025-08-12 15:41:50 +01:00
Marvin Scharle 6bfc5ebb74 fix(angular-rspack,angular-rspack-compiler): surface errors from ComponentStylesheetResult ensuring sass andincludePaths are passed (#87)
* fix: errors from ComponentStylesheetResult are hidden

if componentStylesheetBundler.bundleFile/bundleInline doesn't throw an error
but the results still contain errors, the errors will not be reported and
the resulting style sheet will be empty.

* fix: sass/includePaths are not passed to setup function
2025-08-12 15:41:50 +01:00
Colum Ferry c800283094 feat(angular-rspack): add appShell option (#93) 2025-08-12 15:41:50 +01:00
Colum Ferry 3cf92acf7a feat(angular-rspack): add budgets support (#92)
* feat(angular-rspack): add budgets support

* feat(angular-rspack): ensure style only bundles do not emit js
2025-08-12 15:41:50 +01:00
Colum Ferry c416a1e6e2 feat(angular-rspack): add granular optimization support (#89) 2025-08-12 15:41:50 +01:00
Colum Ferry 4b4dfd6910 feat(angular-rspack): finalize devServer options (#86) 2025-08-12 15:41:50 +01:00
Colum Ferry d3d6632eff feat(angular-rspack): add open option (#85) 2025-08-12 15:41:50 +01:00
Colum Ferry 586675761d feat(angular-rspack): add watch option (#84) 2025-08-12 15:41:50 +01:00
Colum Ferry f6c3414d46 feat(angular-rspack): add progress option (#83) 2025-08-12 15:41:50 +01:00
Colum Ferry 8435d56814 feat(angular-rspack): add verbose option (#82) 2025-08-12 15:41:50 +01:00
Colum Ferry f154f151b0 fix(angular-rspack): remove options that do not exist in Angular Webpack (#81) 2025-08-12 15:41:50 +01:00
Colum Ferry 99a0c65b01 feat(angular-rspack): add poll option (#80) 2025-08-12 15:41:50 +01:00
Colum Ferry 77d43762ce feat(angular-rspack): add statsJson plugin (#79) 2025-08-12 15:41:50 +01:00
Colum Ferry cd5d0d5e9f feat(angular-rspack): add hmr support (#78) 2025-08-12 15:41:50 +01:00
Colum Ferry 3f4a600f1f feat(angular-rspack,angular-rspack-compiler): reuse existing compilation if exists (#77)
* feat(angular-rspack,angular-rspack-compiler): reuse existing compilation if exists

* feat(angular-rspack,angular-rspack-compiler): ensure only affected file is rebuilt
2025-08-12 15:41:50 +01:00
github-actions[bot] f457f0f909 chore(release): publish 20.9.0 2025-08-12 15:41:50 +01:00
Colum Ferry d65617ec68 fix(angular-rspack): ssg should not run on serve (#75) 2025-08-12 15:41:50 +01:00
Leosvel Pérez Espinosa 3069a460ff chore(repo): update nx to 21.0.0 (#74) 2025-08-12 15:41:50 +01:00
Leosvel Pérez Espinosa 6c5fa44deb fix(angular-rspack): update @rspack/core dependency (#73) 2025-08-12 15:41:50 +01:00
Leosvel Pérez Espinosa 164d7169d7 fix(angular-rspack): ensure stylePreprocessorOptions is correctly used (#72) 2025-08-12 15:41:49 +01:00
Leosvel Pérez Espinosa a04beda332 feat(angular-rspack): add support for more devServer options (#71)
* feat(angular-rspack): add support for more devServer options

* fix(angular-rspack): write to disk in devServer only when needed
2025-08-12 15:41:49 +01:00
Leosvel Pérez Espinosa bd31b35b6f feat(angular-rspack): improve styles processing and support tailwindcss v4 (#70) 2025-08-12 15:41:49 +01:00
Colum Ferry b584b43f56 feat(angular-rspack): support static site generation (#65)
* feat(angular-rspack): attach platform server exports

* feat(angular-rspack): static site generation

* chore(repo): update ts project references
2025-08-12 15:41:49 +01:00
Colum Ferry 4569bec4a3 feat(angular-rspack): use development config for serve (#61) 2025-08-12 15:41:49 +01:00
github-actions[bot] bf8fcd164b chore(release): publish 20.8.2 2025-08-12 15:41:49 +01:00
Colum Ferry 3abc726836 fix(angular-rspack): handle windows disk drive in loader #53 (#64) 2025-08-12 15:41:49 +01:00
github-actions[bot] 8380acc412 chore(release): publish 20.8.1 2025-08-12 15:41:49 +01:00
Colum Ferry 2d870a2c66 chore(repo): ensure ignored deps 2025-08-12 15:41:49 +01:00
Colum Ferry ea523bc5df fix(angular-rspack): do not rely on nx workspace (#62) 2025-08-12 15:41:49 +01:00
Colum Ferry 19537bcb23 chore(angular-rspack): update ignored deps (#63) 2025-08-12 15:41:49 +01:00
github-actions[bot] e1f3d6e732 chore(release): publish 20.8.0 2025-08-12 15:41:49 +01:00
Colum Ferry 26435bba5a fix(angular-rspack): mark @angular/localize as optional peer dep (#60) 2025-08-12 15:41:49 +01:00
github-actions[bot] 3cbd53cf70 chore(release): publish 20.8.0-beta.0 2025-08-12 15:41:49 +01:00
Colum Ferry 14a5d66c0b chore(repo): migrate to nx 21.0.0-beta.8 (#59) 2025-08-12 15:41:49 +01:00
Leosvel Pérez Espinosa 162eeb7496 feat(angular-rspack): improve entry files handling and index.html generation (#56)
* feat(angular-rspack): improve entry files handling and index.html generation

* fix(angular-rspack): add back script for event replay and fix misc issues

* fix(angular-rspack): add tailwindcss as an optional peer dependency and remove unused variable

* fix(angular-rspack): use IndexHtmlPlugin to generate i18n index files

* fix(angular-rspack): fix i18n inlining

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-12 15:41:49 +01:00
Colum Ferry 7322435a08 feat(angular-rspack,angular-rsbuild): support web workers (#58) 2025-08-12 15:41:49 +01:00
Colum Ferry bcc24b0353 fix(angular-rspack): ensure ngDevMode set correctly by DefinePlugin (#57) 2025-08-12 15:41:49 +01:00
Colum Ferry ebb82e620c feat(angular-rspack): add service-worker support (#55) 2025-08-12 15:41:49 +01:00
Colum Ferry 4488d7aea6 fix(angular-rspack): multiple configurations (#54) 2025-08-12 15:41:49 +01:00
github-actions[bot] 1f54d6879a chore(release): publish 20.7.0 2025-08-12 15:41:49 +01:00
Colum Ferry 1dce594343 docs(angular-rspack): update readme 2025-08-12 15:41:49 +01:00
github-actions[bot] 7bfa547174 chore(release): publish 20.7.0-beta.0 2025-08-12 15:41:49 +01:00
Colum Ferry 8a7f4ee078 feat(angular-rspack): add support for i18n (#51) 2025-08-12 15:41:49 +01:00
Colum Ferry 8de0fc47b9 feat(angular-rspack,angular-rsbuild): add externalDependencies option (#50) 2025-08-12 15:41:49 +01:00
Colum Ferry 7631dee5f4 feat(angular-rspack,angular-rsbuild): add deleteOutputPath option (#49) 2025-08-12 15:41:49 +01:00
Colum Ferry 5c34e51e23 feat(angular-rspack,angular-rsbuild): add preserveSymlinks option (#48)
* feat(angular-rspack): add preserve-symlinks option

* feat(angular-rsbuild): add preserve-symlinks option
2025-08-12 15:41:49 +01:00
Colum Ferry 734e28b38f feat(angular-rspack): add allowedHosts option (#47) 2025-08-12 15:41:49 +01:00
Colum Ferry 5c6efd6cf9 feat(angular-rspack,angular-rsbuild): add define option (#45)
* feat(angular-rspack): add define option

* feat(angular-rsbuild): add define option
2025-08-12 15:41:49 +01:00
github-actions[bot] 21eab52310 chore(release): publish 20.6.2 2025-08-12 15:41:49 +01:00
github-actions[bot] cd45df77ba chore(release): publish 20.6.2-beta.0 2025-08-12 15:41:48 +01:00
github-actions[bot] 6e69fa6014 chore(release): publish 20.6.1 2025-08-12 15:41:48 +01:00
Colum Ferry 4fb7b4f2e2 fix(angular-rspack): publicPath for server should not be auto 2025-08-12 15:41:48 +01:00
github-actions[bot] dfd8881f07 chore(release): publish 20.6.0 2025-08-12 15:41:48 +01:00
github-actions[bot] ec355a7fda chore(release): publish 20.6.0-beta.1 2025-08-12 15:41:48 +01:00
Colum Ferry 3ce6dc3096 fix(angular-rspack): stylesheet should be attached to html (#41) 2025-08-12 15:41:48 +01:00
github-actions[bot] 520ca9815c chore(release): publish 20.6.0-beta.0 2025-08-12 15:41:48 +01:00
Colum Ferry 7281544a77 fix(angular-rspack): process styles correctly handling urls (#40) 2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa 6120883484 fix(angular-rspack): fix assets normalization (#39) 2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa 95b615033e feat(angular-rspack): support host option for the dev server (#38) 2025-08-12 15:41:48 +01:00
Michael Hladky 955a423f4e test(angular-rspack): add unit tests for angular loader (#17)
* test(angular-rspack): add unit tests for angular-transform-loader

* test(angular-rspack): add unit tests for angular-transform-loader

* fix: format

* fix: wip

* fix: test change

* fix: test change 2
2025-08-12 15:41:48 +01:00
github-actions[bot] 95667ddc68 chore(release): publish 20.5.0-beta.3 2025-08-12 15:41:48 +01:00
Colum Ferry b264efc27b chore(repo): add release pipeline (#37) 2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa 626b5e2649 refactor(angular-rspack): inline helpers from nx package (#36) 2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa eba77da2db feat(angular-rspack): improve createConfig public api (#35)
* feat(angular-rspack): improve `createConfig` public api

* feat(angular-rspack): warn about currently unsupported options
2025-08-12 15:41:48 +01:00
Colum Ferry e475715baf fix(angular-rspack): dev-server works for ssr (#34) 2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa c64a5fd219 feat(angular-rspack,angular-rsbuild): add root option and improve tsConfig handling (#33) 2025-08-12 15:41:48 +01:00
Colum Ferry b06f32e632 fix(angular-rspack): sass-loader should not be required when using css (#32)
* fix(angular-rspack): sass-loader should not be required when using css

* fix(angular-rspack): sass-loader should not be required when using css
2025-08-12 15:41:48 +01:00
Colum Ferry 00dc8c613b feat(angular-rspack,angular-rsbuild): add chunking options (#31)
* feat(angular-rspack,angular-rsbuild): add namedChunks option

* feat(angular-rspack,angular-rsbuild): add commonChunk and vendorChunk option
2025-08-12 15:41:48 +01:00
Colum Ferry 0c59e6f18f feat(angular-rspack,angular-rsbuild): add sourcemap option (#29) 2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa 8f48312f52 feat(angular-rspack): support extractLicenses option (#30)
* feat(angular-rspack): support `extractLicenses` option

* chore(angular-rspack): fix pipeline dependencies for unit-test tasks
2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa 4a333c04b7 feat(angular-rspack): support expanded syntax for assets, styles, and scripts (#28) 2025-08-12 15:41:48 +01:00
Colum Ferry df9c63d64f feat(angular-rspack,angular-rsbuild): add outputPath option (#27) 2025-08-12 15:41:48 +01:00
Colum Ferry ac2b08c385 feat(angular-rspack,angular-rsbuild): remove root from api (#23) 2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa 5678bf6cce feat(angular-rspack,angular-rsbuild): turn on/off advanced optimizations based on provided options (#26) 2025-08-12 15:41:48 +01:00
Leosvel Pérez Espinosa 6cc052d6d7 feat(angular-rspack,angular-rsbuild): support ssl, sslKey, sslCert, and proxyConfig options (#24) 2025-08-12 15:41:48 +01:00
Colum Ferry 833dd835ec feat(angular-rspack,angular-rsbuild): add outputHashing option (#22) 2025-08-12 15:41:48 +01:00
Colum Ferry ee1968b1b8 feat(angular-rspack,angular-rsbuild): rename ssrEntry to ssr.entry (#20) 2025-08-12 15:41:48 +01:00
Colum Ferry 9ed2dff0f2 feat(angular-rspack,angular-rsbuild): add optimization option (#21) 2025-08-12 15:41:48 +01:00
Colum Ferry 4ee1ab1cf4 feat(angular-rspack,angular-rsbuild): support passing devServer options (#16) 2025-08-12 15:41:48 +01:00
Colum Ferry 85a67be420 feat(angular-rspack,angular-rsbuild): rename inlineStylesExtension to inlineStyleLanguage (#14) 2025-08-12 15:41:47 +01:00
Colum Ferry bcce024ba8 feat(angular-rspack,angular-rsbuild): rename tsconfigPath to tsConfig (#13) 2025-08-12 15:41:47 +01:00
Colum Ferry 36e3b8723a feat(angular-rspack,angular-rsbuild): rename jit to aot (#11)
* feat(angular-rspack): rename jit to aot and invert

* feat(angular-rsbuild): rename jit to aot
2025-08-12 15:41:47 +01:00
Colum Ferry 598be1a0e9 feat(angular-rspack,angular-rsbuild): refactor withConfigurations to be createConfig (#9) 2025-08-12 15:41:47 +01:00
Colum Ferry ed30a96fb3 feat(angular-rspack): add withConfigurations (#6)
* feat(angular-rspack): add withConfigurations

* test(angular-rspack): add unit tests for withConfigurations

---------

Co-authored-by: Michael <michael.hladky@push-based.io>
2025-08-12 15:41:47 +01:00
Colum Ferry e4ea5359b7 feat: add new angular- packages and create legacy packages (#3)
* feat: add angular-rspack package

* feat: add angular-rspack-compiler package

* feat: add angular-rsbuild package

* docs: readme updates
2025-08-12 15:41:47 +01:00
Colum Ferry 31c2810e7e feat(angular-rspack): add angular rspack to nx repo 2025-08-12 15:41:47 +01:00
github-actions[bot] e691e4b9a8 chore(release): publish 21.2.0 2025-08-12 15:41:47 +01:00
Colum Ferry 331550b3ba fix(angular-rspack): remove failing node importer 2025-08-12 15:41:47 +01:00
Colum Ferry 0b180575b9 feat(angular-rspack,angular-rspack-compiler): update to angular 20.1.0 2025-08-12 15:41:47 +01:00
github-actions[bot] 4f7db7495d chore(release): publish 21.1.0 2025-08-12 15:41:47 +01:00
Colum Ferry 4a4f1d02a5 feat(angular-rspack,angular-rspack-compiler): support angular 20 (#99)
* feat(angular-rspack,angular-rspack-compiler): support angular 20

* chore(repo): integration test output updaet

* chore(repo): rsbuild-ssr-csr server entry update

* feat(angular-rspack): match changes in v20

* feat(angular-rspack): update nx and angular versions

---------

Co-authored-by: Leosvel Pérez Espinosa <leosvel.perez.espinosa@gmail.com>
2025-08-12 15:41:47 +01:00
github-actions[bot] 8079a29ef4 chore(release): publish 21.0.4 2025-08-12 15:41:47 +01:00
github-actions[bot] 5dea920efa chore(release): publish 21.0.3 2025-08-12 15:41:47 +01:00
github-actions[bot] a9534764af chore(release): publish 21.0.2 2025-08-12 15:41:47 +01:00
github-actions[bot] d7b72b2a9d chore(release): publish 21.0.1 2025-08-12 15:41:47 +01:00
Marvin Scharle 3de4b81149 fix(angular-rspack,angular-rspack-compiler): surface errors from ComponentStylesheetResult ensuring sass andincludePaths are passed (#87)
* fix: errors from ComponentStylesheetResult are hidden

if componentStylesheetBundler.bundleFile/bundleInline doesn't throw an error
but the results still contain errors, the errors will not be reported and
the resulting style sheet will be empty.

* fix: sass/includePaths are not passed to setup function
2025-08-12 15:41:47 +01:00
Colum Ferry 3e26ec7b82 feat(angular-rspack,angular-rspack-compiler): reuse existing compilation if exists (#77)
* feat(angular-rspack,angular-rspack-compiler): reuse existing compilation if exists

* feat(angular-rspack,angular-rspack-compiler): ensure only affected file is rebuilt
2025-08-12 15:41:47 +01:00
github-actions[bot] e2a97ae5cc chore(release): publish 20.9.0 2025-08-12 15:41:47 +01:00
github-actions[bot] 50c7f4cd48 chore(release): publish 20.8.2 2025-08-12 15:41:47 +01:00
github-actions[bot] b32c3bf9a2 chore(release): publish 20.8.1 2025-08-12 15:41:47 +01:00
Colum Ferry b22f91c0fa chore(repo): ensure ignored deps 2025-08-12 15:41:47 +01:00
github-actions[bot] 77da6ef704 chore(release): publish 20.8.0 2025-08-12 15:41:47 +01:00
github-actions[bot] 2262caa116 chore(release): publish 20.8.0-beta.0 2025-08-12 15:41:47 +01:00
Colum Ferry 6aa4c289d3 chore(repo): migrate to nx 21.0.0-beta.8 (#59) 2025-08-12 15:41:47 +01:00
Colum Ferry eaed993eaa feat(angular-rspack,angular-rsbuild): support web workers (#58) 2025-08-12 15:41:47 +01:00
github-actions[bot] fb0a3a6c89 chore(release): publish 20.7.0 2025-08-12 15:41:47 +01:00
github-actions[bot] cbb4fd0276 chore(release): publish 20.7.0-beta.0 2025-08-12 15:41:47 +01:00
github-actions[bot] b68eb08627 chore(release): publish 20.6.2 2025-08-12 15:41:47 +01:00
github-actions[bot] b42d19d1af chore(release): publish 20.6.2-beta.0 2025-08-12 15:41:46 +01:00
Colum Ferry 5a11d7a4ba fix(angular-rspack-compiler): depend directly on @angular/build 2025-08-12 15:41:46 +01:00
github-actions[bot] 4e553f4f09 chore(release): publish 20.6.1 2025-08-12 15:41:46 +01:00
github-actions[bot] fe2a9ba46b chore(release): publish 20.6.0 2025-08-12 15:41:46 +01:00
github-actions[bot] 5e8e2892be chore(release): publish 20.6.0-beta.1 2025-08-12 15:41:46 +01:00
github-actions[bot] 16f5c99a94 chore(release): publish 20.6.0-beta.0 2025-08-12 15:41:46 +01:00
github-actions[bot] 70606af1f6 chore(release): publish 20.5.0-beta.3 2025-08-12 15:41:46 +01:00
Colum Ferry 1f7760c3ec chore(repo): add release pipeline (#37) 2025-08-12 15:41:46 +01:00
Colum Ferry e43c358471 feat(angular-rspack,angular-rsbuild): rename inlineStylesExtension to inlineStyleLanguage (#14) 2025-08-12 15:41:46 +01:00
Colum Ferry 2a77be5397 feat(angular-rspack,angular-rsbuild): rename tsconfigPath to tsConfig (#13) 2025-08-12 15:41:46 +01:00
Colum Ferry 2214055e80 feat(angular-rspack,angular-rsbuild): rename jit to aot (#11)
* feat(angular-rspack): rename jit to aot and invert

* feat(angular-rsbuild): rename jit to aot
2025-08-12 15:41:46 +01:00
Colum Ferry 590ca385b4 feat: add new angular- packages and create legacy packages (#3)
* feat: add angular-rspack package

* feat: add angular-rspack-compiler package

* feat: add angular-rsbuild package

* docs: readme updates
2025-08-12 15:41:46 +01:00
Caleb Ukle 06f9a04a0d docs(nx-dev): add redirect for old cloud intro pages (#32315)
https://github.com/user-attachments/assets/93d4b3ed-dedf-4795-9495-4cbc66da12fb
2025-08-12 10:38:29 -04:00
Philip Fulcher c1f681deee docs(nx-dev): add August webinar (#32314) 2025-08-12 14:31:24 +00:00
Philip Fulcher ad20afe763 docs(misc): update CTA on Java landing page (#32299) 2025-08-12 14:25:29 +00:00
Colum Ferry 65386dbaaa fix(webpack): add missing serveStaticTargetName alternatives to webpack init generator (#32309)
- Added serveStaticTargetName options array with 5 alternative names
- Fixes conflicts when Angular module federation projects create
serve-static targets
- Allows webpack plugin to work with existing Angular setups without
manual nx.json editing

Fixes #32267 
Fixes #31384
2025-08-12 13:28:47 +01:00
Yordan Kanchelov cdf5edb4f6 fix(js): fix npm dist-tag error handling TypeError in release-publish executor (#32289)
### Summary
Fixes a TypeError in the Nx release-publish executor that occurs when
`npm dist-tag add` fails, preventing users from seeing the actual npm
error message.

### Problem
When `npm dist-tag add` fails during `nx release publish`, users see a
JavaScript TypeError instead of the actual npm error:

```
npm dist-tag add error:
Something unexpected went wrong when processing the npm dist-tag add output
 TypeError: Cannot read properties of undefined (reading 'summary')
    at runExecutor (/node_modules/@nx/js/src/executors/release-publish/release-publish.impl.js:207:50)
```

### Root Cause
The error handler attempts to access `stdoutData.error.summary` without
checking if `error` exists. Since npm dist-tag outputs errors to stderr
(not stdout), the parsed stdout is typically an empty object `{}`,
causing `stdoutData.error` to be `undefined`. Accessing `.summary` on
`undefined` throws a TypeError.

### Solution
Added optional chaining (`?.`) when accessing error properties to
prevent TypeErrors:

```javascript
// Before (throws TypeError):
if (stdoutData.error.summary) { ... }

// After (safe):
if (stdoutData.error?.summary) { ... }
```

### Example
**Before this fix:**
```bash
$ nx release publish
npm dist-tag add error:
Something unexpected went wrong when processing the npm dist-tag add output
TypeError: Cannot read properties of undefined (reading 'summary')
```

**After this fix:**
```bash
$ nx release publish
npm dist-tag add error:
# (The actual npm error from stderr is shown, or if no JSON error, the code continues gracefully)
```

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-12 12:31:33 +01:00
Nicholas Cunningham c320f38450 chore(testing): simplify jest resolver for workspace package imports (#32127)
## Current Behavior

Jest module resolution requires manual maintenance of workspace package
mappings in moduleNameMapper with brittle relative paths that break
across different directory structures.

## Expected Behavior

Dynamic workspace package resolution without manual maintenance, using
absolute paths that work from any test directory.

## Changes

- Remove all workspace package mappings from `jest.preset.js`
`moduleNameMapper`
- Add `@nx/*` and `nx/src/*` resolution to `patched-jest-resolver.js`
- Use absolute paths and efficient workspace root detection for PNPM
- Add file vs directory checks to prevent `EISDIR` errors

### References:
`ts-jest` project references issue:
https://github.com/kulshekhar/ts-jest/issues/1648
2025-08-12 09:25:41 +01:00
Jason Jean d2a05933e7 chore(repo): update nx to 21.4.0-beta.8 (#32301)
Updating Nx from 21.4.0-beta.6 to 21.4.0-beta.8
2025-08-11 22:14:02 +00:00
Jack Hsu bcedaab988 docs(misc): fix styling for custom tags (#32297)
Fix up styling for markdoc custom tags for Astro docs.
2025-08-11 16:31:18 -04:00
Jason Jean aeb1803a61 fix(core): prevent TUI buffer overflow panics in dependency view scrollbar rendering (#32292)
## Current Behavior

The TUI dependency view experiences buffer overflow panics when
rendering scrollbars on small or constrained terminal sizes. Users
encounter crashes with messages like "index outside of buffer" at
various coordinates such as (134, 37), (86, 0), (107, 0), etc.

## Expected Behavior

The TUI should handle all terminal sizes gracefully without crashing,
maintaining proper visual rendering of scrollbars and padding elements
while staying within buffer boundaries.

## Key Code Changes

The fix adds **clean, reusable helper functions** for bounds checking to
prevent buffer overflows:

### 1. **New Helper Functions** (lines 216-239):
```rust
/// Check if a rectangle fits within buffer boundaries
fn fits_in_buffer(area: &Rect, buf: &Buffer) -> bool {
    area.x + area.width <= buf.area().width && area.y < buf.area().height
}

/// Create a safe rectangle clamped to buffer boundaries
fn clamp_to_buffer(area: Rect, buf: &Buffer) -> Option<Rect> {
    if area.width == 0 || area.height == 0 {
        return None;
    }
    let safe_area = Rect {
        x: area.x,
        y: area.y,
        width: area.width.min(buf.area().width.saturating_sub(area.x)),
        height: area.height.min(buf.area().height.saturating_sub(area.y)),
    };
    if safe_area.width > 0 && safe_area.height > 0 { Some(safe_area) } else { None }
}
```

### 2. **Simplified Scrollbar Bounds Check** (lines 478-481):
```rust
// Render scrollbar with bounds checking
if let Some(safe_scrollbar_area) = Self::clamp_to_buffer(outer_area, buf) {
    scrollbar.render(safe_scrollbar_area, buf, &mut state.scrollbar_state);
}
```

### 3. **Cleaner Padding Validation** (lines 241-286):
```rust
fn render_scrollbar_padding(outer_area: Rect, buf: &mut Buffer, style: Style) {
    const PADDING_WIDTH: u16 = 2;
    const RIGHT_MARGIN: u16 = 3;
    const WIDTH_PADDING: u16 = 2;
    const TOTAL_WIDTH: u16 = PADDING_WIDTH + RIGHT_MARGIN + WIDTH_PADDING;

    // Early exit if area is too small or has no height
    if outer_area.width < TOTAL_WIDTH || outer_area.height == 0 {
        return;
    }
    
    // Use helper function for bounds checking
    if Self::fits_in_buffer(&top_area, buf) {
        // render top padding
    }
    if Self::fits_in_buffer(&bottom_area, buf) {
        // render bottom padding  
    }
}
```

**Key improvements:**
- **Reduced complexity**: Scrollbar bounds checking went from 11 lines
to 3 lines
- **Reusable helpers**: `fits_in_buffer()` and `clamp_to_buffer()` can
be used throughout the codebase
- **Named constants**: Replaced magic numbers with descriptive constants
- **Clear intent**: Function names clearly express what the code does

## Related Issue(s)

This fixes buffer overflow panics that occur when the terminal user
interface attempts to render scrollbar widgets and padding outside the
available buffer boundaries, particularly on smaller terminal sizes or
when the terminal is resized.

The fix adds minimal bounds checking to:
1. **Scrollbar rendering**: Validates the scrollbar area fits within
buffer boundaries before rendering
2. **Padding rendering**: Ensures top/bottom padding areas don't extend
beyond buffer limits

**Comprehensive test coverage added**: 10 unit tests covering all edge
cases including the specific problematic buffer dimensions that
previously caused panics (45×30, 76×30, 104×30, 135×37, etc.).

Tested across multiple terminal buffer sizes and confirmed no more
buffer overflow panics while maintaining correct scrollbar
functionality.
2025-08-11 16:08:09 -04:00
Caleb Ukle 7d1917f234 docs(nx-dev): setup content from old nx-dev into new site. (#32261)
TODOs:
- [x] intros
- [x] features
- [x] core guides
- [x] concepts (previously moved)
- [x] technologies (in progress)
    - [ ] module-federation pages are extra special
- [x] enterprise
- [x] ~showcase~ decided not to move since very outdated
- [x] references
- [x] troubleshooting

closes: DOC-93
contributes to: DOC-94
2025-08-11 19:28:15 +00:00
Juri 2a22b360f8 docs(nx-cloud): update self-healing CI setup to always require fix-ci command
Previously, the documentation indicated that the nx-cloud fix-ci command was only needed when not using Nx Agents. This has been updated to clarify that the fix-ci command is always required for self-healing CI functionality, regardless of whether Nx Agents are being used or not.

- Updated docs/shared/features/self-healing-ci.md to remove Nx Agents distinction
- Updated blog post to show fix-ci is always required
- Simplified CI configuration examples to show proper placement after nx commands
2025-08-11 20:54:50 +02:00
Colum Ferry 73a3e29421 chore(nx-release): fix release-publish test (#32291) 2025-08-11 12:41:30 -04:00
Luca Peruzzo 9ee4f4f7ed fix(vite): fix rollup replace files (#32100)
use resolved module as base path for the file replacement, making sure
the path will be absolute

## Current Behavior
file are replaced using the relative path written on the "with" key.
Using AnalogJs I have problems on using the fileReplacement feature
using vite dev server.
```ts
 mode === 'development' &&
      replaceFiles([
        {
          replace: './src/environments/environment.ts',
          with: './src/environments/environment.development.ts',
        },
      ]),
```
this is not working because modules are resolved with their absolute
path, so this piece of code:
```ts
const foundReplace = replacements.find((replacement) =>
      resolved?.id?.endsWith(replacement.replace)
);
```
is not finding anything with the leading './' (no log on console for
replacement).

Changing to this:
```ts
 mode === 'development' &&
      replaceFiles([
        {
          replace: 'src/environments/environment.ts',
          with: 'src/environments/environment.development.ts',
        },
      ]),
```
logs `replace "src/environments/environment.ts" with
"src/environments/environment.development.ts"` but vite throws an error
cause it doesn't find the module.
My solution ensures that files are replaced using the base path from the
existing module, replacing only the involved substring.

## Expected Behavior
correct file replacement
2025-08-11 16:07:52 +00:00
Gil Hanan bcd62f0aa5 fix(expo): update heading text assertion to use regex for flexibility (#31542)
## Current Behavior
The heading unit test for the @nx/expo:application generator uses
toHaveTextContent with a strict string comparison. This causes the test
to fail when the heading output includes minor formatting differences or
additional content.


![image](https://github.com/user-attachments/assets/0cfe6c22-25b7-4520-b929-b7854971eecd)


## Expected Behavior
The test should use a regular expression with toHaveTextContent to allow
partial matches.
2025-08-11 15:59:27 +00:00
Nicholas Cunningham 3eac62818a feat(node): enhance debugging support for Node applications (#31949)
### Summary

- Enhanced VS Code debugging: All Node applications now automatically
get VS Code
  debugging configuration
- Improved webpack source maps: Added `devtoolModuleFilenameTemplate`
for better
  debugging experience
- Smart port allocation: Automatically assigns unique debug ports to
prevent conflicts
- Comprehensive file support: Debug configuration supports `.js`,
`.mjs`, and `.cjs` output files

This improvement makes debugging Node applications in Nx workspaces
seamless and consistent across all frameworks and bundlers.
 
 closes: https://github.com/nrwl/nx/issues/14708
2025-08-11 16:20:54 +01:00
Nicholas Cunningham b6bab0bbff feat(js): add esm support for esbuild and running serve with the node executor (#31965)
This PR enables the Node.js executor to run ESM-only packages (like
`node-fetch`@3) alongside CommonJS modules.

### Changes:

- ESM loader: Implemented custom ESM resolver to handle Nx workspace
library mappings in ESM contexts
- Dynamic execution: Node executor now switches between CommonJS and ESM
loaders based on the detected module format
- esbuild updates: Enhanced esbuild executor to properly handle ESM
output formats and creating a proper `package.json`

closes: #10296

---------

Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-11 16:18:48 +01:00
Aidan Temple 18a93cf38c feat(js): ignore scoped export conditions (#32063)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

There is an emerging pattern of using scoped custom export conditions
for pointing to source. See:
- [Announcing TypeScript
5.7](https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/#path-rewriting-for-relative-paths:~:text=As%20a%20result%2C%20if%20you%E2%80%99ve%20been%20using%20a%20workspace%2Dstyle%20layout%20with%20multiple%20packages%20referencing%20each%20other%2C%20you%20might%20need%20to%20use%20conditional%20exports%20with%20scoped%20custom%20conditions%20to%20make%20this%20work%3A)
- [Live types in a TypeScript
monorepo](https://colinhacks.com/essays/live-types-typescript-monorepo#:~:text=Here%27s%20how%20a%20custom%20condition%20might%20look%20in%20your%20package.json.%20There%27s%20nothing%20special%20about%20the%20string%20%22%40colinhacks/zod%22%20here!%20It%20could%20be%20anything.)
- [Loading from
Source](https://github.com/isaacs/tshy?tab=readme-ov-file#loading-from-source)

## Current Behavior
<!-- This is the behavior we have today -->

When including an export condition that points to the source code the
typescript plugin does not add a build target. However, if this export
condition is named `development` the build target is added.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

Scoped export conditions pointing at source should not remove the build
target.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->
2025-08-11 16:13:07 +01:00
Jason Jean 23cc7465cc feat(core): add automatic pane switching for failed dependencies (#32006)
## Enhanced TUI Experience: Intelligent Pane Management and Dependency
Analysis

This PR significantly improves the TUI experience by implementing smart
pane switching and enhanced dependency visualization when tasks fail.

### 🚀 Key Features

#### Automatic Pane Switching for Failed Dependencies
- **Smart Detection**: When a task becomes skipped due to dependency
failures, the TUI automatically identifies the root cause
- **Intelligent Switching**: Panes showing skipped tasks automatically
switch to display the failed dependency's terminal output
- **Duplicate Prevention**: If both panes would show the same failed
task, the layout automatically consolidates to a single pane to avoid
redundancy

#### Enhanced Dependency View for Skipped Tasks
- **Root Cause Analysis**: Skipped tasks now show clear messaging about
which dependency caused the failure
- **Visual Indicators**: Skipped tasks use warning colors (orange
borders, scrollbars) to distinguish them from pending tasks
- **Interactive Navigation**: Users can scroll through dependencies of
skipped tasks to understand the failure chain

#### Centralized Status Icon System
- **Consistent Styling**: Created a centralized `status_icons` module
for consistent task status representation across all components
- **Unified Theming**: All status indicators (checkmarks, spinners,
warning symbols) now use consistent colors and styling

### 🔧 Technical Improvements

#### Code Optimization
- **Simplified Logic**: Replaced complex `matches\!` patterns with
direct equality checks where appropriate (e.g., `status_map.get(dep) ==
Some(&TaskStatus::Failure)`)
- **Cleaner Conditionals**: Converted nested match statements to more
readable if-else patterns using `matches\!` macro
- **Functional Programming**: Used iterator chains with `filter` and
`map` for cleaner collection processing

#### Enhanced State Management
- **Layout Consolidation**: When duplicate panes are detected, the
system automatically switches from double to single pane layout
- **State Consistency**: Proper cleanup of terminal pane data,
dependency view states, and layout areas when consolidating panes
- **Key Event Handling**: Extended keyboard navigation to work with both
pending and skipped tasks in dependency view

### 🎯 User Experience Improvements

#### Better Failure Visibility
- **Immediate Focus**: Failed dependencies are immediately brought to
the user's attention without manual navigation
- **Context Preservation**: When switching panes, the system maintains
proper focus and scroll states
- **Clear Messaging**: Skipped tasks display specific information about
which dependency failed rather than generic messages

#### Responsive Layout
- **Dynamic Adaptation**: Layout automatically adjusts from double to
single pane when appropriate
- **Consistent Theming**: Skipped tasks use warning colors throughout
the interface for immediate recognition
- **Improved Scrolling**: Enhanced scrollbar styling that adapts to task
status (warning colors for skipped tasks)

### 🛠 Files Changed

- **`app.rs`**: Core pane switching logic, layout management, and
automatic failure detection
- **`dependency_view.rs`**: Enhanced skipped task support, root cause
analysis, and improved styling
- **`tasks_list.rs`**: Integration with centralized status icon system
- **`graph_utils.rs`**: New dependency analysis functions for failure
chain detection

This enhancement transforms the TUI from a passive monitoring tool into
an intelligent assistant that proactively helps users understand and
navigate build failures.
2025-08-11 10:54:56 -04:00
Juri 0863163afa chore(repo): updates teh nx mcp to stdio as per notification 2025-08-11 16:43:10 +02:00
Jack Baker a3c54e8df7 cleanup(angular): remove CommonModule from component generators (#32215)
## Current Behavior
When generating a new Angular component it imports `CommonModule` by
default.

## Expected Behavior
The `CommonModule` is not needed as often in modern angular because of
the new control flow syntax and the move away from `[ngClass]` and
`[ngStyle]` in favour of `[class]` and `[style]`. It is also not
included by the official angular component generator.
2025-08-11 15:29:47 +01:00
Chau Tran 6e02724d69 chore(graph): bump graph version (#32287) 2025-08-11 13:45:26 +00:00
Colum Ferry 7ea6b8252a chore(repo): ensure playwright deps installed (#32283)
Ensure playwright deps are installed in e2e matrix workflow
2025-08-11 08:19:39 -04:00
Terry Mun-Andersen 4941173dd6 fix(module-federation): upgrade module federation to 0.18.0 (#32260)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

This PR upgrades both `@module-federation/enhanced` and
`@module-federation/sdk` to
[0.18.0](https://github.com/module-federation/core/releases/tag/v0.18.0),
which uses the transitive dependency koa@3 that contains a patch for the
reported vulnerability: https://nvd.nist.gov/vuln/detail/CVE-2025-8129

## Current Behavior
The `@module-federation/enhanced` and `@module-federation/sdk`
dependencies are on version 0.17.0, which contains a reported
vulnerability related to the use of koa@2.

This causes any consumers of the latest nx version to receive a security
vulnerability warning due to the transitive dependency koa@2 being
installed, e.g. via GitHub security overview:

<img width="938" height="375" alt="Screenshot 2025-08-07 at 23 26 26"
src="https://github.com/user-attachments/assets/d4653940-3a23-45c6-881f-639e4732fdce"
/>

## Expected Behavior
Having nx installed should not raise a security vulnerability warning.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

_n.a._

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-11 12:22:09 +01:00
Mohamed Muhsin 5fcc41a776 fix(core): update http-proxy-middleware to resolve vulnerability (#32278)
Update http-proxy-middleware to latest. 

This update resolves vulnerability in the package: 

[CVE-2025-32997](https://nvd.nist.gov/vuln/detail/CVE-2025-32997)
[CVE-2025-32996](https://nvd.nist.gov/vuln/detail/CVE-2025-32996)

---------

Co-authored-by: muhsin.kamil <muhsin.kamil@bonial.com>
Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-11 10:10:54 +01:00
Chau Tran 3289d8fe6f chore(graph): clean up graph command (#32279)
remove `createSpecificTaskGraphResponse` and call
`createExpandedTaskInputResponse` with array of 1 project instead
2025-08-11 10:05:55 +02:00
Chau Tran 014e775b73 chore(docs): bump graph version to fix nx-dev graph (#32273)
Bump `@nx/graph` version with the fix for `nx-dev`. This only happens
for pages with multiple project graphs because the internal
`ProjectGraphClient` assumes a singleton.
2025-08-09 01:21:26 +00:00
Chau Tran 06f56e9c1b chore(misc): tiny typo in cache poisoning blog post (#32276)
Just happen to check Victor latest commit
2025-08-08 21:53:36 +00:00
Victor Savkin c23ea7a7b4 chore(misc): minor tweaks in a blog post (#32274) 2025-08-08 20:35:20 +00:00
Jason Jean e8e006f679 feat(graph): optimize task graph loading with lazy loading and caching (#31581)
## Summary

Implements lazy loading for task graphs to significantly improve initial
load times in the graph visualization UI. Instead of loading all task
graphs upfront, graphs are now fetched on-demand based on user
interaction.

### Key Changes

- On-demand loading: Task graphs are loaded only when needed (when
selecting a target or specific projects)
- Server-side optimization: Efficient task graph generation for specific
targets and projects
- Client-side caching: Intelligent cache management to avoid refetching
already loaded graphs
- Multiple query patterns support:
  - `/tasks/:selectedTarget` - Load all projects with that target
- `/tasks/:selectedTarget?projects=app1 app2` - Load specific projects
only
  - `CLI: nx <target> <project> --graph`

### Server-side 
`packages/nx/src/command-line/graph/graph.ts`

- Added `createTaskGraphsForTargetAndProjects` function for flexible
task graph generation
- Modified `/task-graph.json` endpoint to support query parameters
(projects, target)
- Implemented proper handling for both UI (projects param) and CLI
requests
- Added server-side caching for task graphs (Map-based cache)

### Client-Side

Routes and Loaders (graph/client/src/app/routes.tsx)
  - Added selectedTargetLoader with cache-aware fetching
  - Integrated task graph cache for optimal data fetching
  - Simplified route structure by removing unnecessary metadata loader

Cache Management (graph/client/src/app/task-graph-cache.ts)
  - Created sophisticated TaskGraphCache class
  - Tracks individual project graphs and fetch status
  - Supports partial fetching (only missing projects)
  - Handles different query patterns intelligently

Components (graph/client/src/app/feature-tasks/tasks-sidebar.tsx)
  - Updated to use selectedTarget loader data
  - Graceful handling when no data is available

Service Layer (graph/shared/src/lib/project-graph-data-service/)
- Updated all service implementations to support getSpecificTaskGraph()
- Modified method signature to accept projects: string | string[] | null
  - Services updated: Fetch, Local, Mock, NxConsole

Type Definitions (graph/shared/src/lib/)
  - Updated ProjectGraphService interface
  - Cleaned up type imports and definitions

Build Configuration
  - scripts/generate-graph.ts - Simplified generation logic
- scripts/generate-graph-environment.ts - Updated workspace
configuration
  - graph/client/webpack.config.js - Updated asset paths
  - .gitignore - Updated ignored directories

### Bug Fixes (Latest Update)

### Performance Impact

**Before:**
- Generates ALL task graphs upfront (hundreds/thousands in large repos)
- Blocks main thread during generation
- Large network payloads regardless of usage
- No caching, regenerates on every request

**After:**
- Only generates task graphs when actually needed
- Lightweight metadata response for fast initial load
- Progressive loading as users explore
- Intelligent caching with cache invalidation
- **Stable and error-free**: No console crashes or race conditions

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Chau <25516557+nartc@users.noreply.github.com>
2025-08-08 15:19:36 -04:00
Abdullah Ebrahim 1119de1a9c fix(release): ensure no exception when conventionalCommits is false (#32256) 2025-08-08 19:14:12 +00:00
Colum Ferry 09c7ac8174 feat(docker): add --dockerVersion flag for specifying exact version (#32266)
## Current Behavior
There is no method for specifying an exact version for docker version
during `nx release`

## Expected Behavior
Add `--dockerVersion` to provide the user with a manner of providing an
exact docker version

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Colum Ferry <Coly010@users.noreply.github.com>
2025-08-08 20:06:02 +01:00
Jack Hsu 8c9154a1f0 docs(misc): add support for existing markdoc custom tags (#32270)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-08 14:01:46 -04:00
Jason Jean 39d548e999 feat(core): add argv field to Pre/Post Tasks Execution contexts (#32259)
## Current Behavior

The new Pre/Post Tasks Execution API was missing command information
that was available in the old `StoreRunInformationLifeCycle` system.
This made it impossible to track the original command that initiated
task execution, particularly problematic for complex commands like `nx
affected` and `nx run-many`.

## Expected Behavior

With this change, both `PreTasksExecutionContext` and
`PostTasksExecutionContext` now include an `argv: string[]` field
containing the complete raw command line arguments from `process.argv`.

## Related Issue(s)

Addresses the missing command information discussed in
https://github.com/nrwl/nx/discussions/29637

## Changes Made

- **Add `argv: string[]` field** to `PreTasksExecutionContext` interface
- **Add `argv: string[]` field** to `PostTasksExecutionContext`
interface
- **Pass `process.argv` directly** to both execution contexts
- **Remove command parsing functions** (no longer needed)

## Benefits

- **Complete Raw Data**: Provides full `process.argv` including node
executable path, script path, and all arguments
- **No Information Loss**: Every argument preserved exactly as passed to
the process
- **Better Analysis**: Consumers can parse/analyze arguments however
needed
- **Simpler Implementation**: No parsing required - just pass
`process.argv` directly

## Example

Instead of missing command information, plugins now receive:

```typescript
{
  workspaceRoot: '/path/to/workspace',
  nxJsonConfiguration: { ... },
  argv: [
    "/usr/bin/node",
    "/usr/local/bin/nx", 
    "affected",
    "--target=build",
    "--head=HEAD~1"
  ]
  // ... other fields
}
```

This is especially valuable for tracking complex commands like `nx
affected` and `nx run-many` where the original command context was
previously lost.

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-08 09:18:13 -05:00
Jason Jean 4383b649e4 chore(repo): add commit-msg hook for immediate commit validation (#32269)
## Current Behavior

Commit message validation only happens during the pre-push hook, which
means developers don't get feedback about incorrect commit message
format until they try to push their changes to the remote repository.

## Expected Behavior

Commit messages should be validated immediately when creating a commit,
providing instant feedback and preventing incorrectly formatted commits
from being created in the first place.

## Changes Made

- **Add `.husky/commit-msg` hook** - Validates commit messages before
commit creation
- **Enhance `scripts/commit-lint.js`** - Support both commit-msg hook
and existing pre-push validation
- **Add WIP support** - Allow "wip" messages to bypass format validation
for work-in-progress commits
- **Maintain backward compatibility** - Existing pre-push validation
continues to work

## Benefits

- Immediate feedback on commit message format
- Prevents bad commits from being created
- Supports WIP commits for development workflow  
- No disruption to existing validation process

## Related Issue(s)

This improves the developer experience by catching commit message format
issues earlier in the workflow.
2025-08-08 10:06:23 -04:00
Jack Hsu dea88f7e57 docs(misc): update styling and layout for astro docs (#32257)
It should match the original docs in terms of color, layout, etc. more
closely.
2025-08-08 08:14:08 -04:00
MaxKless 777ee735a5 fix(release): adjust publish error message and version schema (#31190)
Co-authored-by: James Henry <james@henry.sc>
2025-08-08 12:06:38 +02:00
Colum Ferry 385ecc870c feat(docker): add support for {env.VAR_NAME} (#32255)
## Current Behavior
We currently do not have a method for interpolating Environment
Variables into the `versionSchemes` for Docker Release.

## Expected Behavior
We allow the usage of `{env.VAR_NAME}` to interpolate Environment
Variables
2025-08-08 10:37:04 +01:00
MaxKless 6d3335dcd9 fix(core): repair nx mcp command (#32264) 2025-08-08 11:36:56 +02:00
MaxKless ee4a1e6efd fix(core): don't throw during migrate ui execution if migrations.json is gitignored (#32166) 2025-08-08 10:16:26 +02:00
Jason Jean c60258e45a test(node): disable failing esbuild e2e test (#32262)
## Current Behavior

The esbuild e2e test `it should generate an app that cosumes a
non-buildable ts library` is failing and causing CI issues.

## Expected Behavior

The test should be temporarily disabled until the underlying issue is
resolved.

## Related Issue(s)

The test failure is due to https://github.com/pinojs/pino/issues/2253.
This test should be re-enabled once that pino issue is resolved.

## Changes

- Added `.skip` to the failing test
- Added a TODO comment referencing the pino issue for when to re-enable
the test
2025-08-07 21:46:32 -04:00
Leosvel Pérez Espinosa 42a54d16b0 feat(core): calculate dependency view area safely in the tui and render its scrollbar in the correct position (#32187)
## Current Behavior

- Some resizing (e.g., splitting the terminal) when the TUI shows the
Dependency View causes the TUI to crash with an out-of-bounds issue
while rendering.
- The Dependency View shows the scrollbar as an inner scrollbar instead
of being located in place of the right border (like the Terminal Pane
does).

<img width="828" height="361" alt="image"
src="https://github.com/user-attachments/assets/b9f8de5f-6fb3-401c-9da3-4867cd71ca73"
/>

## Expected Behavior

- The TUI shouldn't crash when showing the Dependency View and a big
resize occurs.
- The Dependency View should show the scrollbar in place of the right
border (like the Terminal Pane does).

<img width="827" height="362" alt="image"
src="https://github.com/user-attachments/assets/a04bf7c0-00ca-485c-9f5f-5a316557bd3b"
/>
2025-08-07 17:28:12 -04:00
Caleb Ukle e0d9709acd docs(nx-cloud): fix typos and improve nx agent custom image docs (#32249)
apply pr suggestions from previous pr #32244 that I didn't push before
merging 🤦
2025-08-07 14:27:24 -05:00
Juri 89b98dd6af docs(nx-dev): add article about git worktrees 2025-08-07 20:37:20 +02:00
Jack Hsu baa2c8ea00 docs(misc): update sidebar for astro docs (#32199)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-07 11:51:32 -04:00
Nicholas Cunningham d89c0ac273 fix(nextjs): configure Jest to use tsconfig.json for Next.js apps (#32089)
## Current Behavior

When generating a Next.js application with Jest as the unit test runner,
Jest configuration fails because it defaults to looking for
`tsconfig.app.json` which doesn't exist in Next.js projects. Next.js
apps use `tsconfig.json` as their main TypeScript configuration file.

## Expected Behavior

Jest should be configured to use `tsconfig.json` as the runtime
TypeScript configuration for Next.js applications, allowing Jest to
properly resolve TypeScript configurations.

## Related Issue(s)

Fixes #31555
2025-08-07 09:47:19 -04:00
Nicholas Cunningham 69c7e4d0ce fix(misc): validate workspace names to reject names starting with numbers (#32088)
## Summary

Fixes #31602 by adding validation to `create-nx-workspace` to reject
workspace names that start with numbers, preventing confusing errors
later in the workspace generation process.

## Changes Made

- **Added `validateWorkspaceName()` function** - Validates that
workspace names start with letters
- **Integrated validation into workspace creation flow** - Validates
both command-line arguments and interactive input
- **Clear error messaging** - Provides helpful error message with
examples of valid names


🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-07 09:46:14 -04:00
Rob De Feo b195942800 chore(deps): update tmp and @types/tmp dependencies (#32247)
## Current Behavior
The repository currently uses outdated versions of the `tmp` and
`@types/tmp` dependencies:
- `tmp` version ~0.2.1
- `@types/tmp` version ^0.2.0

## Expected Behavior
Update to the latest compatible versions of these dependencies:
- `tmp` version ~0.2.4
- `@types/tmp` version ^0.2.6

This will ensure we have the latest bug fixes and improvements from
these packages.

## Related Issue(s)
This is a general dependency update to keep the project up to date.

## Related Issue(s)
[tmp allows arbitrary temporary file / directory write via symbolic link
`dir` parameter](https://github.com/advisories/GHSA-52f5-9888-hmc6)

Fixes Github advisory https://github.com/advisories/GHSA-52f5-9888-hmc6
2025-08-07 09:41:39 -04:00
Emily Xiong b5ccbcd45a fix(gradle): fix gradle bootRun continuous (#32107)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->
when running gradle command with args, it requires to use
--args="--continutous"
for bootRun, which is continuous, i got an error
```
Execution failed for task ':bootRun'.
> Failed to query the value of task ':bootRun' property 'mainClass'.
   > Querying the mapped value of task ':resolveMainClassName' property 'outputFile' before task ':resolveMainClassName' has completed is not supported
 ```

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR -->
change it when just running `nx run demo:bootRun --continuous`, it will pass --continuous directly to ./gradlew. 
any args not in the list
```
new Set([
    'taskName',
    'testClassName',
    'args',
    'excludeDependsOn',
    '__unparsed__',
  ]);
  ```
  will passed as arga to the ./gradlew 
  i try to add `__unparsed__`, but it is always empty.
  
for bootRun, i add excludeDependsOn as false in nx.json and that error
goes away.
  ```
      "bootRun": {
      "options": {
        "excludeDependsOn": false
      }
    }
    ```
    
so for all continuous task, i changed excludeDependsOn as false in the
option


## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-07 09:40:27 -04:00
Leosvel Pérez Espinosa 82fb5c4cf3 fix(core): ensure task details are always stored in the task history (#32246)
## Current Behavior

When Nx Cloud is enabled, task details are not stored in the task
history. This results in features like local flaky task detection or
displaying estimated task durations in the TUI not working.

## Expected Behavior

Task details should always be stored in the task history regardless of
Nx Cloud being enabled.
2025-08-07 09:38:32 -04:00
Jason Jean 7118ca3dde fix(gradle): normalize project root paths (#32243)
## Current Behavior

The Gradle plugin does not normalize project root paths when creating
project nodes, which can lead to inconsistent path handling across
different operating systems and file systems.

## Expected Behavior

Project root paths should be normalized using `normalizePath` from
`@nx/devkit` to ensure consistent path handling regardless of the
operating system or file system.

## Related Issue(s)

This is a general improvement to prevent potential path-related issues
in Gradle project detection and configuration.
2025-08-07 09:37:29 -04:00
Caleb Ukle 6dff632112 docs(nx-cloud): add page for custom images w/ Nx Agents (#32244)
Explain how to use custom images for nx agents with both recommended and
manual options.
2025-08-07 08:20:32 -05:00
Caleb Ukle 8ec6aa6d3c docs(nx-dev): add CTA variants (#32232)
<img width="794" height="589" alt="image"
src="https://github.com/user-attachments/assets/721c8e60-96ce-46c1-813c-5190f2f68f07"
/>
<img width="1056" height="625" alt="image"
src="https://github.com/user-attachments/assets/a117e857-2d65-4484-a778-c20dd20de7b6"
/>
2025-08-07 08:17:33 -05:00
Caleb Ukle 166a05016b docs(repo): add plugin registry to new docs site (#32183)
add basic registry page at /plugin-registry

Note: most of this work was aimed at getting the content to the page, we
can come back to making the plugin registry page prettier and have more
functionality in future PRs

![WKMac
2025-08-04T19-37-52](https://github.com/user-attachments/assets/ce320df0-505b-4e94-b1ce-7c8cf9ad52f9)

resolves: DOC-71
2025-08-07 01:39:05 +00:00
Josh VanAllen 430b11b398 fix(nx-cloud): auth token env var usage (#32240)
This is to ensure that the NX_CLOUD_AUTH_TOKEN is treated the same as
ACCESS_TOKEN.

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

If there isn't any Nx Cloud properties in the `nx.json`, the CLI doesn't
recognize `NX_CLOUD_AUTH_TOKEN` as a environment variable to communicate
with Nx Cloud. If I provide just `NX_CLOUD_ACCESS_TOKEN`, the CLI does.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Since `AUTH_TOKEN` is suppose to be an alias for `ACCESS_TOKEN`, the
behavior should be the same.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-07 00:55:13 +00:00
Miroslav Jonaš 32eddced88 docs(nx-dev): remove unmaintained go plugin (#32145)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
This plugin is listed first, despite being last maintained 3 years ago.

## Expected Behavior
We should not show unmaintained projects when there are others covering
the same technology that are maintained

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-06 18:40:00 -04:00
Jason Jean 92160d71f1 chore(repo): update nx to 21.4.0-beta.6 (#32233)
Updating Nx from 21.4.0-beta.4 to 21.4.0-beta.6
2025-08-06 17:21:12 -05:00
Nicholas Cunningham 361c0f56d1 chore(repo): enable parallel e2e tests on CI (#32173)
## Current Behavior

E2E tests are distributed to agents but run sequentially (1 per agent),
underutilizing agent capacity.

## Expected Behavior

E2E tests run in parallel (2-3 per agent) with proper port allocation to
prevent conflicts.

## Changes Made

- Add port allocation utilities to prevent port conflicts in parallel
tests
- Configure CI agents to run 2-3 e2e tests in parallel per agent
- Keep `e2e-release` sequential due to shared git state requirements

### MISC
- On CI browsers (cypress/playwright) are already pre-installed, we
improve this by short-circuiting the installation.

---------

Co-authored-by: Jason Jean <jasonjean1993@gmail.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-06 17:40:01 -04:00
Juri Strumpflohner 44f6b2821d fix(nx-dev): adjust mobile layout for homepage (#32237) 2025-08-06 22:03:31 +02:00
Caleb Ukle 6d9f05c83c docs(nx-cloud): update refs to old /ci/intro pages (#32242)
update links pointing to deprecated /ci/intro pages
2025-08-06 20:01:07 +00:00
Jack Hsu a19f83cb2c docs(misc): update cookiebot consent check so it works when cookiebot is blocked (#32241)
The website should still function when Brave shield is up.


`window.Cookiebot` defaults to `<script id="Cookiebot">` when the script
is blocked... so the original check is not fully correct.
2025-08-06 15:49:31 -04:00
Colum Ferry 3551913632 chore(docker): ensure docker is available before running e2es (#32224)
Docker is not always available in our CI envs. Perform a check first to
ensure it is.
2025-08-06 09:05:56 -04:00
Colum Ferry e387a01729 fix(core): provide hint that vite will be used when selecting React Router (#32238)
## Current Behavior
React Router requires using a Vite plugin. This means that during the
CNW flow, if a user selects `Yes` to the prompt for `React Router for
SSR`, we do not prompt them for `bundler`.
This can be confusing for users that expect to be able to select
bundler.

## Expected Behavior
Clarify during the prompt for React Router for SSR that Vite will be
selected as the bundler.
2025-08-06 13:58:08 +01:00
Nicole Oliver 32272588b1 feat(nx-dev): adjustments to nx.dev homepage (#32235) 2025-08-06 09:44:03 +02:00
Caleb Ukle 334d74ea1c docs(misc): add examples pages to generated plugin pages (#32221)
add the plugins docs/ files as examples for the generator and executor
generated pages.
2025-08-05 15:27:15 -05:00
Caleb Ukle 24f03bb1b3 docs(nx-cloud): remove redundant intro pages for nx-cloud (#32216)
intro docs for nx-cloud aren't needed as it's duplicate information and
should instead be covered by the regular intro flows, which now mention
nx cloud.
Moved over some content into applicable pages, such as `nx g
ci-workflow` command and calling out `nx connect` command in places.
2025-08-05 13:44:10 -05:00
Chau Tran cc50fda71a chore(graph): up nx graph 0.5.2 (#32230)
increase the expansion selection threshold to 15
2025-08-05 13:30:25 -05:00
Jack Hsu acc84b014f chore(misc): update CODEOWNERS (#32231)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-05 13:59:16 -04:00
Jack Hsu 1fc32e45e9 chore(misc): add owners to astro-docs (#32228)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-05 13:28:40 -04:00
Leosvel Pérez Espinosa b68c349cf3 fix(misc): loose and fix the ts solution setup requirements and use it when there is no root tsconfig file (#32150)
## Current Behavior

- The logic to detect whether the workspace uses the TS solution setup
restricts the top-level properties in the `tsconfig.base.json` file and
only allows `compilerOptions`. This prevents extending from other
tsconfig files in the `tsconfig.base.json` file.
- Generating projects in a workspace without any known root tsconfig
files (`tsconfig.json`, `tsconfig.base.json`) results in the old setup
being generated. Workspaces without root TS configuration should be able
to use the TS solution setup.

## Expected Behavior

- The logic to detect whether the workspace uses the TS solution should
not restrict the top-level properties in the `tsconfig.base.json` file.
The only things required for the TS solution setup are to have
`composite: true` and `declarations` enabled.
- The TS solution setup should be used when generating projects in a
workspace without any known root tsconfig files (`tsconfig.json`,
`tsconfig.base.json`).

## Related Issue(s)

Fixes #32134
2025-08-05 12:15:46 -04:00
Jack Hsu 847d69908d docs(misc): add cookies prompt (#32197)
Add cookie consent for website using
[Cookiebot](https://www.cookiebot.com).

Moves all tracking logic into
`window.addEventListener('CookiebotOnAccept', ...)` callback.
2025-08-05 12:10:03 -04:00
Juri Strumpflohner bc78f06f79 docs(core): update monorepo concept page (#32213)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-05 15:01:53 +00:00
Juri Strumpflohner 01b5078192 chore(repo): fixes weird post-checkout issue when using worktrees (#32229)
when using worktrees I'm getting an error like

```
❯ git worktree add ../test-feat-a feat-a
Preparing worktree (checking out 'feat-a')
Updating files: 100% (9887/9887), done.
HEAD is now at c14325d3d3 feat(nx-dev): update nx.dev homepage (#32132)
fatal: bad object 0000000000000000000000000000000000000000
husky - post-checkout script failed (code 128)
```

this is due to our post-checkout husky hook. This PR fixes it
2025-08-05 09:54:46 -05:00
Colum Ferry 9e7b95bf28 fix(react): remote generator should normalize names (#32211)
## Current Behavior
Running the `@nx/react:remote` generator as a standalone generator in a
TS Proj Workspace will result in the generator throwing an error that
`@org/remoteName` is invalid.

## Expected Behavior
Ensure we normalize the project name early to disregard the scope that
is added.
This matches the behaviour of the host generator.

## Related Issue(s)

Fixes #30807
2025-08-05 15:29:34 +01:00
Philip Fulcher e0b4ee3dc2 docs(nx-dev): add workspace graph article (#32218) 2025-08-05 08:14:47 -06:00
Emily Xiong 419a4a849f fix(gradle): always add plugin to all projects (#32222)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-05 10:05:34 -04:00
Emily Xiong 74fcd17288 fix(gradle): keep original gradle name (#32220)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->
currently, the project name is just last part to full gradle path, for
example:
- gradle path for :parent-path:project-name, it currently takes only
project-name
this might create duplicates in a large project

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
- change the name to match gradle path exactly, then the project name
would just be the gradle path
- for example, the gradle command would be `./gradlew
:parent-path:project-name:build`, nx command would be `nx run
:parent-path:project-name:build`


https://linear.app/nxdev/issue/NXC-2917/fix-terminal-ui-compatibility-with-gradle-naming
need to be fixed before this pr

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-08-05 10:04:41 -04:00
Nicholas Cunningham 98ee167514 fix(js): handle npm 11 warnings in stderr during registry version resolution (#32223)
## Current Behaviour

E2e tests fail with Node 24 because npm 11 writes deprecation warnings
to stderr even on successful commands, causing registry version
resolution to fail.

## Expected Behaviour

Registry version resolution should work with npm 11 warnings in stderr.

## References
```
 NX   Unable to resolve the current version from the registry: "registry=http://localhost:4873" tag=latest. Please ensure that the package exists in the registry in order to use the "registry" currentVersionResolver. Alternatively, you can use the --first-release option or set "release.version.fallbackCurrentVersionResolver" to "disk" in order to fallback to the version on disk when the registry lookup fails.
```
https://staging.nx.app/runs/l9kRV3E6ST
2025-08-05 09:19:09 -04:00
Caleb Ukle ffb85478b6 docs(nx-dev): move over concept docs to astro (#32181)
- use lfs for imgs
- copy over concepts to astro site.
- note: some of the markdoc impl hasn't been done yet, so those are left
as plain text. things like the project view, graph, side-by-side still
need to be moved.

closed: DOC-67
2025-08-05 08:51:29 -04:00
Nicole Oliver c14325d3d3 feat(nx-dev): update nx.dev homepage (#32132) 2025-08-05 06:33:13 -04:00
Juri 990c6f60d1 fix(nx-dev): adjust the filter ui on the blog to have it look less squeezed 2025-08-04 22:16:25 +02:00
Rares Matei 621f6b33f0 docs(nx-cloud): heartbeat docs (#32196)
Fixes CLOUD-3440

---------

Co-authored-by: Caleb Ukle <caleb.ukle+github@pm.me>
2025-08-04 18:32:00 +00:00
PhillipDNrwl ee84355c9c fix(nx): update pricing link in launch templates (#32155)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->



## Current Behavior
The current link points to [https://nx.dev/nx-cloud#plans]


**_"See their detailed description and pricing at
[nx.dev/pricing](https://nx.dev/pricing#plan-detail?sutm_source=nx.dev&utm_medium=launch-templates)."_**

## Expected Behavior
Updated the link to point to
[https://nx.dev/ci/reference/credits-pricing]

**_"See their detailed description and pricing at [credits
pricing](/ci/reference/credits-pricing?utm_source=nx.dev&utm_medium=launch-templates)."_**

## Related Issue(s)

https://linear.app/nxdev/issue/CLOUD-3383/update-launch-template-pricing-docs-link

---------

Co-authored-by: Nicole Oliver <nicole.oliver.42@gmail.com>
2025-08-04 16:00:48 +00:00
Jack Baker b270cc9127 fix(module-federation): use asyncStartup for ssr configuration (#32189)
The federationRuntime option not longer exists in experiments, use
asyncStartup to enable asynchronous container startup.

## Current Behavior
When creating a new project with module federation (`nx g
@nx/angular:host host --remotes=remote1,remote2 --ssr`) and then try to
to run the `serve-ssr` target (`nx serve-ssr host`) you get this error:
<img width="1615" height="511" alt="image"
src="https://github.com/user-attachments/assets/19819020-821b-4422-83ae-88203018b981"
/>


## Expected Behavior
It should serve the application using SSR.
2025-08-04 16:14:56 +01:00
Jay Bell 7b09e32c81 fix(rspack): abide by rspacks watch configuration (#32133)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

As it currently stands, there is no (easy) way to get HMR support
working with Rspack + Nest by using the `@nx/rspack:rspack` build
executor and `@nx/js:node` serve executor because we need to turn
`watch: false` in the serve executor (as we don't want it to watch and
call the build again) but that in turn makes the rspack build executor
not use `compiler.watch` this only building once.

Due to the way options are passed through to the executor (via
`runExecutor`) even if we do:

```
"options": {
    "buildTarget": "myapp:build",
    "buildTargetOptions": {
        "watch": true
    },
    "watch": false
}
```

The `watch: false` overwrites it.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

We should be able to have the Rspack executor abide by whatever the
`watch` configuration is that is returned from our `rspack.config.ts`
file for the application.

There is precedent for abiding by the tools configuration file vs the
executor option, the Webpack executor already does it.

The Webpack compiler is started in watch mode if the `watch` flag is
true in the webpack config itself vs. strictly abiding by the executors
options. Based on
https://github.com/nrwl/nx/issues/1992#issuecomment-2826664777 I could
do what I want, but I am using Rspack not Webpack.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

https://github.com/nrwl/nx/issues/1992

Fixes #

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-04 15:56:50 +01:00
Mike Hartington 62cbe9b668 docs(misc): add docker release video to docker page 2025-08-04 16:23:51 +02:00
Nicholas Cunningham b88664fbee feat(misc): update repo to 21.4.0-beta.4 (#32180)
### Changes

Update repo to use `21.4.0-beta.4`
2025-08-01 12:57:54 -04:00
Rodrigo Yokota efca9b93b9 fix(module-federation): re-add support for mf aliases (#31347)
## Current Behavior
At some point in time, we had support for Module Federation aliases, and
I noticed some of our examples broke in the latest versions of Nx.


![image](https://github.com/user-attachments/assets/c9130d0c-3694-4650-8c26-96ff62c7ccad)

This is an attempt to regain that support with some normalization of
Module Federation project names.

## Expected Behavior
We need to have the mapping back of aliases in the format:
```typescript
const mfConfig = {
  // ...
  "@nx-mf/remote": "_nx_mf_remote@http://localhost:3001",
  // ...
}
```

## Related Issue(s)
https://github.com/nrwl/nx/issues/31346

Fixes #
Add a function specific to parse Federated names into resolvable
JavaScript vars.
Use this function in every place a `str.replace(/-/, '_')` is being
used.

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-08-01 12:34:49 -04:00
Colum Ferry 4186922b50 fix(docker): generate dockerfile compliant with package manager (#32191)
## Current Behavior
We currently generate a Dockerfile for node applications that only takes
into account npm.
This means that if the workspace is using yarn or pnpm then when we
prune the lockfile, we have an incorrect lockfile in the output folder
for the docker build.

## Expected Behavior
Ensure the generated Dockerfile is compliant for the package manager
used in the workspace
2025-08-01 16:56:54 +01:00
Colum Ferry 2fc66d4f0a chore(repo): add Coly010 and jaysoo as codeowners for graph/** (#32194)
Add @Coly010 and @jaysoo as code owners for `graph/**`
2025-08-01 10:55:01 -04:00
Colum Ferry 4db413f6ed fix(docker): add docker target group for pdv (#32167)
## Current Behavior
The Docker targets are not grouped

## Expected Behavior
Icon for Docker in PDV
Docker targets are grouped
<img width="145" height="82" alt="image"
src="https://github.com/user-attachments/assets/b0e36f32-d402-4826-a970-24c14c4ad946"
/>

<img width="968" height="390" alt="image"
src="https://github.com/user-attachments/assets/1fe61a16-64a9-4639-ba63-e9d4260fda57"
/>
2025-08-01 10:40:10 -04:00
Colum Ferry 53ced2c47f fix(node): ensure framework deps are added to app package.json (#32192)
## Current Behavior
Framework deps such as `express` are not added to the app's package.json

## Expected Behavior
Ensure framework deps are added to app's package.json
2025-08-01 13:47:57 +01:00
Chau Tran 85eea3fd3c feat(graph): remove legacy graph (#32117)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
`graph-client` application uses `@nx/graph/legacy`

## Expected Behavior
The entire repo should be free of `@nx/graph/legacy` imports. Existing
behaviors of the graph should be maintained.
2025-08-01 08:36:52 -04:00
Colum Ferry 7b703ee665 fix(core): cleanup dockerVersionScheme option in release to use withX pattern (#32185)
## Current Behavior
When multiple commands use the same option, we follow a pattern of using
`withX` helpers.
The `dockerVersionScheme` option does not follow this pattern.

## Expected Behavior
Create `withDockerVersionSchemeOptions` to follow the pattern
2025-08-01 12:22:11 +01:00
Leosvel Pérez Espinosa ccd385b651 fix(angular): add missing config properties to adapter whitelist (#32186)
## Current Behavior

Running tasks for Angular projects that use Angular CLI builders can
result in validation errors when the project or workspace configurations
contain Nx-specific properties.

## Expected Behavior

Running tasks for Angular projects that use Angular CLI builders
shouldn't result in validation errors when the project or workspace
configurations contain Nx-specific properties.
2025-08-01 10:42:24 +00:00
Jack Hsu e0a38290fc fix(node): outputs should be in the correct format for prune and copy-workspace-modules targets (#32178)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
When running `nx prune api` it fails with:

```
 NX   The following outputs are invalid: 

 - apps/api/dist/package.json
 - apps/api/dist/package-lock.json
```
## Expected Behavior
Prune should work.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-31 19:22:24 +00:00
Jack Hsu 3469bace0e docs(docker): fix config for releaseTagPattern to be valid (#32179)
This PR fixes an invalid config for Docker release that didn't end up
being implemented.
2025-07-31 19:17:57 +00:00
Nicholas Cunningham bf67560bf9 fix(testing): add NODE_OPTIONS flag for Node.js 24 compatibility (#32177)
## Current Behavior

Jest fails to parse TypeScript config files with ES module syntax on
Node.js 24 with error:
```
Error: Jest: Failed to parse the TypeScript config file
SyntaxError: Unexpected token 'export'
```

## Expected Behavior

Jest should successfully parse TypeScript config files on Node.js 24.

## Related Issue(s)

This occurs because Jest 30 + Node.js 24 can't parse TS configs with
imports without the `--no-experimental-strip-types` flag.

Related to: https://github.com/jestjs/jest/issues/15682
2025-07-31 18:58:46 +00:00
Jack Hsu e2f5de9e62 fix(release): support "nx relase changelog" for docker images (#32169)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
Running `nx release changelog [version]` fails for docker images

## Expected Behavior
it should work

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-31 13:55:34 -04:00
Jack Hsu f741a24cfd fix(docker): add release support when registryUrl is set to docker.io (#32174)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
If user sets `registryUrl` to `docker.io` then release fails.

## Expected Behavior
We should support setting it to `docker.io` even though it's not
necessary.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-31 13:44:27 -04:00
Colum Ferry 0f7225db6c fix(core): add dockerVersionScheme to nx release version (#32172)
## Current Behavior
`nx release` supports `--dockerVersionScheme`
`nx release version` does not.

## Expected Behavior
`nx release version --dockerVersionScheme` should work
2025-07-31 13:23:50 -04:00
Emily Xiong 6aa0bd4506 chore(gradle): upgrade plugin to 0.1.4 (#32160)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->
currently, in the repo, the version is 0.1.0

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
since i modify the new code, i need to publish a version of
https://plugins.gradle.org/plugin/dev.nx.gradle.project-graph
change the version to 0.1.4

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-31 12:30:13 -04:00
Jack Hsu c0122ae714 docs(docker): add documentation for @nx/docker and supporting release pages (#32130)
See:
https://nx-dev-git-docs-node-docker-nrwl.vercel.app/features/manage-releases
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2025-07-31 12:29:48 -04:00
Colum Ferry 957d350564 fix(node): ensure cache outputs are set for prune and copy workspace modules (#32171)
## Current Behavior
Generating a node application does not set the outputs for the prune and
copy workspace modules tasks.

## Expected Behavior
Ensure the outputs are set so that cache can be restored correctly
2025-07-31 16:35:29 +01:00
Mike Hartington 4f96532e46 docs(misc): add docker release blog post (#32170)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-31 11:13:15 -04:00
Colum Ferry f6bfd49d5b chore(repo): ensure storybook works for graph ui projects (#32168)
## Current Behavior
Storybook docgen assume `flow` types when encountering `import type`
syntax.

## Expected Behavior
Ensure `reactDocgen` is set to typescript
2025-07-31 10:57:32 -04:00
Emily Xiong d49b5347ce fix(gradle): fix bootJar, add excludeDependsOn to false (#32157)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

when run bootJar and bootRun, i got this error:
```
> Querying the mapped value of task ':application:resolveMainClassName' property 'outputFile' before task ':application:resolveMainClassName' has completed is not supported
```

both bootJar and bootRun dependsOn resolveMainClassName. however, when
it runs with excludeDependsOn, the gradlew command will be `./gradlew
:app:bootRun --exclude-task :app:resolveMainClassName`. when running the
command like that, it will cause an issue

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
for bootJar and bootRun, hardcode excludeDependsOn to false

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-31 08:57:23 -04:00
Colum Ferry d235ff3ac1 chore(docker): add e2es (#32102)
Add e2e tests for the Docker plugin and test the e2e release of docker
images.
2025-07-31 08:31:55 -04:00
Colum Ferry 2ce4775db8 fix(core): only traverse workspace node when it exists (#32165)
## Current Behavior
There is a runtime issue in project graph pruning where we attempt to
eagerly traverse workspace nodes when they may not exist.

## Expected Behavior
Ensure the workspace node exists before traversing it.
2025-07-31 11:32:07 +01:00
Colum Ferry 5cac24134e feat(node): setup docker should init the docker plugin (#32120)
## Current Behavior
The `@nx/node:setup-docker` generator does not initialize the docker
plugin.

## Expected Behavior
The `@nx/node:setup-docker` generator sets up the docker plugin

---------

Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-07-31 11:31:04 +01:00
Jack Hsu b9bfeeb1d1 fix(release): use top-level releaseTagPattern as the default for release groups (#32154)
## Current Behavior

When using `nx release` with Docker projects, the
`release.releaseTagPattern` defined at the root level is not inherited
by release groups. Users must explicitly specify the `releaseTagPattern`
at both the root level AND within
`release.groups.<group>.releaseTagPattern` for it to work correctly when
using 'independent' releases.

Example configuration that doesn't work as expected:
```json
{
  "release": {
    "releaseTagPattern": "release/{projectName}/{version}",
    "groups": {
      "apps": {
          "projectsRelationship": "independent",
          // releaseTagPattern is not inherited here
      }
    }
  }
}
```

## Expected Behavior

The `release.releaseTagPattern` should be automatically inherited by
group configurations, following the same inheritance pattern as other
release configuration properties. Users should only need to specify the
pattern once at the root level unless they want to override it for
specific groups.

With this fix, the above configuration will work correctly, and the
docker releases will use the `release/{projectName}/{version}` pattern
for git tags.

## Related Issue(s)

Fixes #
2025-07-31 00:29:19 +00:00
Nicholas Cunningham 55cb97e00d fix(rspack): update installed version of rspack to be same as @nx/rspack (#32152)
We should match the version which we install of `@rspack/core` to be the
same as `@nx/rspack` as the mismatch can cause errors:
https://staging.nx.app/runs/McxmSeecWa/task/e2e-rspack%3Ae2e-local
```
> rspack build --node-env=production

●  ━━━━━━━━━━━━━━━━━━━━━━━━━ (10%) building builtin:swc-loader??ruleSet[1].rules[2].use[0]!/../my-rspack-react/apps/my-rspack-react/src/../repos/my-rspack-react/node_modules/@nx/rspack/node_modules/@rspack/core/dist/cssExtractLoader.js:141
            }) : result, dependencies.length > 0 && this.__internal__setParseMeta(PLUGIN_NAME, JSON.stringify(dependencies)), callback(null, resultSource, void 0, data);
                                                         ^

TypeError: this.__internal__setParseMeta is not a function
    at /../my-rspack-react/node_modules/@nx/rspack/node_modules/@rspack/core/dist/cssExtractLoader.js:141:58
    at ../my-rspack-react/node_modules/@nx/rspack/node_modules/@rspack/core/dist/cssExtractLoader.js:142:11
    at /../my-rspack-react/node_modules/@rspack/core/dist/index.js:3435:255
    at /../my-rspack-react/node_modules/@rspack/core/dist/index.js:3431:120

Node.js v22.16.0
```

This version is also the same as in our migrations for `@nx/rspack`.

References:
https://github.com/nrwl/nx/blob/master/packages/rspack/package.json#L32

https://github.com/nrwl/nx/blob/master/packages/rspack/migrations.json#L81
2025-07-30 21:13:52 +00:00
Jack Hsu d5c5d15b4f chore(repo): disable failing e2e due to bad nestjs 11.0.8 version (#32156)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-30 16:29:21 -04:00
Caleb Ukle debf624b2f docs(misc): update gradle tutorial (#32137)
before:
gradle tutorial didn't match with other tutorials format

after:
gradle tutorial fits format of other tutorials

---------

Co-authored-by: Jack Hsu <jack.hsu@gmail.com>
Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com>
2025-07-30 15:26:49 -05:00
Jack Hsu 2993796854 fix(release): provide a link to Manage Release page when "nx release"fails (#32153)
Currently users running `nx release` without a correct setup will see an
unhelpful message:

```
NX   Release group "__default__" matches no projects. Please ensure all release groups match at least one project:

The relevant config is defined here: nx.json
```

This change provides a link to https://nx.dev/features/manage-releases
so users can find the correct information to fix their setup.

This is particular useful when users are curious or checking out `nx
release` for the first time, and may not realize that there are set up
steps.

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
Error message is not helpful

## Expected Behavior
Provide a link for users to find the info they need

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-30 16:10:04 -04:00
Victor Savkin b8f19539d6 fix(misc): small tweaks in messaging (#32131)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-30 13:53:10 -04:00
Jack Hsu f6474b94f6 chore(repo): update to latest beta (#32144)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-07-30 12:28:33 -04:00
Colum Ferry 0157b75e79 fix(docker): ensure release fetches data from stdout correctly (#32149)
## Current Behavior
In certain cases, `execSync` was not returning data correctly based on
`stdio` settings.

## Expected Behavior
Use `exec` and handle stdout manually to ensure information is retrieved
and processed correctly

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-07-30 16:54:29 +01:00
Colum Ferry 2685df2388 fix(node): prune targets should depend on build (#32147)
## Current Behavior
Task ordering for running `prune` was not correct as the
`prune-lockfile` and `copy-workspace-modules` targets need the build to
have succeeded first.

## Expected Behavior
Ensure `prune-lockfile` and `copy-workspace-modules` depends on `build`
2025-07-30 16:50:39 +01:00
Mike Hartington ba30cb2a19 docs(misc): add android blog post for java week (#32146)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-07-30 11:30:11 -04:00
Juri 5549b25e2d docs(core): new what is Nx video 2025-07-30 16:50:18 +02:00
Leosvel Pérez Espinosa 14e816c7fa feat(angular): update ngrx to v20 (#32140)
## Current Behavior

The `@nx/angular` plugin doesn't support NgRx v20.

## Expected Behavior

The `@nx/angular` plugin should support NgRx v20.
2025-07-30 14:45:09 +02:00
MaxKless 92b0e03a13 feat(core): add nx mcp command (#32022) 2025-07-30 12:33:05 +02:00
Juri fe75a52d25 docs(nx-dev): remove webinar notifier for workshop 2025-07-30 10:05:19 +02:00
2453 changed files with 190954 additions and 44966 deletions
-7
View File
@@ -1,7 +0,0 @@
{
"mcpServers": {
"nx-mcp": {
"url": "http://localhost:9470/mcp"
}
}
}
+1 -1
View File
@@ -4,7 +4,7 @@
"env": {
"node": true
},
"ignorePatterns": ["**/*.ts"],
"ignorePatterns": ["**/*.ts", "**/test-output"],
"plugins": ["@typescript-eslint", "@nx"],
"extends": ["plugin:storybook/recommended"],
"rules": {
+1 -2
View File
@@ -3,9 +3,8 @@
#
# Linux start script should use lf
/gradlew text eol=lf
# These are Windows script files and should use crlf
*.bat text eol=crlf
# Exclude files from Graphite reviews
docs/generated/* linguist-generated=true
*.pdf,*.gif,*.mp4,*.webp,*.avif,*.png,*.jpeg,*.jpg,*.tiff filter=lfs diff=lfs merge=lfs -text
+22 -41
View File
@@ -31,7 +31,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
filter: tree:0
@@ -41,7 +41,7 @@ jobs:
if: ${{ github.event_name == 'pull_request' }}
- name: Set SHAs
uses: nrwl/nx-set-shas@v4
uses: nrwl/nx-set-shas@1859e66a83ac9be0dceecbd9a023702e27ac47f4 # v4.3.3
with:
main-branch-name: 'master'
@@ -54,43 +54,32 @@ jobs:
sudo apt-get install -y ca-certificates lsof libvips-dev libglib2.0-dev libgirepository1.0-dev
- name: Install Chrome
uses: browser-actions/setup-chrome@v1
uses: browser-actions/setup-chrome@2dbff04819ebbfd5c974947148805a825b8a07fd # v2.1.0
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
name: Install pnpm
with:
version: 10.11.1
run_install: false
- uses: actions/setup-node@v4
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 20
cache: 'pnpm'
- name: Cache Rust toolchain and cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
uses: actions-rust-lang/setup-rust-toolchain@ac90e63697ac2784f4ecfe2964e1a285c304003a # v1
with:
rustflags: ''
- name: Setup Java
uses: actions/setup-java@v4
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: temurin
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@48b5f213c81028ace310571dc5ec0fbbca0b2947 # v4.4.3
- name: Install project dependencies
run: |
@@ -124,6 +113,9 @@ jobs:
wait "$pid"
done
timeout-minutes: 100
- name: Fix CI
run: pnpm nx-cloud fix-ci
if: failure()
main-macos:
runs-on: macos-latest
@@ -147,7 +139,7 @@ jobs:
if: always()
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
filter: tree:0
@@ -157,7 +149,7 @@ jobs:
if: ${{ github.event_name == 'pull_request' }}
- name: Restore Homebrew packages
uses: actions/cache@v4
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: |
/opt/homebrew
@@ -262,39 +254,28 @@ jobs:
ls -la ~/Library/Logs/CoreSimulator/ || echo "No simulator logs found"
- name: Save Homebrew Cache
uses: actions/cache@v4
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: |
/opt/homebrew
~/Library/Caches/Homebrew
key: nrwl-nx-homebrew-packages
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
name: Install pnpm
with:
version: 10.11.1
run_install: false
- uses: actions/setup-node@v4
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 20
cache: 'pnpm'
- name: Cache Rust toolchain and cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
uses: actions-rust-lang/setup-rust-toolchain@ac90e63697ac2784f4ecfe2964e1a285c304003a # v1
with:
rustflags: ''
- name: Install project dependencies
run: |
@@ -302,7 +283,7 @@ jobs:
pnpm playwright install --with-deps
- name: Set SHAs
uses: nrwl/nx-set-shas@v4
uses: nrwl/nx-set-shas@1859e66a83ac9be0dceecbd9a023702e27ac47f4 # v4.3.3
with:
main-branch-name: 'master'
-93
View File
@@ -1,93 +0,0 @@
name: Claude Code
env:
PNPM_HOME: ~/.pnpm
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude:
if: |
contains(fromJson('["AgentEnder", "barbados-clemens", "Cammisuli", "Coly010", "FrozenPandaz", "isaacplmann", "JamesHenry", "jaysoo", "leosvelperez", "mandarini", "MaxKless", "meeroslav", "nartc", "ndcunningham", "philipjfulcher", "vsavkin", "xiongemi"]'), github.actor) &&
((github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))))
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
actions: read
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 250
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ca-certificates lsof libvips-dev libglib2.0-dev libgirepository1.0-dev
- name: Install Chrome
uses: browser-actions/setup-chrome@v1
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
version: 10.11.1
run_install: false
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
.cargo-cache
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Install project dependencies
run: |
pnpm install --frozen-lockfile
pnpm playwright install --with-deps
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
timeout-minutes: 90
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
allowed_tools: "Bash,Edit,Read,Write,Glob,Grep,LS,MultiEdit,NotebookRead,NotebookEdit"
+104
View File
@@ -0,0 +1,104 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ "master" ]
schedule:
- cron: '20 14 * * 6'
jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
# We would like to test our Java / Kotlin... but its currently failing. We can follow up.
# - language: java-kotlin
# build-mode: autobuild
- language: javascript-typescript
build-mode: none
- language: rust
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@15403aac29bd91419968e066cded66bde56b0283 # v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@15403aac29bd91419968e066cded66bde56b0283 # v3
with:
category: "/language:${{matrix.language}}"
+101
View File
@@ -0,0 +1,101 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
pull_request:
branches: [ "**" ]
jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
# See comment in @./codeql-master.yml about Java / Kotlin
# - language: java-kotlin
# build-mode: autobuild
- language: javascript-typescript
build-mode: none
- language: rust
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@15403aac29bd91419968e066cded66bde56b0283 # v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@15403aac29bd91419968e066cded66bde56b0283 # v3
with:
category: "/language:${{matrix.language}}"
upload: 'never'
upload-database: false
+27 -23
View File
@@ -45,19 +45,19 @@ jobs:
name: Cache install (${{ matrix.os }}, node v${{ matrix.node_version }})
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
filter: tree:0
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
name: Install pnpm
with:
version: 10.11.1
run_install: false
- name: Set node
uses: actions/setup-node@v4
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ matrix.node_version }}
cache: 'pnpm'
@@ -67,7 +67,7 @@ jobs:
run: echo "path=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm store
uses: actions/cache@v4
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: ${{ steps.pnpm-cache.outputs.path }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
@@ -80,7 +80,9 @@ jobs:
run: brew install python-setuptools
- name: Install packages
run: pnpm install --frozen-lockfile
run: |
pnpm install --frozen-lockfile
pnpm playwright install --with-deps
- name: Homebrew cache directory path
if: ${{ matrix.os == 'macos-latest' }}
@@ -89,7 +91,7 @@ jobs:
- name: Cache Homebrew
if: ${{ matrix.os == 'macos-latest' }}
uses: actions/cache@v4
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
lookup-only: true
path: ${{ steps.homebrew-cache-dir-path.outputs.dir }}
@@ -99,7 +101,7 @@ jobs:
- name: Cache Cypress
id: cache-cypress
uses: actions/cache@v4
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
lookup-only: true
path: '${{ github.workspace }}/.cypress'
@@ -118,7 +120,7 @@ jobs:
matrix: ${{ steps.process-json.outputs.MATRIX }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
filter: tree:0
@@ -144,7 +146,7 @@ jobs:
name: ${{ matrix.os_name }}/${{ matrix.package_manager }}/${{ matrix.node_version }} ${{ join(matrix.project) }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
filter: tree:0
@@ -152,14 +154,14 @@ jobs:
- name: Prepare dir for output
run: mkdir -p outputs
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
name: Install pnpm
with:
version: 10.11.1
run_install: false
- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@v4
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ matrix.node_version }}
cache: 'pnpm'
@@ -177,12 +179,14 @@ jobs:
- name: Install bun
if: ${{ matrix.os != 'windows-latest' }}
uses: oven-sh/setup-bun@v1
uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76 # v2.0.2
with:
bun-version: latest
- name: Install packages
run: pnpm install --frozen-lockfile
run: |
pnpm install --frozen-lockfile
pnpm playwright install --with-deps
- name: Cleanup
if: ${{ matrix.os == 'ubuntu-latest' }}
@@ -203,7 +207,7 @@ jobs:
- name: Cache Homebrew
if: ${{ matrix.os == 'macos-latest' }}
uses: actions/cache@v4
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: ${{ steps.homebrew-cache-dir-path.outputs.dir }}
key: brew-${{ matrix.node_version }}
@@ -212,7 +216,7 @@ jobs:
- name: Cache Cypress
id: cache-cypress
uses: actions/cache@v4
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: '${{ github.workspace }}/.cypress'
key: ${{ runner.os }}-cypress
@@ -393,7 +397,7 @@ jobs:
echo "$matrix" > 'outputs/matrix.json'
- name: Upload matrix config
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: ${{ always() }}
with:
name: ${{ matrix.os_name}}-${{ matrix.node_version}}-${{ matrix.package_manager}}-${{ matrix.project }}
@@ -403,7 +407,7 @@ jobs:
- name: Setup tmate session
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled && failure() }}
uses: mxschmitt/action-tmate@v3.8
uses: mxschmitt/action-tmate@1fb8b1023602bf1fd0e2994d7f1e93015cb5bbec # v3.22
timeout-minutes: 15
with:
sudo: ${{ matrix.os != 'windows-latest' }} # disable sudo for windows debugging
@@ -421,7 +425,7 @@ jobs:
has_golden_failures: ${{ steps.process-json.outputs.has_golden_failures }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
filter: tree:0
@@ -430,7 +434,7 @@ jobs:
run: mkdir -p outputs
- name: Load outputs
uses: actions/download-artifact@v4
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
path: outputs
@@ -453,7 +457,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Send notification
uses: ravsamhq/notify-slack-action@v2
uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2 # v11
with:
status: 'failure'
message_format: '${{ needs.process-result.outputs.message }}'
@@ -471,7 +475,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Send notification
uses: ravsamhq/notify-slack-action@v2
uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2 # v11
with:
status: 'success'
message_format: '${{ needs.process-result.outputs.message }}'
@@ -488,7 +492,7 @@ jobs:
name: Report duration per package manager
steps:
- name: Send notification
uses: ravsamhq/notify-slack-action@v2
uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2 # v11
with:
status: 'skipped'
message_format: '${{ needs.process-result.outputs.pm_duration }}'
@@ -504,7 +508,7 @@ jobs:
name: Report duration per project
steps:
- name: Send notification
uses: ravsamhq/notify-slack-action@v2
uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2 # v11
with:
status: 'skipped'
message_format: '${{ needs.process-result.outputs.proj_duration }}'
+4 -4
View File
@@ -14,15 +14,15 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Install Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: '20.19.0'
- name: Install pnpm
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
id: pnpm-install
with:
version: 10.11.1
@@ -35,7 +35,7 @@ jobs:
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+8 -7
View File
@@ -16,21 +16,21 @@ jobs:
name: Report status
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
with:
version: 10.11.1
- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@v3
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: '20.19.0'
cache: 'pnpm'
- name: Cache node_modules
id: cache-modules
uses: actions/cache@v3
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
lookup-only: true
path: '**/node_modules'
@@ -41,11 +41,12 @@ jobs:
- name: Download artifact
id: download-artifact
uses: dawidd6/action-download-artifact@v2 # Needed since we are downloading artifact from a different workflow run, official actions/download-artifact doesn't support this.
uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e # v2 # Needed since we are downloading artifact from a different workflow run, official actions/download-artifact doesn't support this.
with:
name: cached-issue-data
path: ${{ github.workspace }}/scripts/issues-scraper/cached
search_artifacts: true
allow_forks: false
continue-on-error: true
- name: Collect Issue Data
@@ -54,14 +55,14 @@ jobs:
env:
GITHUB_TOKEN: ${{ github.token }}
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: cached-issue-data
path: ./scripts/issues-scraper/cached/data.json
- name: Send GitHub Action trigger data to Slack workflow
id: slack
uses: slackapi/slack-github-action@v1.23.0
uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1
with:
payload: ${{ steps.collect.outputs.SLACK_MESSAGE }}
env:
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
if: ${{ github.repository_owner == 'nrwl' }}
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v4
- uses: dessant/lock-threads@7de207be1d3ce97a9abe6ff1306222982d1ca9f9 # v5.0.1
id: lockthreads
with:
github-token: ${{ github.token }}
+21 -13
View File
@@ -38,38 +38,46 @@ const matrixData: MatrixData = {
{ name: 'e2e-js', codeowners: 'S04SJ6HHP0X', is_golden: true },
{ name: 'e2e-nx-init', codeowners: 'S04SYHYKGNP', is_golden: true },
{ name: 'e2e-nx', codeowners: 'S04SYHYKGNP' },
{ name: 'e2e-release', codeowners: 'S04SYHYKGNP'},
{ name: 'e2e-workspace-create', codeowners: 'S04SYHYKGNP' },
{ name: 'e2e-release', codeowners: 'S04SYHYKGNP' },
{ name: 'e2e-workspace-create', codeowners: 'S04SYHYKGNP' }
],
projects: [
{ name: 'e2e-cypress', codeowners: 'S04T16BTJJY', is_golden: true },
{ name: 'e2e-detox', codeowners: 'S04TNCNJG5N' , is_golden: true},
{ name: 'e2e-esbuild', codeowners: 'S04SJ6HHP0X' , is_golden: true},
{ name: 'e2e-gradle', codeowners: 'S04TNCNJG5N' , is_golden: true},
{ name: 'e2e-docker', codeowners: 'S04SJ6HHP0X', is_golden: true },
{ name: 'e2e-detox', codeowners: 'S04TNCNJG5N', is_golden: true },
{ name: 'e2e-esbuild', codeowners: 'S04SJ6HHP0X', is_golden: true },
{ name: 'e2e-gradle', codeowners: 'S04TNCNJG5N', is_golden: true },
{ name: 'e2e-eslint', codeowners: 'S04SYJGKSCT', is_golden: true },
{ name: 'e2e-node', codeowners: 'S04SJ6HHP0X', is_golden: true },
{ name: 'e2e-playwright', codeowners: 'S04SVQ8H0G5', is_golden: true },
{ name: 'e2e-remix', codeowners: 'S04SVQ8H0G5' , is_golden: true},
{ name: 'e2e-remix', codeowners: 'S04SVQ8H0G5', is_golden: true },
{ name: 'e2e-rspack', codeowners: 'S04SJ6HHP0X', is_golden: true },
{ name: 'e2e-vite', codeowners: 'S04SJ6PL98X' , is_golden: true},
{ name: 'e2e-vue', codeowners: 'S04SJ6PL98X' , is_golden: true},
{ name: 'e2e-vite', codeowners: 'S04SJ6PL98X', is_golden: true },
{ name: 'e2e-vue', codeowners: 'S04SJ6PL98X', is_golden: true },
{ name: 'e2e-web', codeowners: 'S04SJ6PL98X', is_golden: true },
{ name: 'e2e-webpack', codeowners: 'S04SJ6PL98X', is_golden: true },
{ name: 'e2e-jest', codeowners: 'S04T16BTJJY', is_golden: true },
{ name: 'e2e-expo', codeowners: 'S04TNCNJG5N', is_golden: true },
{ name: 'e2e-react-native', codeowners: 'S04TNCNJG5N', is_golden: true },
{ name: 'e2e-angular', codeowners: 'S04SS457V38' },
{ name: 'e2e-expo', codeowners: 'S04TNCNJG5N' },
{ name: 'e2e-next', codeowners: 'S04TNCNJG5N' },
{ name: 'e2e-plugin', codeowners: 'S04SYHYKGNP' },
{ name: 'e2e-react', codeowners: 'S04TNCNJG5N' },
{ name: 'e2e-react-native', codeowners: 'S04TNCNJG5N' },
{ name: 'e2e-rollup', codeowners: 'S04SJ6PL98X' },
{ name: 'e2e-storybook', codeowners: 'S04SVQ8H0G5' },
{ name: 'e2e-nuxt', codeowners: 'S04SJ6PL98X' }
],
nodeTLS: 20,
setup: [
{ os: 'ubuntu-latest', os_name: 'Linux', os_timeout: 60, package_managers: ['npm', 'pnpm', 'yarn'], node_versions: ['20.19.0', "22.12.0"], excluded: ['e2e-detox', 'e2e-react-native', 'e2e-expo'] },
{ os: 'macos-latest', os_name: 'MacOS', os_timeout: 90, package_managers: ['npm'], node_versions: ['20.19.0'] },
{
os: 'ubuntu-latest',
os_name: 'Linux',
os_timeout: 60,
package_managers: ['npm', 'pnpm', 'yarn'],
node_versions: ['20.19.0', '22.12.0'],
excluded: ['e2e-detox', 'e2e-react-native', 'e2e-expo']
},
{ os: 'macos-latest', os_name: 'MacOS', os_timeout: 90, package_managers: ['npm'], node_versions: ['20.19.0'] }
// TODO (emily): Fix Windows support as gradle fails when running nx build https://staging.nx.app/runs/LgD4vxGn8w?utm_source=pull-request&utm_medium=comment
// { os: 'windows-latest', os_name: 'WinOS', os_timeout: 180, package_managers: ['npm'], node_versions: ['20.19.0'], excluded: ['e2e-detox', 'e2e-react-native', 'e2e-expo'] }
]
@@ -86,7 +94,7 @@ function addMatrixCombo(project: MatrixDataProject, nodeVersion: number | string
os: matrixData.setup[os].os,
os_name: matrixData.setup[os].os_name,
os_timeout: matrixData.setup[os].os_timeout,
is_golden: !!project.is_golden, // Mark golden projects as true, others as false
is_golden: !!project.is_golden // Mark golden projects as true, others as false
});
}
+3 -3
View File
@@ -14,9 +14,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
with:
version: 10.11.1 # Aligned with root package.json (pnpm/action-setup will helpfully error if out of sync)
@@ -30,7 +30,7 @@ jobs:
name: Report status
steps:
- name: Send notification
uses: ravsamhq/notify-slack-action@v2
uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2 # v11
with:
status: ${{ needs.audit.result }}
message_format: '{emoji} Audit has {status_message}'
+30
View File
@@ -0,0 +1,30 @@
name: PR Title Validation
on:
pull_request:
types: [opened, edited, synchronize, reopened]
permissions: read-all
jobs:
validate-pr-title:
name: Validate PR Title
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Ensure's validate-pr-title.js is the copy from master
ref: master
- name: Setup Node.js
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 20
package-manager-cache: false
- name: Validate PR title
env:
PR_TITLE: ${{ github.event.pull_request.title }}
PR_BODY: ${{ github.event.pull_request.body }}
run: node ./scripts/validate-pr-title.js
+48 -100
View File
@@ -3,14 +3,7 @@ name: publish
on:
# Automated schedule - canary releases from master
schedule:
- cron: "0 3 * * 2-6" # Tuesdays - Saturdays, at 3am UTC
# Manual trigger - PR releases or dry-runs (based on workflow inputs)
workflow_dispatch:
inputs:
pr:
description: "PR Number - If set, a real release will be created for the branch associated with the given PR number. If blank, a dry-run of the currently selected branch will be performed."
required: false
type: number
- cron: "0 20 * * 1-5" # Monday - Friday, at 20:00 UTC (8pm UTC)
release:
types: [ published ]
@@ -35,11 +28,6 @@ jobs:
# - release:
# - We are running a full release which is based on the tag that triggered the release event, we can use default
# ref resolution in actions/checkout. The exact version will be generated within scripts/nx-release.ts.
#
# - workflow_dispatch:
# - We are either running a dry-run on the current branch, in which case the version will be statica and we can use
# default ref resolution in actions/checkout, or we are creating a PR release for the given PR number, in which case
# we should generate an applicable version number within publish-resolve-data.js and use a custom ref of the PR branch name.
resolve-required-data:
name: Resolve Required Data
if: ${{ github.repository_owner == 'nrwl' }}
@@ -47,35 +35,25 @@ jobs:
outputs:
version: ${{ steps.script.outputs.version }}
dry_run_flag: ${{ steps.script.outputs.dry_run_flag }}
success_comment: ${{ steps.script.outputs.success_comment }}
publish_branch: ${{ steps.script.outputs.publish_branch }}
ref: ${{ steps.script.outputs.ref }}
repo: ${{ steps.script.outputs.repo }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
# Default checkout on the triggering branch so that the latest publish-resolve-data.js script is available
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
# Set up pnpm and node so that we can verify our setup and that the NPM_TOKEN secret will work later
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ env.NODE_VERSION }}
registry-url: 'https://registry.npmjs.org'
check-latest: true
# Ensure that the NPM_TOKEN secret is still valid before wasting any time deriving data or building projects
- name: Check NPM Credentials
run: npm whoami && echo "NPM credentials are valid" || (echo "NPM credentials are invalid or have expired." && exit 1)
- name: Resolve and set checkout and version data to use for release
id: script
uses: actions/github-script@v7
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
PR_NUMBER: ${{ github.event.inputs.pr }}
with:
@@ -84,36 +62,6 @@ jobs:
const script = require('${{ github.workspace }}/scripts/publish-resolve-data.js');
await script({ github, context, core });
- name: (PR Release Only) Check out latest master
if: ${{ steps.script.outputs.ref != '' }}
uses: actions/checkout@v4
with:
# Check out the latest master branch to get its copy of nx-release.ts
repository: nrwl/nx
ref: master
path: latest-master-checkout
- name: (PR Release Only) Check out PR branch
if: ${{ steps.script.outputs.ref != '' }}
uses: actions/checkout@v4
with:
# Check out the PR branch to get its copy of nx-release.ts
repository: ${{ steps.script.outputs.repo }}
ref: ${{ steps.script.outputs.ref }}
path: pr-branch-checkout
- name: (PR Release Only) Ensure that nx-release.ts has not changed in the PR being released
if: ${{ steps.script.outputs.ref != '' }}
env:
FILE_TO_COMPARE: "scripts/nx-release.ts"
run: |
if ! cmp -s "latest-master-checkout/${{ env.FILE_TO_COMPARE }}" "pr-branch-checkout/${{ env.FILE_TO_COMPARE }}"; then
echo "🛑 Error: The file ${{ env.FILE_TO_COMPARE }} is different on the ${{ steps.script.outputs.ref }} branch on ${{ steps.script.outputs.repo }} vs latest master on nrwl/nx, cancelling workflow. If you did not modify the file, then you likely just need to rebase/merge latest master."
exit 1
else
echo "✅ The file ${{ env.FILE_TO_COMPARE }} is identical between the ${{ steps.script.outputs.ref }} branch on ${{ steps.script.outputs.repo }} and latest master on nrwl/nx."
fi
build:
needs: [ resolve-required-data ]
if: ${{ github.repository_owner == 'nrwl' }}
@@ -267,17 +215,14 @@ jobs:
name: stable - ${{ matrix.settings.target }} - node@22.16.0
runs-on: ${{ matrix.settings.host }}
steps:
- uses: actions/checkout@v4
with:
repository: ${{ needs.resolve-required-data.outputs.repo }}
ref: ${{ needs.resolve-required-data.outputs.ref }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
if: ${{ !matrix.settings.docker }}
with:
node-version: ${{ env.NODE_VERSION }}
@@ -285,13 +230,14 @@ jobs:
cache: 'pnpm'
- name: Install
uses: dtolnay/rust-toolchain@stable
uses: actions-rust-lang/setup-rust-toolchain@ac90e63697ac2784f4ecfe2964e1a285c304003a # v1
if: ${{ !matrix.settings.docker }}
with:
targets: ${{ matrix.settings.target }}
target: ${{ matrix.settings.target }}
rustflags: ''
- name: Cache cargo
uses: actions/cache@v4
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: |
~/.cargo/registry/index/
@@ -301,7 +247,7 @@ jobs:
target/
key: ${{ matrix.settings.target }}-cargo-registry
- uses: goto-bus-stop/setup-zig@v2
- uses: goto-bus-stop/setup-zig@abea47f85e598557f500fa1fd2ab7464fcb39406 # v2.2.1
if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }}
with:
version: 0.10.0
@@ -322,7 +268,7 @@ jobs:
timeout-minutes: 30
- name: Setup node x86
uses: actions/setup-node@v4
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
if: matrix.settings.target == 'i686-pc-windows-msvc'
with:
node-version: ${{ env.NODE_VERSION }}
@@ -331,7 +277,7 @@ jobs:
architecture: x86
- name: Build in docker
uses: addnab/docker-run-action@v3
uses: addnab/docker-run-action@4f65fabd2431ebc8d299f8e5a018d79a769ae185 # v3
if: ${{ matrix.settings.docker }}
with:
image: ${{ matrix.settings.docker }}
@@ -344,7 +290,7 @@ jobs:
shell: bash
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: bindings-${{ matrix.settings.target }}
path: |
@@ -359,14 +305,11 @@ jobs:
name: Build FreeBSD
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
with:
repository: ${{ needs.resolve-required-data.outputs.repo }}
ref: ${{ needs.resolve-required-data.outputs.ref }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Build
id: build
uses: cross-platform-actions/action@v0.25.0
uses: cross-platform-actions/action@462ed697694d2ac9aa49e1225f395f7bb6dd49fe # v0.29.0
env:
DEBUG: napi:*
RUSTUP_IO_THREADS: 1
@@ -411,7 +354,7 @@ jobs:
echo "COMPLETE"
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: bindings-freebsd
path: |
@@ -422,6 +365,7 @@ jobs:
if: ${{ github.repository_owner == 'nrwl' }}
name: Publish
runs-on: ubuntu-latest
environment: npm-registry
permissions:
id-token: write
contents: write
@@ -432,31 +376,29 @@ jobs:
- build
env:
GH_TOKEN: ${{ github.token }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true
steps:
- uses: actions/checkout@v4
with:
repository: ${{ needs.resolve-required-data.outputs.repo }}
ref: ${{ needs.resolve-required-data.outputs.ref }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@7088e561eb65bb68695d245aa206f005ef30921d # v4.1.0
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ env.NODE_VERSION }}
registry-url: 'https://registry.npmjs.org'
check-latest: true
cache: 'pnpm'
- name: Use npm 11.5.2
run: npm install -g npm@11.5.2
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Download all artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
path: artifacts
@@ -490,21 +432,27 @@ jobs:
if: ${{ !github.event.release.prerelease && github.event_name == 'release' }}
run: npx ts-node -P ./scripts/tsconfig.scripts.json ./scripts/release-docs.ts
- name: (PR Release Only) Create comment for successful PR release
if: success() && github.event.inputs.pr
uses: actions/github-script@v7
env:
SUCCESS_COMMENT: ${{ needs.resolve-required-data.outputs.success_comment }}
report-pending-publish:
name: Report Pending Publish to Slack
if: ${{ github.repository_owner == 'nrwl' }}
needs:
- resolve-required-data
- build-freebsd
- build
runs-on: ubuntu-latest
timeout-minutes: 10
continue-on-error: true # Don't fail the workflow if notification fails
steps:
- name: Send Slack notification
uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2 # v11
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const successComment = JSON.parse(process.env.SUCCESS_COMMENT);
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: ${{ github.event.inputs.pr }},
body: successComment
});
status: ${{ job.status }}
notification_title: '📦 Publish Pending Review'
message_format: ${{ format('Version `{0}` is being published to NPM - manual review is required', needs.resolve-required-data.outputs.version) }}
footer: '<{run_url}|View Workflow Run>'
mention_groups: 'U9NPA6C90' # Jason
env:
SLACK_WEBHOOK_URL: ${{ secrets.ACTION_MONITORING_SLACK }}
pr_failure_comment:
# Run this job if it is a PR release, running on the nrwl origin, and any of the required jobs failed
@@ -514,7 +462,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Create comment for failed PR release
uses: actions/github-script@v7
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# This script is intentionally kept inline (and e.g. not generated in publish-resolve-data.js)
+5 -5
View File
@@ -19,7 +19,7 @@ jobs:
# This handles issues that need more info
- name: stale-more-info-needed
id: stale-more-info-needed
uses: actions/stale@v9.0.0
uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
@@ -37,7 +37,7 @@ jobs:
# This handles PRs that need to be rebased
- name: stale-needs-rebase
id: stale-needs-rebase
uses: actions/stale@v9.0.0
uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
@@ -56,7 +56,7 @@ jobs:
# This handles issues that do not have a repro
- name: stale-repro-needed
id: stale-repro-needed
uses: actions/stale@v9.0.0
uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
@@ -75,7 +75,7 @@ jobs:
- name: stale-retry-with-latest
id: stale-retry-with-latest
uses: actions/stale@v9.0.0
uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
@@ -95,7 +95,7 @@ jobs:
# This handles issues are really old and were made with a previous major
- name: stale-bug
id: stale-bug
uses: actions/stale@v9.0.0
uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 180
+15 -5
View File
@@ -3,6 +3,7 @@ node_modules
/.fleet
/.vscode
dist
out-tsc
/build
/coverage
./test
@@ -12,7 +13,8 @@ tmp
jest.debug.config.js
.tool-versions
/.nx-cache
/.nx
/.nx/cache
/.nx/workspace-data
/.verdaccio/build/local-registry
/graph/client/src/assets/environment.js
/graph/client/src/assets/dev/environment.js
@@ -50,8 +52,6 @@ out
# Fix for issue when working on the repo in a dev container
.pnpm-store
.nx
!.nx/workflows
.cargo/.package-cache
.cargo/bin/
@@ -102,10 +102,20 @@ node_modules/
.cursorindexingignore
# OS specific
# Task files
tasks.json
tasks/
/tasks.json
/tasks
# Upstream docs local configuration (machine-specific)
.upstreamdocs.local.json
astro-docs/.netlify
# Angular Rspack Specific Options
packages/angular-rspack/coverage
packages/angular-rspack-compiler/coverage
# Angular Rspack Packages use a template to generate the correct README
packages/angular-rspack/README.md
packages/angular-rspack-compiler/README.md
test-output
+1
View File
@@ -0,0 +1 @@
node ./scripts/commit-lint.js "$1"
+11 -1
View File
@@ -1,2 +1,12 @@
# Skip if this is a worktree creation (previous ref is null)
if [ "$1" = "0000000000000000000000000000000000000000" ]; then
exit 0
fi
# Skip if this is a file checkout (not branch switch) - $3 would be 0
if [ "$3" = "0" ]; then
exit 0
fi
changedFiles="$(git diff-tree -r --name-only --no-commit-id $1 $2)"
node ./scripts/notify-lockfile-changes.js $changedFiles
node ./scripts/notify-lockfile-changes.js $changedFiles
+18 -5
View File
@@ -1,6 +1,6 @@
launch-templates:
linux-medium:
resource-class: 'docker_linux_amd64/medium+'
linux-large:
resource-class: 'docker_linux_amd64/large'
image: 'us-east1-docker.pkg.dev/nxcloudoperations/nx-cloud/nx-agents-base-images:ubuntu22.04-node20.19-v1'
env:
GIT_AUTHOR_EMAIL: test@test.com
@@ -65,11 +65,15 @@ launch-templates:
- name: Load Cargo Env
script: echo "PATH=$HOME/.cargo/bin:$PATH" >> $NX_CLOUD_ENV
- name: Setup Java 17
- name: Install Rust Dependencies
script: |
cargo fetch
- name: Setup Java 21
script: |
sudo apt update
sudo apt install -y openjdk-17-jdk
sudo update-alternatives --set java /usr/lib/jvm/java-17-openjdk-amd64/bin/java
sudo apt install -y openjdk-21-jdk
sudo update-alternatives --set java /usr/lib/jvm/java-21-openjdk-amd64/bin/java
java -version
- name: Setup Gradle
@@ -142,9 +146,18 @@ launch-templates:
- name: Load Cargo Env
script: echo "PATH=$HOME/.cargo/bin:$PATH" >> $NX_CLOUD_ENV
- name: Install Rust Dependencies
script: |
cargo fetch
- name: Setup Java 21
script: |
sudo apt update
sudo apt install -y openjdk-21-jdk
sudo update-alternatives --set java /usr/lib/jvm/java-21-openjdk-amd64/bin/java
java -version
- name: Setup Gradle
script: |
./gradlew wrapper
./gradlew --version
+26 -6
View File
@@ -1,13 +1,33 @@
distribute-on:
default: auto linux-medium, 1 linux-extra-large
default: auto linux-large, 1 linux-extra-large
assignment-rules:
# e2e-release tests must run sequentially due to shared git state and publishing operations
- projects:
- e2e-release
targets:
- e2e-ci**
run-on:
- agent: linux-large
parallelism: 1
- projects:
- e2e-gradle
targets:
- e2e-ci**
run-on:
- agent: linux-large
parallelism: 1
- agent: linux-extra-large
parallelism: 1
# All other e2e tests can run in parallel
- targets:
- e2e-ci**
run-on:
- agent: linux-medium
parallelism: 1
- agent: linux-large
parallelism: 2
- agent: linux-extra-large
parallelism: 1
parallelism: 3
# These projects should not need to be isolated.
- projects:
@@ -29,13 +49,13 @@ assignment-rules:
- targets:
- lint
run-on:
- agent: linux-medium
- agent: linux-large
parallelism: 6
- targets:
- '*'
run-on:
- agent: linux-medium
- agent: linux-large
parallelism: 3
- agent: linux-extra-large
parallelism: 3
+9 -5
View File
@@ -9,9 +9,10 @@ pnpm-lock.yaml @nrwl/nx-core-reviewers
rust-toolchain.toml @nrwl/nx-native-reviewers
# Docs Site + Graph
/astro-docs @nrwl/nx-docs-reviewers
/docs @nrwl/nx-docs-reviewers
/docs/nx-cloud @StalkAltan @rarmatei @nixallover @nrwl/nx-docs-reviewers
/graph/** @philipjfulcher @FrozenPandaz @bcabanes @MaxKless @xiongemi
/graph/** @philipjfulcher @FrozenPandaz @bcabanes @MaxKless @Coly010 @jaysoo @nartc
/images @nrwl/nx-docs-reviewers
/nx-dev/** @nrwl/nx-docs-reviewers
/typedoc-theme @nrwl/nx-docs-reviewers
@@ -22,6 +23,9 @@ rust-toolchain.toml @nrwl/nx-native-reviewers
/docs/generated/packages/angular/** @nrwl/nx-angular-reviewers @nrwl/nx-docs-reviewers
/docs/shared/packages/angular/** @nrwl/nx-angular-reviewers @nrwl/nx-docs-reviewers
/packages/angular/** @nrwl/nx-angular-reviewers
/packages/angular-rspack/** @nrwl/nx-angular-reviewers
/packages/angular-rspack-compiler/** @nrwl/nx-angular-reviewers
/examples/angular-rspack/** @nrwl/nx-angular-reviewers
/e2e/angular/** @nrwl/nx-angular-reviewers
/packages/angular/plugins/component-testing.ts @nrwl/nx-angular-reviewers @nrwl/nx-testing-tools-reviewers
/packages/angular/src/generators/cypress-component-configuration/** @nrwl/nx-angular-reviewers @nrwl/nx-testing-tools-reviewers
@@ -148,8 +152,8 @@ rust-toolchain.toml @nrwl/nx-native-reviewers
/packages/devkit/public-api.ts @FrozenPandaz @vsavkin
# Gradle
/packages/gradle/** @FrozenPandaz @MaxKless @xiongemi
/e2e/gradle/** @FrozenPandaz @MaxKless @xiongemi
/packages/gradle/** @FrozenPandaz @MaxKless @lourw
/e2e/gradle/** @FrozenPandaz @MaxKless @lourw
# Nx-Plugin
/docs/generated/packages/plugin/** @nrwl/nx-devkit-reviewers @nrwl/nx-docs-reviewers
@@ -179,8 +183,8 @@ rust-toolchain.toml @nrwl/nx-native-reviewers
/e2e/lerna-smoke-tests/** @vsavkin @JamesHenry
/e2e/utils/** @meeroslav @nrwl/nx-testing-tools-reviewers @vsavkin
/community @nrwl/nx-docs-reviewers
/CONTRIBUTING.md @FrozenPandaz @isaacplmann
/CODE_OF_CONDUCT.md @FrozenPandaz @isaacplmann
/CONTRIBUTING.md @FrozenPandaz
/CODE_OF_CONDUCT.md @FrozenPandaz
/CODEOWNERS @FrozenPandaz @AgentEnder
/packages/nx/src/nx-cloud/utilities/url-shorten.ts @MaxKless
+1
View File
@@ -344,6 +344,7 @@ The scope must be one of the following:
- express - anything Express specific
- js - anything related to @nx/js package or general js/ts support
- linter - anything Linter specific
- module-federation - anything Nx Module Federation specific
- nest - anything Nest specific
- nextjs - anything Next specific
- node - anything Node specific
Generated
+43 -134
View File
@@ -1527,26 +1527,30 @@ dependencies = [
"hyper-util",
"log",
"rustls",
"rustls-native-certs",
"rustls-pki-types",
"tokio",
"tokio-rustls",
"tower-service",
"webpki-roots",
]
[[package]]
name = "hyper-util"
version = "0.1.11"
version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2"
checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df"
dependencies = [
"base64",
"bytes",
"futures-channel",
"futures-core",
"futures-util",
"http",
"http-body",
"hyper",
"ipnet",
"libc",
"percent-encoding",
"pin-project-lite",
"socket2",
"tokio",
@@ -1756,6 +1760,16 @@ version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
[[package]]
name = "iri-string"
version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
dependencies = [
"memchr",
"serde",
]
[[package]]
name = "is-macro"
version = "0.3.5"
@@ -2086,12 +2100,6 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "mime"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "minimal-lexical"
version = "0.2.1"
@@ -2309,11 +2317,10 @@ dependencies = [
[[package]]
name = "num-bigint"
version = "0.4.4"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
"serde",
@@ -3018,30 +3025,26 @@ dependencies = [
[[package]]
name = "reqwest"
version = "0.12.15"
version = "0.12.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb"
checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531"
dependencies = [
"base64",
"bytes",
"futures-core",
"futures-util",
"http",
"http-body",
"http-body-util",
"hyper",
"hyper-rustls",
"hyper-util",
"ipnet",
"js-sys",
"log",
"mime",
"once_cell",
"percent-encoding",
"pin-project-lite",
"quinn",
"rustls",
"rustls-pemfile",
"rustls-native-certs",
"rustls-pki-types",
"serde",
"serde_json",
@@ -3050,13 +3053,12 @@ dependencies = [
"tokio",
"tokio-rustls",
"tower",
"tower-http",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"webpki-roots",
"windows-registry",
]
[[package]]
@@ -3187,15 +3189,6 @@ dependencies = [
"security-framework",
]
[[package]]
name = "rustls-pemfile"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
dependencies = [
"rustls-pki-types",
]
[[package]]
name = "rustls-pki-types"
version = "1.11.0"
@@ -4093,6 +4086,24 @@ dependencies = [
"tower-service",
]
[[package]]
name = "tower-http"
version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
dependencies = [
"bitflags 2.9.0",
"bytes",
"futures-util",
"http",
"http-body",
"iri-string",
"pin-project-lite",
"tower",
"tower-layer",
"tower-service",
]
[[package]]
name = "tower-layer"
version = "0.3.3"
@@ -4605,15 +4616,6 @@ dependencies = [
"rustls-pki-types",
]
[[package]]
name = "webpki-roots"
version = "0.26.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9"
dependencies = [
"rustls-pki-types",
]
[[package]]
name = "weezl"
version = "0.1.8"
@@ -4687,7 +4689,7 @@ checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d"
dependencies = [
"windows-implement",
"windows-interface",
"windows-result 0.1.2",
"windows-result",
"windows-targets 0.52.6",
]
@@ -4719,17 +4721,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
[[package]]
name = "windows-registry"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3"
dependencies = [
"windows-result 0.3.2",
"windows-strings",
"windows-targets 0.53.0",
]
[[package]]
name = "windows-result"
version = "0.1.2"
@@ -4739,24 +4730,6 @@ dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-result"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-sys"
version = "0.45.0"
@@ -4832,29 +4805,13 @@ dependencies = [
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
"windows_i686_gnullvm 0.52.6",
"windows_i686_gnullvm",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
"windows_x86_64_msvc 0.52.6",
]
[[package]]
name = "windows-targets"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b"
dependencies = [
"windows_aarch64_gnullvm 0.53.0",
"windows_aarch64_msvc 0.53.0",
"windows_i686_gnu 0.53.0",
"windows_i686_gnullvm 0.53.0",
"windows_i686_msvc 0.53.0",
"windows_x86_64_gnu 0.53.0",
"windows_x86_64_gnullvm 0.53.0",
"windows_x86_64_msvc 0.53.0",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.2"
@@ -4873,12 +4830,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.2"
@@ -4897,12 +4848,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_aarch64_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
[[package]]
name = "windows_i686_gnu"
version = "0.42.2"
@@ -4921,24 +4866,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnu"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
@@ -4957,12 +4890,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_i686_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.2"
@@ -4981,12 +4908,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnu"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.2"
@@ -5005,12 +4926,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.2"
@@ -5029,12 +4944,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "windows_x86_64_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
[[package]]
name = "winnow"
version = "0.5.40"
+22 -17
View File
@@ -1,8 +1,8 @@
<p style="text-align: center;">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-dark.svg">
<img alt="Nx - Smart Repos · Fast Builds" src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-light.svg" width="100%">
</picture>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-dark.svg">
<img alt="Nx - Smart Repos · Fast Builds" src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-light.svg" width="100%">
</picture>
</p>
<div style="text-align: center;">
@@ -10,7 +10,7 @@
[![CircleCI](https://circleci.com/gh/nrwl/nx.svg?style=svg)](https://circleci.com/gh/nrwl/nx)
[![License](https://img.shields.io/npm/l/nx.svg?style=flat-square)]()
[![NPM Version](https://badge.fury.io/js/nx.svg)](https://www.npmjs.com/package/nx)
[![Semantic Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=flat-square)]()
[![Semantic Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic-release-e10079.svg?style=flat-square)]()
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![Join the chat at https://gitter.im/nrwl-nx/community](https://badges.gitter.im/nrwl-nx/community.svg)](https://gitter.im/nrwl-nx/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Join the Official Nx Discord Server](https://img.shields.io/discord/1143497901675401286?label=discord)](https://go.nx.dev/community)
@@ -21,7 +21,7 @@
# Smart Repos · Fast Builds
An AI-first build platform that connects everything from your editor to CI. Helping you deliver fast, without breaking things.
Get to green PRs in half the time. Nx optimizes your builds, scales your CI, and fixes failed PRs. Built for developers and AI agents.
Create a new Nx workspace with
@@ -47,7 +47,7 @@ Connect your existing Nx workspace with
npx nx connect
```
Learn more in the [Nx CI docs &raquo;](https://nx.dev/ci/intro?utm_source=nxrepo&utm_medium=readme&utm_campaign=nxrepo)
Learn more in the [Nx CI docs &raquo;](https://nx.dev/ci/getting-started/intro?utm_source=nxrepo&utm_medium=readme&utm_campaign=nxrepo)
## Useful links
@@ -77,22 +77,27 @@ help you get started.
| ![Victor Savkin](https://avatars1.githubusercontent.com/u/35996?s=160) | ![Jason Jean](https://avatars2.githubusercontent.com/u/8104246?s=160) | ![Benjamin Cabanes](https://avatars2.githubusercontent.com/u/3447705?s=160) | ![Jack Hsu](https://avatars0.githubusercontent.com/u/53559?s=160) |
| [vsavkin](https://github.com/vsavkin) | [FrozenPandaz](https://github.com/FrozenPandaz) | [bcabanes](https://github.com/bcabanes) | [jaysoo](https://github.com/jaysoo) |
| James Henry | Jon Cammisuli | Isaac Mann | Juri Strumpflohner |
| James Henry | Jon Cammisuli | Max Kless | Juri Strumpflohner |
| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| ![James Henry](https://avatars.githubusercontent.com/u/900523?s=160&v=4) | ![Jon Cammisuli](https://avatars2.githubusercontent.com/u/4332460?s=160) | ![Isaac Mann](https://avatars1.githubusercontent.com/u/861504?s=160) | ![Juri Strumpflohner](https://avatars1.githubusercontent.com/u/542458?s=160) |
| [JamesHenry](https://github.com/JamesHenry) | [cammisuli](https://github.com/cammisuli) | [isaacplmann](https://github.com/isaacplmann) | [juristr](https://github.com/juristr) |
| ![James Henry](https://avatars.githubusercontent.com/u/900523?s=160&v=4) | ![Jon Cammisuli](https://avatars2.githubusercontent.com/u/4332460?s=160) | ![Max Kless](https://avatars.githubusercontent.com/u/34165455?s=160) | ![Juri Strumpflohner](https://avatars1.githubusercontent.com/u/542458?s=160) |
| [JamesHenry](https://github.com/JamesHenry) | [cammisuli](https://github.com/cammisuli) | [MaxKless](https://github.com/MaxKless) | [juristr](https://github.com/juristr) |
| Philip Fulcher | Caleb Ukle | Colum Ferry | Emily Xiong |
| Philip Fulcher | Caleb Ukle | Colum Ferry | Steven Nance |
| ------------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| ![Philip Fulcher](https://avatars1.githubusercontent.com/u/1536471?s=160) | ![Caleb Ukle](https://avatars.githubusercontent.com/u/23272162?s=160) | ![Colum Ferry](https://avatars.githubusercontent.com/u/12140467?s=160) | ![Emily Xiong](https://avatars.githubusercontent.com/u/16211801?s=160) |
| [philipjfulcher](https://github.com/philipjfulcher) | [barbados-clemens](https://github.com/barbados-clemens) | [Coly010](https://github.com/Coly010) | [xiongemi](https://github.com/xiongemi) |
| ![Philip Fulcher](https://avatars1.githubusercontent.com/u/1536471?s=160) | ![Caleb Ukle](https://avatars.githubusercontent.com/u/23272162?s=160) | ![Colum Ferry](https://avatars.githubusercontent.com/u/12140467?s=160) | ![Steven Nance](https://avatars.githubusercontent.com/u/1036428?s=160) |
| [philipjfulcher](https://github.com/philipjfulcher) | [barbados-clemens](https://github.com/barbados-clemens) | [Coly010](https://github.com/Coly010) | [llwt](https://github.com/llwt) |
| Miroslav Jonaš | Leosvel Pérez Espinosa | Zachary DeRose | Craigory Coppola |
| ----------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------- |
| ![Miroslav Jonaš](https://avatars.githubusercontent.com/u/881612?s=160) | ![Leosvel Pérez Espinosa](https://avatars.githubusercontent.com/u/12051310?s=160) | ![Zachary DeRose](https://avatars.githubusercontent.com/u/3788405?s=160) | ![Craigory Coppola](https://avatars.githubusercontent.com/u/6933928?s=160) |
| [meeroslav](https://github.com/meeroslav) | [leosvelperez](https://github.com/leosvelperez) | [ZackDeRose](https://github.com/ZackDeRose) | [AgentEnder](https://github.com/AgentEnder) |
| Chau Tran | Nicholas Cunningham | Max Kless |
| -------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| ![Chau Tran](https://avatars.githubusercontent.com/u/25516557?s=160) | ![Nicholas Cunningham](https://avatars.githubusercontent.com/u/338948?s=160) | ![Max Kless](https://avatars.githubusercontent.com/u/34165455?s=160) |
| [nartc](https://github.com/nartc) | [ndcunningham](https://github.com/ndcunningham) | [MaxKless](https://github.com/MaxKless) |
| Chau Tran | Nicole Oliver | Rares Matei | Altan Stalker |
| -------------------------------------------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| ![Chau Tran](https://avatars.githubusercontent.com/u/25516557?s=160) | ![Nicole Oliver](https://avatars.githubusercontent.com/u/4440385?s=160) | ![Rares Matei](https://avatars.githubusercontent.com/u/5975076?s=160) | ![Altan Stalker](https://avatars.githubusercontent.com/u/6324206?s=160) |
| [nartc](https://github.com/nartc) | [nixallover](https://github.com/nixallover) | [rarmatei](https://github.com/rarmatei) | [StalkAltan](https://github.com/StalkAltan) |
| Josh VanAllen | Austin Fahsl | Louie Weng |
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------- |
| ![Josh VanAllen](https://avatars.githubusercontent.com/u/5290334?s=160) | ![Austin Fahsl](https://avatars.githubusercontent.com/u/6913035?s=160) | ![Louie Weng](https://avatars.githubusercontent.com/u/56288712?s=160) |
| [joshvanallen](https://github.com/joshvanallen) | [fahslaj](https://github.com/fahslaj) | [lourw](https://github.com/lourw) |
+15
View File
@@ -0,0 +1,15 @@
# Security Policy
Nx/Nrwl takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations.
If you believe you have found a security vulnerability in any Nx-owned repository that meets Nx's definition of a security vulnerability, please report it to us as described below.
## Reporting Security Issues
**Please do not report security vulnerabilities through public GitHub issues.**
Instead, please report them to the Security Team at security@nrwl.io.
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message.
Nx follows the principle of Coordinated Vulnerability Disclosure.
+6
View File
@@ -0,0 +1,6 @@
node_modules/
dist/
.astro/
.netlify/
test-output/
playwright-report/
+22
View File
@@ -0,0 +1,22 @@
{
"extends": ["plugin:playwright/recommended", "../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
},
{
"files": ["e2e/**/*.{ts,js,tsx,jsx}"],
"rules": {}
}
]
}
+216 -35
View File
@@ -1,54 +1,235 @@
# Starlight Starter Kit: Basics
# Nx Documentation Site
[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build)
```
pnpm create astro@latest -- --template starlight
```
The Nx documentation site built with Astro and Starlight, featuring advanced content management through Markdoc and dynamic plugin documentation generation.
[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/starlight/tree/main/examples/basics)
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/starlight/tree/main/examples/basics)
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/withastro/starlight&create_from_path=examples/basics)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fwithastro%2Fstarlight%2Ftree%2Fmain%2Fexamples%2Fbasics&project-name=my-starlight-docs&repository-name=my-starlight-docs)
## Architecture Overview
> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!
This documentation site leverages Astro's static site generation capabilities with Starlight for documentation-specific features. The architecture consists of:
## 🚀 Project Structure
### Core Technologies
Inside of your Astro + Starlight project, you'll see the following folders and files:
- [**Astro**](https://docs.astro.build) - Static site generator with island architecture
- [**Starlight**](https://starlight.astro.build) - Documentation theme with built-in navigation, search, and i18n
- **React** - For implementing UI components
- **Netlify** - Deployment and hosting
### Key Features
- [Markdoc](https://markdoc.dev) with custom tags for rich content such as videos, graphs, etc.
- TailwindCSS for styling in Astro and React components
- Dynamic API documentation generation from Nx packages and CLI commands
- Community plugin registry
## Project Structure
```
.
├── public/
astro-docs/
├── src/
│ ├── assets/
│ ├── content/
│ │ ├── docs/
│ └── content.config.ts
├── astro.config.mjs
├── package.json
└── tsconfig.json
│ ├── assets/ # Images and static assets to be optimized by Astro
│ ├── nx/ # Nx branding assets
│ │ ├── nx-cloud/ # Nx Cloud assets
│ └── nx-console/ # Nx Console assets
│ ├── components/ # React and Astro components
│ │ ├── layout/ # Layout components (e.g. Sidebar)
│ │ ├── markdoc/ # Markdoc tag components
│ │ └── utils/ # Utility functions
│ ├── content/ # Documentation content
│ │ ├── docs/ # Main documentation files (.mdoc, .mdx)
│ │ ├── approved-community-plugins.json # Powers plugin registry
│ │ └── notifications.json # Notifications banners for docs site
│ ├── pages/ # Dynamic pages and routes (e.g. devkit)
│ ├── plugins/ # Content loaders and plugins
│ │ ├── *.loader.ts # Dynamic content loaders (e.g. CLI commands and API docs generation)
│ │ └── utils/ # Plugin utilities
│ └── styles/ # Global styles
├── public/ # Static assets not to be optimized by Astro (fonts, robots.txt)
├── astro.config.mjs # Astro configuration
├── markdoc.config.mjs # Markdoc tags configuration
├── sidebar.mts # Sidebar structure definition
└── package.json
```
Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name.
## Plugins and Loaders
Images can be added to `src/assets/` and embedded in Markdown with a relative link.
### Content Loaders
Static assets, like favicons, can be placed in the `public/` directory.
The site uses custom content loaders to dynamically generate documentation:
## 🧞 Commands
- **PluginLoader** (`plugin.loader.ts`) - Generates official plugin documentation (generators, executors, migrations)
- **CommunityPluginsLoader** (`community-plugins.loader.ts`) - Generates data for plugin registry (e.g. GitHub stars, npm downloads)
- **NxReferencePackagesLoader** (`nx-reference-packages.loader.ts`) - Generated data for CNW, Devkit, nx cli (e.g. nx core related things)
All commands are run from the root of the project, from a terminal:
## Content Management
| Command | Action |
| :--------------------- | :----------------------------------------------- |
| `pnpm install` | Installs dependencies |
| `pnpm dev` | Starts local dev server at `localhost:4321` |
| `pnpm build` | Build your production site to `./dist/` |
| `pnpm preview` | Preview your build locally, before deploying |
| `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` |
| `pnpm astro -- --help` | Get help using the Astro CLI |
### Content Types
## 👀 Want to learn more?
1. **Regular Documentation** (`src/content/docs/`)
Check out [Starlights docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
- Written in `.mdoc` (Markdoc) or `.mdx` (MDX) format
- Organized by sections: getting-started, concepts, guides, api
- File-based routing (filename = URL path)
2. **Dynamic Plugin Documentation**
- Auto-generated from Nx packages
- Includes generators, executors, and migrations
- Updated during build process
- **Note**: Requires a rebuild and restart to reflect changes
3. **CLI Documentation**
- Auto-generated from Nx CLI commands
- Parsed from actual CLI implementation
- **Note**: Requires a rebuild and restart to reflect changes
### Markdoc Tags
The site includes custom Markdoc tags for rich content.
**Note**: Starlight supports many Markdown and Markdoc features, such as code blocks, asides, etc.
- https://starlight.astro.build/components/using-components/#using-a-component-in-markdoc
- https://starlight.astro.build/guides/authoring-content
#### Layout & Organization
- `{% aside %}` - Highlighted information boxes
- `{% cardgrid %}`, `{% card|linkcard %}` - Card layouts
- `{% tabs %}`, `{% tabitem label="some-label" %}` - Tab layouts
- Use the `syncKey` so tabs are auto switched to the users preference if it makes sense.
- e.g. `{% tabs syncKey="package-manager" %}`
#### Interactive Components
- `{% graph %}` - Interactive project/task graph visualization
- `{% project_details %}` - Project configuration viewer
#### Media & Embeds
- `{% youtube %}` - YouTube video embeds
- `{% video_player %}` - Custom video player
- `{% iframe %}` - Generic iframe embeds
#### Developer Tools
- `{% github_repository %}` - GitHub repo cards
- `{% stackblitz_button %}` - StackBlitz demo launcher
- `{% install_nx_console %}` - IDE extension installer
#### Content Enhancement
- `{% badge %}` - Status/label pills
- `{% metrics %}` - Metrics display
- `{% testimonial %}` - Customer testimonials
## Development Workflow
### Getting Started
```bash
# Install dependencies and link workspace packages
# This will build Nx packages as well for API docs
nx serve astro-docs
# Or run astro dev directly
# This will not build Nx packages
cd astro-docs
npx astro dev
# Custom ports (useful for AI agents with git worktrees)
npx astro dev --port 3000
```
### Adding New Content
#### Regular Documentation
1. Create `.mdoc` file in `src/content/docs/`
2. Add frontmatter with title and description
3. Use Markdoc tags for rich content
4. File location determines URL structure
Example:
```markdown
---
title: 'My New Guide'
description: 'Learn how to use this feature'
---
# Introduction
{% aside type="note" title="Important" %}
This is a note about the feature.
{% /aside %}
```
#### Adding Custom Markdoc Tags
1. Create Astro component in `src/components/markdoc/`
2. (Optional) Create React component for more complex components, or ones that need to be shared with blog or non-docs pages
3. Register in `markdoc.config.mjs`
4. Define attributes and validation
### Updating Plugin Documentation
Plugin documentation is auto-generated during build. To update:
1. Make changes to the plugin's schema/implementation
2. Run the build process
3. The loader will automatically fetch and generate updated docs
### Sidebar Management
The sidebar structure is defined in `sidebar.mts`. To add new sections:
```javascript
export const sidebar = [
{
label: 'Section Name',
items: [
{
label: 'Page Title',
link: 'path/to/page',
},
// Nested sections
{
label: 'Subsection',
collapsed: true,
items: [...]
}
]
}
];
```
> Note there is a special case for sidebar items appearing in the sidebar. Such as the `Reference` section which is handled via the `[sidebar-reference-updater](./src/plugins/sidebar-reference-updater.middleware.ts)` middleware.
## Styling and Theming
- Uses Tailwind CSS v4 with Vite plugin
- Global styles in `src/styles/global.css`
- Component-specific styles use Tailwind utilities
- Dark/light mode support built into Starlight and customized in `global.css`
## Configuration Files
### `astro.config.mjs`
- Site configuration
- Integration setup (React, Markdoc, Starlight)
- Vite plugins
- Build options
### `markdoc.config.mjs`
- Custom tag definitions
- Attribute validation
- Component mappings
### `sidebar.mts`
- Navigation structure
- Section organization
- Dynamic content injection points
+78 -46
View File
@@ -1,35 +1,94 @@
// @ts-check
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
import { sectionSidebarPlugin } from './src/plugins/section-sidebar.plugin';
import netlify from '@astrojs/netlify';
import linkValidator from 'starlight-links-validator';
import react from '@astrojs/react';
import markdoc from '@astrojs/markdoc';
import tailwindcss from '@tailwindcss/vite';
import { sidebar } from './sidebar.mts';
const BASE = '/docs';
const PUBLIC_CONFIG = {
cookiebotDisabled: process.env.COOKIEBOT_DISABLED === 'true',
cookiebotId: process.env.COOKIEBOT_ID ?? null,
gaMeasurementId: 'UA-88380372-10',
gtmMeasurementId: 'GTM-KW8423B6',
isProd: process.env.NODE_ENV === 'production',
};
// https://astro.build/config
export default defineConfig({
base: BASE,
vite: { plugins: [tailwindcss()] },
site: 'https://docs.nx.dev',
adapter: netlify(),
// Allow this to be configured per environment
// Note: this happens during build time so we don't use `import.meta.env`
site: process.env.NX_DEV_URL ?? 'https://nx.dev',
image: {
service: {
entrypoint: 'astro/assets/services/sharp',
config: {
limitInputPixels: false, // Disable pixel limit
},
},
},
trailingSlash: 'never',
// This adapter doesn't support local previews, so only load it on Netlify.
adapter: process.env['NETLIFY'] ? netlify() : undefined,
integrations: [
markdoc(),
// https://starlight.astro.build/reference/configuration/
starlight({
title: 'Nx',
tagline:
'An AI-first build platform that connects everything from your editor to CI. Helping you deliver fast, without breaking things.',
'Get to green PRs in half the time. Nx optimizes your builds, scales your CI, and fixes failed PRs. Built for developers and AI agents.',
customCss: ['./src/styles/global.css'],
favicon: '/favicon.svg',
logo: {
src: './src/assets/nx/Nx-light.png',
light: './src/assets/nx/Nx-dark.png',
dark: './src/assets/nx/Nx-light.png',
replacesTitle: true,
},
plugins: [
// linkValidator(),
sectionSidebarPlugin(),
head: [
{
tag: 'script',
content: `window.__CONFIG = ${JSON.stringify(PUBLIC_CONFIG)};`,
},
...(process.env.COOKIEBOT_ID &&
process.env.COOKIEBOT_DISABLED !== 'true'
? [
{
/** @type {"script"} */
tag: 'script',
attrs: {
id: 'Cookiebot',
src: 'https://consent.cookiebot.com/uc.js',
'data-cbid': process.env.COOKIEBOT_ID,
'data-blockingmode': 'auto',
type: 'text/javascript',
},
},
]
: []),
{
tag: 'script',
attrs: {
src: `${BASE}/global-scripts.js`,
defer: true,
},
},
],
plugins: [],
routeMiddleware: [
'./src/plugins/banner.middleware.ts',
// NOTE: this is responsibile for populating the Reference section
// with generated routes from the nx-reference-packages content collection
// since the sidebar doesn't auto generate w/ dynamic routes from src/pages/reference
// only the src/content/docs/reference files
'./src/plugins/sidebar-reference-updater.middleware.ts',
'./src/plugins/sidebar-icons.middleware.ts',
'./src/plugins/og.middleware.ts',
],
routeMiddleware: ['./src/plugins/banner.middleware.ts'],
markdown: {
// this breaks the renderMarkdown function in the plugin loader due to starlight path normalization
// as to _why_ it has to normalize a path?
@@ -57,42 +116,15 @@ export default defineConfig({
editLink: {
baseUrl: 'https://github.com/nrwl/nx/tree/main/',
},
sidebar: [
{
label: 'Getting Started',
autogenerate: { directory: 'getting-started' },
},
{
label: 'Guides',
autogenerate: { directory: 'guides' },
},
{
label: 'Concepts',
autogenerate: { directory: 'concepts' },
},
{
label: 'References',
collapsed: true,
items: [
// have to use link bc slug is mapped to the /docs/ folder but we need the astro component in the pages/ dir
{ label: 'Nx CLI', link: 'api/nx-cli' },
{ label: 'Nx Cloud CLI', slug: 'api/nx-cloud-cli' },
{ label: 'create-nx-workspace', link: 'api/create-nx-workspace' },
{
label: 'devkit',
collapsed: true,
items: [
{ label: 'Overview', link: 'api/plugins/devkit/' },
{
label: 'Ng CLI Adapter',
link: 'api/plugins/devkit/ngcli_adapter',
},
],
},
// plugins are autogenerated from the Nx repository via the sidebar plugin
],
},
],
sidebar,
components: {
Header: './src/components/layout/Header.astro',
Footer: './src/components/layout/Footer.astro',
PageFrame: './src/components/layout/PageFrame.astro',
Sidebar: './src/components/layout/Sidebar.astro',
TwoColumnContent: './src/components/layout/TwoColumnContent.astro',
PageTitle: './src/components/layout/PageTitle.astro',
},
}),
react(),
],
@@ -0,0 +1,45 @@
import { test, expect } from '@playwright/test';
test('links in descriptions of properties should correctly link to the same page w/ url fragments', async ({
page,
}) => {
await page.goto('/docs/reference/devkit/NxJsonConfiguration');
await expect(
page.getByRole('heading', { name: 'NxJsonConfiguration' })
).toBeVisible();
await page
.getByTestId('main-pane')
.getByRole('link', { name: 'nxCloudAccessToken' })
.click();
await expect(
page.getByRole('heading', { name: 'nxCloudAccessToken' })
).toBeVisible();
const description = page
.getByRole('paragraph')
.filter({ has: page.getByRole('link', { name: 'tasksRunnerOptions' }) })
.first();
await expect(description).toBeVisible();
const linkedProperty = description.getByRole('link', {
name: 'tasksRunnerOptions',
});
await expect(linkedProperty).toBeVisible();
await expect(linkedProperty).toHaveAttribute(
'href',
'/docs/reference/devkit/NxJsonConfiguration#tasksrunneroptions'
);
await linkedProperty.click();
expect(page.url()).toContain('#tasksrunneroptions');
await expect(
page.getByRole('heading', { name: 'tasksRunnerOptions' })
).toBeVisible();
});
+129
View File
@@ -0,0 +1,129 @@
#!/usr/bin/env bash
# | xargs -0 sed -i '' 's/<match>/<replace>/g'
# replace links that start with /concepts to /docs/concepts
rg "\(/concepts" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/concepts|](/docs/concepts|g'
# usage in link card aka href="/concepts/..."
rg "=\"/concepts" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/concepts|="/docs/concepts|g'
# /recipes -> /docs/guides
rg "\(/recipes" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/recipes|](/docs/guides|g'
rg "=\"/recipes" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/recipes|="/docs/guides|g'
# /deprecated -> /docs/reference/deprecated
rg "\(/deprecated" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/deprecated|](/docs/reference/deprecated|g'
rg "=\"/deprecated" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/deprecated|="/docs/reference/deprecated|g'
# /troubleshooting -> /docs/troublshooting
rg "\(/troubleshooting" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/troubleshooting|](/docs/troubleshooting|g'
rg "=\"/troubleshooting" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/troubleshooting|="/docs/troubleshooting|g'
# /plugin-registry -> /docs/plugin-registry
rg "\(/plugin-registry" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/plugin-registry|](/docs/plugin-registry|g'
rg "=\"/plugin-registry" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/plugin-registry|="/docs/plugin-registry|g'
# /features -> /docs/features
rg "\(/features" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/features|](/docs/features|g'
rg "=\"/features" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/features|="/docs/features|g'
# /extending-nx -> /docs/extending-nx
rg "\(/extending-nx" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/extending-nx|](/docs/extending-nx|g'
rg "=\"/extending-nx" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/extending-nx|="/docs/extending-nx|g'
rg "/extending-nx/recipes" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|/extending-nx/recipes|/extending-nx|g'
# /tech -> /docs/tech
rg "\(/tech" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/tech|](/docs/tech|g'
rg "=\"/tech" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/tech|="/docs/tech|g'
## /recipes/running-tasks -> /docs/guides/tasks--caching
rg "\(/recipes/running-tasks" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/recipes/running-tasks|](/docs/guides/tasks--caching|g'
rg "=\"/recipes/running-tasks" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/recipes/running-tasks|="/docs/guides/tasks--caching|g'
# /ci/features -> /docs/features/ci-features
rg "\(/ci/features" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/features|](/docs/features/ci-features|g'
rg "=\"/ci/features" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/features|="/docs/features/ci-features|g'
# /ci/concepts -> /docs/concepts/ci-concepts
rg "\(/ci/concepts" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/concepts|](/docs/concepts/ci-concepts|g'
rg "=\"/ci/concepts" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/concepts|="/docs/concepts/ci-concepts|g'
# /ci/guides/security -> /docs/guides/nx-cloud
rg "\(/ci/guides/security" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/guides/security|](/docs/guides/nx-cloud|g'
rg "=\"/ci/guides/security" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/guides/security|="/docs/guides/nx-cloud|g'
rg "\(/ci/recipes/security" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/recipes/security|](/docs/guides/nx-cloud|g'
rg "=\"/ci/recipes/security" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/recipes/security|="/docs/guides/nx-cloud|g'
# /ci/recipes/enterprise -> /docs/enterprise
rg "\(/ci/recipes/enterprise" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/recipes/enterprise|](/docs/enterprise|g'
rg "=\"/ci/recipes/enterprise" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/recipes/enterprise|="/docs/enterprise|g'
# /ci/recipes -> /docs/guides/nx-cloud
rg "\(/ci/guides" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/guides|](/docs/guides/nx-cloud|g'
rg "=\"/ci/guides" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/guides|="/docs/guides/nx-cloud|g'
rg "\(/ci/recipes" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/recipes|](/docs/guides/nx-cloud|g'
rg "=\"/ci/recipes" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/recipes|="/docs/guides/nx-cloud|g'
# /getting-started -> /docs/getting-started
rg "\(/getting" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/getting|](/docs/getting|g'
rg "=\"/getting" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/getting|="/docs/getting|g'
# /ci/recipes/set-up -> /docs/guides/nx-cloud/setup-ci
rg "\(/ci/recipes/set-up" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/recipes/set-up|](/docs/guides/nx-cloud/setup-ci|g'
rg "=\"/ci/recipes/set-up" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/recipes/set-up|="/docs/guides/nx-cloud/setup-ci|g'
# I merged all the set-up ci guides into 1 page with tabs so we need to remove any links that go to specific guides
rg "/monorepo-ci-" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|\(/[^)]*\)/monorepo-ci-[^)]*\()\)|\1\2|g'
# /ci/reference/nx-cloud-cli -> /docs/reference/nx-cloud-cli
rg "\(/ci/reference/nx-cloud-cli" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/ci/reference/nx-cloud-cli|](/docs/reference/nx-cloud-cli|g'
rg "=\"/ci/reference/nx-cloud-cli" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/ci/reference/nx-cloud-cli|="/docs/reference/nx-cloud-cli|g'
# /blog -> https://nx.dev/blog
rg "\(/blog" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/blog|](https://nx.dev/blog|g'
rg "=\"/blog" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/blog|="https://nx.dev/blog|g'
# /enterprise -> https://nx.dev/enterprise
rg "\(/enterprise" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/enterprise|](https://nx.dev/enterprise|g'
rg "=\"/enterprise" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/enterprise|="https://nx.dev/enterprise|g'
# /pricing -> https://nx.dev/pricing
rg "\(/pricing" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/pricing|](https://nx.dev/pricing|g'
rg "=\"/pricing" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/pricing|="https://nx.dev/pricing|g'
# /contact -> https://nx.dev/contact
rg "\(/contact" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/contact|](https://nx.dev/contact|g'
rg "=\"/contact" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/contact|="https://nx.dev/contact|g'
# /nx-cloud -> https://nx.dev/nx-cloud
rg "\(/nx-cloud" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/nx-cloud|](https://nx.dev/nx-cloud|g'
rg "=\"/nx-cloud" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/nx-cloud|="https://nx.dev/nx-cloud|g'
# /courses -> https://nx.dev/courses
rg "\(/courses" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/courses|](https://nx.dev/courses|g'
rg "=\"/courses" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/courses|="https://nx.dev/courses|g'
# /community -> https://nx.dev/community
rg "\(/community" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/community|](https://nx.dev/community|g'
rg "=\"/community" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/community|="https://nx.dev/community|g'
# though these URLS that have `core-api` in them need to be special handled
# but we can search for 'core-api' later and do a different replace mechinism
# /reference -> /docs/reference
rg "\(/reference" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/reference|](/docs/reference|g'
rg "=\"/reference" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/reference|="/docs/reference|g'
# /docs/reference/core-api/nx/documents/:command -> /docs/reference/nx-commands#:command
rg "\(/docs/reference/core-api/nx/documents/" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|](/docs/reference/core-api/nx/documents/|](/docs/reference/nx-commands#|g'
rg "=\"/docs/reference/core-api/nx/documents/" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|="/docs/reference/core-api/nx/documents/|="/docs/reference/nx-commands#|g'
# /docs/reference/core-api/:remote-cache-plugin/overview -> /docs/reference/remote-cache-plugins/:remote-cache-plugin/overview
# For s3-cache
rg "/docs/reference/core-api/s3-cache" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|/docs/reference/core-api/s3-cache|/docs/reference/remote-cache-plugins/s3-cache|g'
# For azure-cache
rg "/docs/reference/core-api/azure-cache" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|/docs/reference/core-api/azure-cache|/docs/reference/remote-cache-plugins/azure-cache|g'
# For gcs-cache
rg "/docs/reference/core-api/gcs-cache" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|/docs/reference/core-api/gcs-cache|/docs/reference/remote-cache-plugins/gcs-cache|g'
# For shared-fs-cache
rg "/docs/reference/core-api/shared-fs-cache" --type-add "mdoc:*mdoc" -t mdoc -l --null | xargs -0 sed -i '' 's|/docs/reference/core-api/shared-fs-cache|/docs/reference/remote-cache-plugins/shared-fs-cache|g'
+35
View File
@@ -0,0 +1,35 @@
const url = 'http://localhost:4321/docs';
const timeout = 120000; // 2 minutes in milliseconds
console.log('starting up....');
export default async function globalSetup() {
const startTime = Date.now();
const maxEndTime = startTime + timeout;
console.log(`Waiting for ${url} to be available...`);
while (Date.now() < maxEndTime) {
try {
const response = await fetch(url);
if (response.ok) {
console.log(`✓ Server is ready at ${url}`);
return;
}
console.log(
`Server responded with status ${response.status}, retrying...`
);
} catch (error) {
// Server not available yet, continue polling
const remainingTime = Math.round((maxEndTime - Date.now()) / 1000);
if (remainingTime % 10 === 0 && remainingTime > 0) {
console.log(`Still waiting... ${remainingTime} seconds remaining`);
}
}
await new Promise((resolve) => setTimeout(resolve, 1000));
}
throw new Error(
`Server at ${url} did not become available within ${timeout / 1000} seconds`
);
}
+369 -1
View File
@@ -4,8 +4,367 @@ import starlightMarkdoc from '@astrojs/starlight-markdoc';
export default defineMarkdocConfig({
extends: [starlightMarkdoc()],
tags: {
call_to_action: {
render: component('./src/components/markdoc/CallToAction.astro'),
attributes: {
url: {
type: 'String',
required: true,
},
title: {
type: 'String',
required: true,
},
description: {
type: 'String',
required: false,
},
icon: {
type: 'String',
required: false,
},
variant: {
type: 'String',
required: false,
default: 'default',
matches: [
'default',
'gradient',
'inverted',
'gradient-alt',
'simple',
],
},
size: {
type: 'String',
required: false,
default: 'sm',
matches: ['sm', 'md', 'lg'],
},
},
},
callout: {
render: component('./src/components/markdoc/Callout.astro'),
children: ['paragraph', 'tag', 'list'],
attributes: {
type: {
type: 'String',
default: 'note',
matches: [
'announcement',
'caution',
'check',
'note',
'warning',
'deepdive',
],
errorLevel: 'critical',
},
title: {
type: 'String',
required: true,
},
expanded: {
type: 'Boolean',
default: false,
},
},
},
card: {
render: component('./src/components/markdoc/Card.astro'),
attributes: {
title: {
type: 'String',
required: true,
},
description: {
type: 'String',
default: '',
},
type: {
type: 'String',
default: 'documentation',
},
url: {
type: 'String',
default: '',
},
},
},
cards: {
render: component('./src/components/markdoc/Cards.astro'),
attributes: {
cols: {
type: 'Number',
},
smCols: {
type: 'Number',
},
mdCols: {
type: 'Number',
},
lgCols: {
type: 'Number',
},
moreLink: {
type: 'String',
},
},
},
course_video: {
render: component('./src/components/markdoc/CourseVideo.astro'),
attributes: {
src: {
type: 'String',
required: true,
},
courseTitle: {
type: 'String',
required: true,
},
courseUrl: {
type: 'String',
required: true,
},
},
},
github_repository: {
render: component('./src/components/markdoc/GithubRepository.astro'),
attributes: {
url: {
type: 'String',
required: true,
},
title: {
type: 'String',
required: false,
},
},
},
graph: {
render: component('./src/components/markdoc/Graph.astro'),
children: [],
attributes: {
jsonFile: {
type: 'String',
},
title: {
type: 'String',
},
type: {
type: 'String',
matches: ['project', 'task'],
default: 'project',
},
height: {
type: 'String',
required: true,
},
},
},
iframe: {
render: component('./src/components/markdoc/Iframe.astro'),
attributes: {
src: {
type: 'String',
required: true,
},
title: {
type: 'String',
required: true,
},
width: {
type: 'String',
default: '50%',
},
},
},
install_nx_console: {
render: component('./src/components/markdoc/InstallNxConsole.astro'),
attributes: {},
},
link_card: {
render: component('./src/components/markdoc/LinkCard.astro'),
attributes: {
title: {
type: 'String',
required: true,
},
type: {
type: 'String',
required: true,
},
icon: {
type: 'String',
required: false,
},
url: {
type: 'String',
default: '',
},
appearance: {
type: 'String',
default: 'default',
},
},
},
index_page_cards: {
render: component('./src/components/markdoc/IndexPageCards.astro'),
attributes: {
path: {
type: 'String',
required: true,
},
},
},
metrics: {
render: component('./src/components/markdoc/Metrics.astro'),
attributes: {
metrics: {
type: 'Array',
required: true,
},
},
},
persona: {
render: component('./src/components/markdoc/Persona.astro'),
children: ['paragraph', 'tag', 'list'],
attributes: {
title: {
type: 'String',
},
type: {
type: 'String',
default: 'integrated',
required: true,
matches: [
'cache',
'distribute',
'javascript',
'lerna',
'react',
'angular',
'integrated',
],
errorLevel: 'critical',
},
url: {
type: 'String',
required: true,
errorLevel: 'critical',
},
},
},
personas: {
render: component('./src/components/markdoc/Personas.astro'),
},
pill: {
render: component('./src/components/markdoc/Pill.astro'),
attributes: {
url: {
type: 'String',
default: '',
},
},
},
project_details: {
render: component('./src/components/markdoc/ProjectDetails.astro'),
children: [],
attributes: {
jsonFile: {
type: 'String',
},
title: {
type: 'String',
},
height: {
type: 'String',
},
expandedTargets: {
type: 'Array',
},
},
},
stackblitz_button: {
render: component('./src/components/markdoc/StackblitzButton.astro'),
attributes: {
url: {
type: 'String',
required: true,
},
title: {
type: 'String',
required: false,
},
},
},
testimonial: {
render: component('./src/components/markdoc/Testimonial.astro'),
children: ['paragraph'],
attributes: {
name: {
type: 'String',
},
title: {
type: 'String',
},
image: {
type: 'String',
},
},
},
video_link: {
render: component('./src/components/markdoc/VideoLink.astro'),
attributes: {
link: {
type: 'String',
required: true,
},
text: {
type: 'String',
required: false,
},
},
},
video_player: {
render: component('./src/components/markdoc/VideoPlayer.astro'),
attributes: {
src: {
type: 'String',
required: true,
},
alt: {
type: 'String',
required: false,
},
link: {
type: 'String',
required: false,
},
showDescription: {
type: 'Boolean',
required: false,
default: false,
},
showControls: {
type: 'Boolean',
required: false,
default: false,
},
autoPlay: {
type: 'Boolean',
required: false,
default: false,
},
loop: {
type: 'Boolean',
required: false,
default: false,
},
},
},
youtube: {
render: component('./src/components/Youtube.astro'),
render: component('./src/components/markdoc/Youtube.astro'),
attributes: {
src: {
type: 'String',
@@ -25,5 +384,14 @@ export default defineMarkdocConfig({
},
},
},
side_by_side: {
render: component('./src/components/markdoc/SideBySide.astro'),
attributes: {
align: {
type: 'String',
default: 'center',
},
},
},
},
});
+22
View File
@@ -0,0 +1,22 @@
# Permanent redirects (301 by default)
[[redirects]]
from = "/"
to = "/docs/getting-started/intro"
[[redirects]]
from = "/showcase"
to = "/docs/quickstart"
[[redirects]]
from = "/showcase/example-repos/*"
to = "/docs/quickstart"
[[redirects]]
from = "/showcase/benchmarks/*"
to = "/docs/reference/benchmarks/:splat"
# Rewrite for base path handling (keeps URL the same)
[[redirects]]
from = "/docs/*"
to = "/:splat"
status = 200
+3
View File
@@ -10,10 +10,13 @@
"@astrojs/starlight": "0.34.6",
"@astrojs/starlight-markdoc": "^0.4.0",
"@astrojs/starlight-tailwind": "^4.0.1",
"@nx/nx-dev-ui-common": "workspace:*",
"@nx/nx-dev-ui-icons": "workspace:*",
"@nx/nx-dev-ui-markdoc": "workspace:*",
"@tailwindcss/vite": "^4.1.11",
"astro": "^5.10.1",
"astro-og-canvas": "^0.7.0",
"canvaskit-wasm": "^0.40.0",
"tailwindcss": "4.1.11"
}
}
+42
View File
@@ -0,0 +1,42 @@
import { defineConfig, devices } from '@playwright/test';
import { nxE2EPreset } from '@nx/playwright/preset';
import { workspaceRoot } from '@nx/devkit';
import { join } from 'path';
// For CI, you may want to set BASE_URL to the deployed application.
const baseURL = process.env['BASE_URL'] || 'http://localhost:4321';
const reportDir = join(
workspaceRoot,
'dist',
'astro-docs',
'playwright-report'
);
export default defineConfig({
...nxE2EPreset(__filename, { testDir: './e2e' }),
reporter: [
['list', { printSteps: true }],
['html', { outputFolder: reportDir, open: 'never' }],
[
'junit',
{
// JUnit only respects the outputFile option, and not outputDir or outputFolder
outputFile: `${reportDir}/test-e2e-nx-cloud.xml`,
},
],
],
/* Global setup to wait for server */
globalSetup: require.resolve('./global-setup.e2e.ts'),
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
baseURL,
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: 'on-first-retry',
},
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
],
});
+46 -1
View File
@@ -1,7 +1,8 @@
{
"name": "astro-docs",
"$schema": "../node_modules/nx/schemas/project-schema.json",
"comment": "package.json#scripts runs in the project root directory with astro assumes is where the node_modules is. which fails. so run the scripts in project.json#targets with --root command instead",
"targets": {
"comment": "package.json#scripts runs in the project root directory with astro assumes is where the node_modules is. which fails. so run the scripts in project.json#targets with --root command instead",
"serve": {
"continuous": true,
"dependsOn": [
@@ -22,16 +23,60 @@
"target": "build"
}
],
"outputs": [
"{projectRoot}/dist",
"{projectRoot}/.astro",
"{projectRoot}/.netlify"
],
"command": "astro build",
"options": {
"cwd": "astro-docs"
}
},
"preview": {
"dependsOn": ["build"],
"command": "astro preview",
"continuous": true,
"options": {
"cwd": "astro-docs"
}
},
"astro": {
"command": "astro",
"options": {
"cwd": "astro-docs"
}
},
"test": {
"dependsOn": ["validate-links"],
"command": "echo done"
},
"pw-e2e": {
"dependsOn": ["serve"],
"parallelism": true
},
"e2e-ci--**/*": {
"dependsOn": ["preview"],
"parallelism": true
},
"show-report": {
"command": "playwright show-report dist/astro-docs/playwright-report"
},
"validate-links": {
"dependsOn": ["build"],
"cache": true,
"inputs": [
"{projectRoot}/src/**/*",
"{projectRoot}/astro.config.mjs",
"{projectRoot}/sidebar.mts",
"{projectRoot}/markdoc.config.mjs",
"{projectRoot}/tsconfig.json",
"{projectRoot}/package.json"
],
"command": "npx tsx validate-links.ts",
"options": {
"cwd": "astro-docs"
}
}
}
}
+162
View File
@@ -0,0 +1,162 @@
(function () {
const config = window.__CONFIG || {};
if (!config.isProd) return;
const isCookiebotDisabled = config.cookiebotDisabled ?? false;
const gaMeasurementId = config.gaMeasurementId ?? 'UA-88380372-10';
const gtmMeasurementId = config.gtmMeasurementId ?? 'GTM-KW8423B6';
// Initialize global objects
window.Cookiebot = window.Cookiebot || {};
window.dataLayer = window.dataLayer || [];
window.gtag =
window.gtag ||
function () {
window.dataLayer.push(arguments);
};
const loadGoogleAnalytics = () => {
const script = document.createElement('script');
script.src = `https://www.googletagmanager.com/gtag/js?id=${gaMeasurementId}`;
script.async = true;
document.head.appendChild(script);
// Initialize gtag
window.gtag('js', new Date());
window.gtag('config', gaMeasurementId, {
page_path: window.location.pathname,
});
};
const loadGTM = () => {
if (!gtmMeasurementId) return;
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', gtmMeasurementId);
};
const loadHubSpot = () => {
const hsScript = document.createElement('script');
hsScript.src = 'https://js.hs-scripts.com/2757427.js';
hsScript.async = true;
hsScript.defer = true;
document.head.appendChild(hsScript);
// Load HubSpot Forms
const hsFormsScript = document.createElement('script');
hsFormsScript.src = '//js.hsforms.net/forms/v2.js';
hsFormsScript.async = true;
hsFormsScript.defer = true;
document.head.appendChild(hsFormsScript);
};
const loadApollo = () => {
const n = Math.random().toString(36).substring(7);
const script = document.createElement('script');
script.src = `https://assets.apollo.io/micro/website-tracker/tracker.iife.js?nocache=${n}`;
script.async = true;
script.defer = true;
script.onload = function () {
if (window.trackingFunctions?.onLoad) {
window.trackingFunctions.onLoad({
appId: '65e1db2f1976f30300fd8b26',
});
}
};
document.head.appendChild(script);
};
const loadHotjar = () => {
(function (h, o, t, j, a, r) {
h.hj =
h.hj ||
function () {
(h.hj.q = h.hj.q || []).push(arguments);
};
h._hjSettings = { hjid: 2774127, hjsv: 6 };
a = o.getElementsByTagName('head')[0];
r = o.createElement('script');
r.async = 1;
r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;
a.appendChild(r);
})(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv=');
};
const loadTwitterPixel = () => {
!(function (e, t, n, s, u, a) {
e.twq ||
((s = e.twq =
function () {
s.exe ? s.exe.apply(s, arguments) : s.queue.push(arguments);
}),
(s.version = '1.1'),
(s.queue = []),
(u = t.createElement(n)),
(u.async = !0),
(u.src = 'https://static.ads-twitter.com/uwt.js'),
(a = t.getElementsByTagName(n)[0]),
a.parentNode.insertBefore(u, a));
})(window, document, 'script');
window.twq('config', 'obtp4');
};
const checkAndLoadScripts = () => {
if (isCookiebotDisabled) {
loadGoogleAnalytics();
loadGTM();
loadHubSpot();
} else if (window.Cookiebot && window.Cookiebot.consent) {
// Statistics cookies (Google Analytics, GTM)
if (window.Cookiebot.consent.statistics) {
loadGoogleAnalytics();
loadGTM();
}
// Marketing cookies (HubSpot, Apollo, Hotjar, Twitter)
if (window.Cookiebot.consent.marketing) {
loadHubSpot();
loadApollo();
loadHotjar();
loadTwitterPixel();
}
} else {
// Wait for Cookiebot to load
setTimeout(checkAndLoadScripts, 100);
}
};
// Add GTM noscript iframe to body
const addGTMNoScript = () => {
const noscript = document.createElement('noscript');
const iframe = document.createElement('iframe');
iframe.src = `https://www.googletagmanager.com/ns.html?id=${gtmMeasurementId}`;
iframe.height = '0';
iframe.width = '0';
iframe.style.display = 'none';
iframe.style.visibility = 'hidden';
iframe.title = 'Google Tag Manager';
noscript.appendChild(iframe);
document.body.insertBefore(noscript, document.body.firstChild);
};
// Listen for user consent to cookies
window.addEventListener('CookiebotOnAccept', checkAndLoadScripts);
// Initial check
checkAndLoadScripts();
// Add GTM noscript on DOM ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', addGTMNoScript);
} else {
addGTMNoScript();
}
})();
@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Angular</title><path d="M16.712 17.711H7.288l-1.204 2.916L12 24l5.916-3.373-1.204-2.916ZM14.692 0l7.832 16.855.814-12.856L14.692 0ZM9.308 0 .662 3.999l.814 12.856L9.308 0Zm-.405 13.93h6.198L12 6.396 8.903 13.93Z"/></svg>

After

Width:  |  Height:  |  Size: 299 B

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
<path stroke-linecap="round" stroke-linejoin="round" d="m21 7.5-9-5.25L3 7.5m18 0-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9" />
</svg>

After

Width:  |  Height:  |  Size: 284 B

@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ESLint</title><path d="M7.257 9.132L11.816 6.5a.369.369 0 0 1 .368 0l4.559 2.632a.369.369 0 0 1 .184.32v5.263a.37.37 0 0 1-.184.319l-4.559 2.632a.369.369 0 0 1-.368 0l-4.559-2.632a.369.369 0 0 1-.184-.32V9.452a.37.37 0 0 1 .184-.32M23.852 11.53l-5.446-9.475c-.198-.343-.564-.596-.96-.596H6.555c-.396 0-.762.253-.96.596L.149 11.509a1.127 1.127 0 0 0 0 1.117l5.447 9.398c.197.342.563.517.959.517h10.893c.395 0 .76-.17.959-.512l5.446-9.413a1.069 1.069 0 0 0 0-1.086m-4.51 4.556a.4.4 0 0 1-.204.338L12.2 20.426a.395.395 0 0 1-.392 0l-6.943-4.002a.4.4 0 0 1-.205-.338V8.08c0-.14.083-.269.204-.338L11.8 3.74c.12-.07.272-.07.392 0l6.943 4.003a.4.4 0 0 1 .206.338z"/></svg>

After

Width:  |  Height:  |  Size: 743 B

+9
View File
@@ -0,0 +1,9 @@
<svg
role="img"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
fill="currentColor"
>
<title>Java</title>
<path d="m16.5093 4.9869-.0607-.0347c-1.1014.369-4.4915 1.707-4.4915 4.202 0 1.411 1.378 2.1925 1.378 3.5158 0 .472-.2666.9146-.4836 1.1791l.1091.063c.5735-.3728 1.589-1.18 1.589-2.2222 0-.8825-1.2216-1.943-1.2216-3.0774 0-1.7875 2.357-3.1899 3.1813-3.6256zm-1.6642-3.27c0 3.6925-5.0604 5.1055-5.0604 7.7309 0 1.843 1.2222 2.9987 1.8983 3.7293l-.055.0317c-.8536-.534-3.0995-1.876-3.0995-4.0927 0-3.112 5.8123-4.599 5.8123-8.134 0-.435-.0644-.7683-.1095-.9482L14.2901 0c.1842.2315.555.8102.555 1.7168m.514 14.9392c-.5962.1688-1.9389.4441-3.859.4441-1.8844 0-3.424-.3226-3.4289-.7024-.0032-.2527.3024-.3628.3024-.3628l-.0544-.0316c-.9023.1595-1.7406.406-1.7357.7752.0084.6698 2.5697 1.1728 4.9129 1.1728 1.992 0 3.9053-.3343 4.7684-.7722zm-6.368 2.0708c-.4185.0832-1.3305.2926-1.3305.7361 0 .6144 1.9513 1.085 3.835 1.085 2.5922 0 3.6539-.667 3.702-.7016l-1.078-.6235c-.4583.1092-1.2306.2808-2.6214.2808-1.5521 0-2.5634-.2658-2.5634-.5569 0-.0617.0386-.135.1106-.1886zm10.5923-4.1337c-.0725 1.3911-1.3577 2.2573-2.6423 2.9893l.1164.067c1.3708-.3855 3.8166-1.5085 3.6144-3.2346-.1007-.8608-.8875-1.4758-1.9133-1.4758-.3194 0-.6036.0563-.834.1265l-.0007.0022-.0486.1224c.9175-.1796 1.7558.4904 1.7082 1.403zm-8.1232 8.1638c3.6058-.0313 7.6402-.737 7.6298-1.9232-.0019-.215-.1418-.3622-.2635-.4513l-.0592.034c-.3333.9188-3.1508 1.5977-7.3132 1.634-2.6859.0234-6.4063-.62-6.4128-1.3636-.0065-.7455 1.7625-1.1552 1.7625-1.1552l-.125-.0714c-1.1854.1632-3.3697.731-3.3625 1.5506.0104 1.185 5.0304 1.7734 8.1439 1.7461zm-.375.847c-1.4333.0126-3.1833-.1061-4.6555-.3535l-.1363.0784c1.4664.43 3.508.6896 5.7514.6702 4.4059-.0386 7.9779-1.1311 8.0485-2.446l-.051-.0297c-.2953.3604-2.2009 2.0216-8.9572 2.0806zm-5.5195-9.328c0-.6646 2.521-1.0374 3.6947-1.1277l.112.0647c-.451.082-2.26.401-2.26.8172 0 .4532 2.7747.7501 4.3853.7501 2.7355 0 4.595-.414 5.095-.5505l.6997.4072c-.4792.2346-2.5362.8495-5.7945.8495-3.6214 0-5.9322-.7086-5.9322-1.2105" />
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1,18 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1244_718)">
<path d="M9.35205 3.72154V7.35041L12.0002 8.93803M9.35205 3.72154L12.0002 2.13391L14.6483 3.72154M9.35205 3.72154L12.0002 5.08236M12.0002 8.93803L14.6483 7.35041V3.72154M12.0002 8.93803V5.08236M14.6483 3.72154L12.0002 5.08236" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
<path d="M8.3335 3.26804L12.0002 1L15.6668 3.26804V7.80412L12.0002 10.0722L8.3335 7.80412V3.26804Z" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
<path d="M2.01855 15.2888V18.9177L4.6667 20.5053M2.01855 15.2888L4.6667 13.7012L7.31485 15.2888M2.01855 15.2888L4.6667 16.8764M4.6667 20.5053L7.31485 18.9177V15.2888M4.6667 20.5053V16.8764M7.31485 15.2888L4.6667 16.8764" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
<path d="M1 14.8349L4.66667 12.5669L8.33333 14.8349V19.371L4.66667 21.6391L1 19.371V14.8349Z" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
<path d="M16.6855 15.2888V18.9177L19.3337 20.5053M16.6855 15.2888L19.3337 13.7012L21.9818 15.2888M16.6855 15.2888L19.3337 16.6496M19.3337 20.5053L21.9818 18.9177V15.2888M19.3337 20.5053V16.6496M21.9818 15.2888L19.3337 16.6496" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
<path d="M15.6665 14.8349L19.3332 12.5669L22.9998 14.8349V19.371L19.3332 21.6391L15.6665 19.371V14.8349Z" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
<path d="M8.33317 6.89685L4.6665 9.16489V12.567" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
<path d="M15.6668 6.89685L19.3335 9.16489V12.567" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
<path d="M7.51855 19.8248L12 23.0001L16.4815 19.8248" stroke="black" stroke-width="0.5" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_1244_718">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Node.js</title><path d="M11.998,24c-0.321,0-0.641-0.084-0.922-0.247l-2.936-1.737c-0.438-0.245-0.224-0.332-0.08-0.383 c0.585-0.203,0.703-0.25,1.328-0.604c0.065-0.037,0.151-0.023,0.218,0.017l2.256,1.339c0.082,0.045,0.197,0.045,0.272,0l8.795-5.076 c0.082-0.047,0.134-0.141,0.134-0.238V6.921c0-0.099-0.053-0.192-0.137-0.242l-8.791-5.072c-0.081-0.047-0.189-0.047-0.271,0 L3.075,6.68C2.99,6.729,2.936,6.825,2.936,6.921v10.15c0,0.097,0.054,0.189,0.139,0.235l2.409,1.392 c1.307,0.654,2.108-0.116,2.108-0.89V7.787c0-0.142,0.114-0.253,0.256-0.253h1.115c0.139,0,0.255,0.112,0.255,0.253v10.021 c0,1.745-0.95,2.745-2.604,2.745c-0.508,0-0.909,0-2.026-0.551L2.28,18.675c-0.57-0.329-0.922-0.945-0.922-1.604V6.921 c0-0.659,0.353-1.275,0.922-1.603l8.795-5.082c0.557-0.315,1.296-0.315,1.848,0l8.794,5.082c0.57,0.329,0.924,0.944,0.924,1.603 v10.15c0,0.659-0.354,1.273-0.924,1.604l-8.794,5.078C12.643,23.916,12.324,24,11.998,24z M19.099,13.993 c0-1.9-1.284-2.406-3.987-2.763c-2.731-0.361-3.009-0.548-3.009-1.187c0-0.528,0.235-1.233,2.258-1.233 c1.807,0,2.473,0.389,2.747,1.607c0.024,0.115,0.129,0.199,0.247,0.199h1.141c0.071,0,0.138-0.031,0.186-0.081 c0.048-0.054,0.074-0.123,0.067-0.196c-0.177-2.098-1.571-3.076-4.388-3.076c-2.508,0-4.004,1.058-4.004,2.833 c0,1.925,1.488,2.457,3.895,2.695c2.88,0.282,3.103,0.703,3.103,1.269c0,0.983-0.789,1.402-2.642,1.402 c-2.327,0-2.839-0.584-3.011-1.742c-0.02-0.124-0.126-0.215-0.253-0.215h-1.137c-0.141,0-0.254,0.112-0.254,0.253 c0,1.482,0.806,3.248,4.655,3.248C17.501,17.007,19.099,15.91,19.099,13.993z"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

+1
View File
@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>React</title><path d="M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M9.75 3.104v5.714a2.25 2.25 0 0 1-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 0 1 4.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0 1 12 15a9.065 9.065 0 0 0-6.23-.693L5 14.5m14.8.8 1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0 1 12 21c-2.773 0-5.491-.235-8.135-.687-1.718-.293-2.3-2.379-1.067-3.61L5 14.5" />
</svg>

After

Width:  |  Height:  |  Size: 632 B

@@ -0,0 +1,4 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<title>TypeScript</title>
<path d="M0 12v12h24V0H0zm19.341-.956c.61.152 1.074.423 1.501.865.221.236.549.666.575.77.008.03-1.036.73-1.668 1.123-.023.015-.115-.084-.217-.236-.31-.45-.633-.644-1.128-.678-.728-.05-1.196.331-1.192.967a.88.88 0 0 0 .102.45c.16.331.458.53 1.39.933 1.719.74 2.454 1.227 2.911 1.92.51.773.625 2.008.278 2.926-.38.998-1.325 1.676-2.655 1.9-.411.073-1.386.062-1.828-.018-.964-.172-1.878-.648-2.442-1.273-.221-.243-.652-.88-.625-.925.011-.016.11-.077.22-.141.108-.061.511-.294.892-.515l.69-.4.145.214c.202.308.643.731.91.872.766.404 1.817.347 2.335-.118a.883.883 0 0 0 .313-.72c0-.278-.035-.4-.18-.61-.186-.266-.567-.49-1.649-.96-1.238-.533-1.771-.864-2.259-1.39a3.165 3.165 0 0 1-.659-1.2c-.091-.339-.114-1.189-.042-1.531.255-1.197 1.158-2.03 2.461-2.278.423-.08 1.406-.05 1.821.053zm-5.634 1.002l.008.983H10.59v8.876H8.38v-8.876H5.258v-.964c0-.534.011-.98.026-.99.012-.016 1.913-.024 4.217-.02l4.195.012z"/>
</svg>

After

Width:  |  Height:  |  Size: 1019 B

@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vue.js</title><path d="M24,1.61H14.06L12,5.16,9.94,1.61H0L12,22.39ZM12,14.08,5.16,2.23H9.59L12,6.41l2.41-4.18h4.43Z"/></svg>

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

+6 -1
View File
@@ -1,4 +1,9 @@
# *
User-agent: *
Allow: /
Sitemap: https://<YOUR SITE>/sitemap-index.xml
# Host
Host: https://nx.dev
# Sitemaps
Sitemap: https://nx.dev/sitemap-index.xml
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://nx.dev/docs/sitemap-0.xml</loc>
</sitemap>
</sitemapindex>
+220
View File
@@ -0,0 +1,220 @@
import type { StarlightUserConfig } from '@astrojs/starlight/types';
import { getPluginItems } from './src/plugins/utils/plugin-mappings';
export const sidebar: StarlightUserConfig['sidebar'] = [
{
label: 'Getting Started',
collapsed: false,
autogenerate: { directory: 'getting-started', collapsed: true },
},
{
label: 'Features',
collapsed: false,
autogenerate: { directory: 'features', collapsed: true },
},
{
label: 'Core Guides',
collapsed: true,
autogenerate: { directory: 'guides', collapsed: true },
},
{
label: 'Core Concepts',
collapsed: true,
autogenerate: { directory: 'concepts', collapsed: true },
},
{
label: 'Technologies',
collapsed: false,
// manually type the tech routes due to complexity of order and structure
items: [
{
label: 'TypeScript',
collapsed: true,
items: getPluginItems('js'),
},
{
label: 'Angular',
collapsed: true,
items: [
...getPluginItems('angular'),
{
label: 'Angular Rspack',
collapsed: true,
items: getPluginItems('angular-rspack', 'angular'),
},
{
label: 'Angular Rsbuild',
collapsed: true,
items: getPluginItems('angular-rsbuild', 'angular'),
},
],
},
{
label: 'React',
collapsed: true,
items: [
...getPluginItems('react'),
{
label: 'Next',
collapsed: true,
items: getPluginItems('next', 'react'),
},
{
label: 'Remix',
collapsed: true,
items: getPluginItems('remix', 'react'),
},
{
label: 'React Native',
collapsed: true,
items: getPluginItems('react-native', 'react'),
},
{
label: 'Expo',
collapsed: true,
items: getPluginItems('expo', 'react'),
},
],
},
{
label: 'Vue',
collapsed: true,
items: [
...getPluginItems('vue'),
{
label: 'Nuxt',
collapsed: true,
items: getPluginItems('nuxt', 'vue'),
},
],
},
{
label: 'Node.js',
collapsed: true,
items: [
...getPluginItems('node'),
{
label: 'Express',
collapsed: true,
items: getPluginItems('express', 'node'),
},
{
label: 'Nest',
collapsed: true,
items: getPluginItems('nest', 'node'),
},
],
},
{
label: 'Java',
collapsed: true,
// when we have maven this will change to not have gradle as the top docs for Java
items: getPluginItems('gradle', 'java'),
},
{
label: 'Module Federation',
collapsed: true,
items: getPluginItems('module-federation'),
},
{
label: 'ESLint',
collapsed: true,
items: [
...getPluginItems('eslint'),
{
label: 'ESLint Plugin',
collapsed: true,
items: getPluginItems('eslint-plugin', 'eslint'),
},
],
},
{
label: 'Build Tools',
collapsed: true,
items: [
{
label: 'Webpack',
collapsed: true,
items: getPluginItems('webpack', 'build-tools'),
},
{
label: 'Vite',
collapsed: true,
items: getPluginItems('vite', 'build-tools'),
},
{
label: 'Rollup',
collapsed: true,
items: getPluginItems('rollup', 'build-tools'),
},
{
label: 'ESBuild',
collapsed: true,
items: getPluginItems('esbuild', 'build-tools'),
},
{
label: 'Rspack',
collapsed: true,
items: getPluginItems('rspack', 'build-tools'),
},
{
label: 'Rsbuild',
collapsed: true,
items: getPluginItems('rsbuild', 'build-tools'),
},
],
},
{
label: 'Test Tools',
collapsed: true,
items: [
{
label: 'Cypress',
collapsed: true,
items: getPluginItems('cypress', 'test-tools'),
},
{
label: 'Jest',
collapsed: true,
items: getPluginItems('jest', 'test-tools'),
},
{
label: 'Playwright',
collapsed: true,
items: getPluginItems('playwright', 'test-tools'),
},
{
label: 'Storybook',
collapsed: true,
items: getPluginItems('storybook', 'test-tools'),
},
{
label: 'Detox',
collapsed: true,
items: getPluginItems('detox', 'test-tools'),
},
],
},
],
},
{
label: 'Enterprise',
collapsed: true,
autogenerate: { directory: 'enterprise', collapsed: true },
},
{
label: 'Extending Nx',
collapsed: true,
autogenerate: { directory: 'extending-nx', collapsed: true },
},
{
label: 'Reference',
collapsed: false,
autogenerate: { directory: 'reference', collapsed: true },
},
{
label: 'Troubleshooting',
collapsed: false,
autogenerate: { directory: 'troubleshooting', collapsed: true },
},
];
Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 334 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 78 KiB

@@ -0,0 +1,233 @@
{
"project": {
"name": "myreactapp",
"type": "app",
"data": {
"root": "apps/myreactapp",
"targets": {
"build": {
"options": {
"cwd": "apps/myreactapp",
"command": "vite build"
},
"cache": true,
"dependsOn": ["^build"],
"inputs": [
"production",
"^production",
{
"externalDependencies": ["vite"]
}
],
"outputs": ["{workspaceRoot}/dist/apps/myreactapp"],
"executor": "nx:run-commands",
"configurations": {},
"metadata": {
"technologies": ["vite"]
}
},
"serve": {
"options": {
"cwd": "apps/myreactapp",
"command": "vite serve",
"continuous": true
},
"executor": "nx:run-commands",
"configurations": {},
"metadata": {
"technologies": ["vite"]
}
},
"preview": {
"options": {
"cwd": "apps/myreactapp",
"command": "vite preview"
},
"executor": "nx:run-commands",
"configurations": {},
"metadata": {
"technologies": ["vite"]
}
},
"serve-static": {
"executor": "@nx/web:file-server",
"options": {
"buildTarget": "build",
"continuous": true
},
"configurations": {}
},
"test": {
"options": {
"cwd": "apps/myreactapp",
"command": "vitest run"
},
"cache": true,
"inputs": [
"default",
"^production",
{
"externalDependencies": ["vitest"]
}
],
"outputs": ["{workspaceRoot}/coverage/apps/myreactapp"],
"executor": "nx:run-commands",
"configurations": {},
"metadata": {
"technologies": ["vite"]
}
},
"lint": {
"cache": true,
"options": {
"cwd": "apps/myreactapp",
"command": "eslint ."
},
"inputs": [
"default",
"{workspaceRoot}/.eslintrc.json",
"{workspaceRoot}/apps/myreactapp/.eslintrc.json",
"{workspaceRoot}/tools/eslint-rules/**/*",
{
"externalDependencies": ["eslint"]
}
],
"executor": "nx:run-commands",
"configurations": {},
"metadata": {
"technologies": ["eslint"]
}
}
},
"name": "myreactapp",
"$schema": "../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/myreactapp/src",
"projectType": "application",
"tags": [],
"implicitDependencies": [],
"metadata": {
"technologies": ["react"]
}
}
},
"sourceMap": {
"root": ["apps/myreactapp/project.json", "nx/core/project-json"],
"targets": ["apps/myreactapp/project.json", "nx/core/project-json"],
"targets.build": ["apps/myreactapp/vite.config.ts", "@nx/vite/plugin"],
"targets.build.command": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.build.options": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.build.cache": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.build.dependsOn": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.build.inputs": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.build.outputs": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.build.options.cwd": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.serve": ["apps/myreactapp/vite.config.ts", "@nx/vite/plugin"],
"targets.serve.command": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.serve.options": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.serve.options.cwd": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.preview": ["apps/myreactapp/vite.config.ts", "@nx/vite/plugin"],
"targets.preview.command": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.preview.options": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.preview.options.cwd": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.serve-static": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.serve-static.executor": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.serve-static.options": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.serve-static.options.buildTarget": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.test": ["apps/myreactapp/vite.config.ts", "@nx/vite/plugin"],
"targets.test.command": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.test.options": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.test.cache": ["apps/myreactapp/vite.config.ts", "@nx/vite/plugin"],
"targets.test.inputs": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.test.outputs": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.test.options.cwd": [
"apps/myreactapp/vite.config.ts",
"@nx/vite/plugin"
],
"targets.lint": ["apps/myreactapp/project.json", "@nx/eslint/plugin"],
"targets.lint.command": [
"apps/myreactapp/project.json",
"@nx/eslint/plugin"
],
"targets.lint.cache": ["apps/myreactapp/project.json", "@nx/eslint/plugin"],
"targets.lint.options": [
"apps/myreactapp/project.json",
"@nx/eslint/plugin"
],
"targets.lint.inputs": [
"apps/myreactapp/project.json",
"@nx/eslint/plugin"
],
"targets.lint.options.cwd": [
"apps/myreactapp/project.json",
"@nx/eslint/plugin"
],
"name": ["apps/myreactapp/project.json", "nx/core/project-json"],
"$schema": ["apps/myreactapp/project.json", "nx/core/project-json"],
"sourceRoot": ["apps/myreactapp/project.json", "nx/core/project-json"],
"projectType": ["apps/myreactapp/project.json", "nx/core/project-json"],
"tags": ["apps/myreactapp/project.json", "nx/core/project-json"]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 66 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 78 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 334 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 172 KiB

@@ -0,0 +1,64 @@
{
"projects": [
{
"name": "app1",
"type": "app",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
},
{
"name": "app2",
"type": "app",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
},
{
"name": "lib",
"type": "lib",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
}
],
"taskId": "lib:test",
"taskGraphs": {
"lib:test": {
"roots": ["app1:test", "app2:test", "lib:test"],
"tasks": {
"app1:test": {
"id": "app1:test",
"target": { "project": "app1", "target": "test" },
"projectRoot": "apps/app1",
"overrides": {}
},
"app2:test": {
"id": "app2:test",
"target": { "project": "app2", "target": "test" },
"projectRoot": "apps/app2",
"overrides": {}
},
"lib:test": {
"id": "lib:test",
"target": { "project": "lib", "target": "test" },
"projectRoot": "libs/lib",
"overrides": {}
}
},
"dependencies": {
"app1:test": ["lib:test"],
"app2:test": ["lib:test"]
}
}
}
}
@@ -0,0 +1,61 @@
{
"projects": [
{
"name": "app1",
"type": "app",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
},
{
"name": "app2",
"type": "app",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
},
{
"name": "lib",
"type": "lib",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
}
],
"taskId": "lib:test",
"taskGraphs": {
"lib:test": {
"roots": ["app1:test", "app2:test", "lib:test"],
"tasks": {
"app1:test": {
"id": "app1:test",
"target": { "project": "app1", "target": "test" },
"projectRoot": "apps/app1",
"overrides": {}
},
"app2:test": {
"id": "app2:test",
"target": { "project": "app2", "target": "test" },
"projectRoot": "apps/app2",
"overrides": {}
},
"lib:test": {
"id": "lib:test",
"target": { "project": "lib", "target": "test" },
"projectRoot": "libs/lib",
"overrides": {}
}
},
"dependencies": {}
}
}
}
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 196 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,29 @@
{
"projects": [
{
"name": "lib",
"type": "lib",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
}
],
"taskId": "lib:test",
"taskGraphs": {
"lib:test": {
"roots": ["lib:test"],
"tasks": {
"lib:test": {
"id": "lib:test",
"target": { "project": "lib", "target": "test" },
"projectRoot": "libs/lib",
"overrides": {}
}
},
"dependencies": {}
}
}
}
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 112 KiB

@@ -0,0 +1,47 @@
{
"projects": [
{
"name": "app1",
"type": "app",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
},
{
"name": "app2",
"type": "app",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
},
{
"name": "lib",
"type": "lib",
"data": {
"tags": [],
"targets": {
"test": {}
}
}
}
],
"dependencies": {
"app1": [{ "source": "app1", "target": "lib", "type": "static" }],
"app2": [{ "source": "app2", "target": "lib", "type": "static" }],
"lib": []
},
"workspaceLayout": {
"appsDir": "apps",
"libsDir": "libs"
},
"affectedProjectIds": [],
"focus": null,
"groupByFolder": false,
"exclude": []
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Some files were not shown because too many files have changed in this diff Show More