Compare commits

...

137 Commits

Author SHA1 Message Date
FrozenPandaz 65944f6f03 chore(repo): test cache 2024-11-06 14:27:48 -05:00
Emily Xiong 906cc1aceb fix(core): fix cannot read properties of undefined (reading 'split') (#28761)
<!-- 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 https://github.com/nrwl/nx/issues/27736 and
https://github.com/nrwl/nx/issues/27736
2024-11-06 13:45:42 -05:00
Jonathan Cammisuli b14d5c5d5b fix(core): revert archive file creation changes (#28817)
<!-- 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 #
2024-11-06 10:50:15 -05:00
Thu Vo bd40a56e19 docs(release): version prefix dependents (#28729) 2024-11-06 14:57:25 +04:00
Zachary DeRose 51f47f0329 docs(misc): nx 20 video added (#28600)
<!-- 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 #
2024-11-06 02:02:39 +00:00
Colum Ferry b69ef46dcd fix(rspack): remove unnecessary required properties in schema validation (#28796)
<!-- 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 `@nx/rspack:rspack` executor had listed other properties as required
in the schema that could have been set by the rspack config.



## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Make those properties optional and add validation after config is
resolved

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

Fixes #
2024-11-05 17:47:49 +00:00
Colum Ferry be7bfa4820 fix(nuxt): use loadNuxtConfig to load nuxt config for plugin (#28795)
<!-- 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 switched to using `loadConfigFile` from `@nx/devkit` to load Nuxt
Config files when plugins were not isolated.
However, they are now, so we can use `loadNuxtConfig` again.

The effect of using `loadConfigFile` paired with Nuxt's auto-imports
resulted in inconsistent failures.



## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Use `loadNuxtConfig` when `NX_ISOLATE_PLUGINS=true`


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

Fixes #28506
Fixes #28374
2024-11-05 12:27:09 -05:00
Colum Ferry 7e3f256756 fix(rspack): move main validation to implementation (#28794)
<!-- 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 currently have validation for the `main` property in the `executor`
schema, however, this value could be defined in the `rspack.config`
file.
This can cause an inaccurate schema validation error

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
After loading the config file and applying the executor options, run
validation over the config.

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

Fixes #
2024-11-05 12:22:49 -05:00
Juri 75a73ed0e7 feat(nx-dev): add customer case studies 2024-11-05 13:52:16 +01:00
Isaac Mann 5ddcb565d9 docs(core): add azure and gcs powerpack plugins (#28668)
- Adds powerpack-gcs-cache plugin docs
- Adds powerpack-azure-cache-plugin docs
- Removes a duplicate rspack entry on the /nx-api page

---------

Co-authored-by: Jonathan Cammisuli <jon@cammisuli.ca>
2024-11-05 07:48:24 -05:00
James Garbutt e2f5eaabb5 cleanup(webpack): migrate to picocolors (#28315) 2024-11-05 13:13:54 +04:00
James Garbutt 5d21f215a4 cleanup(core): use built in function to strip control chars (#28778) 2024-11-05 13:13:01 +04:00
Jonathan Cammisuli b925f8ccfa fix(core): ensure that setWorkspaceContext is run only on main nx packages (#28706)
<!-- 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 postinstall with Nx, we create a files archive file. When
there are multiple versions of nx installed, the post install would run
for all versions. This causes issues where one version might overwrite
the archive files while another version is writing to the same location.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
The `setupWorkspaceContext` is now only ran when we detect that it is
the main nx package. This also makes the creation of the archive file
more atomic so that we dont overwrite files while its being written by
other processes

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

Fixes #
2024-11-04 21:23:20 -05:00
Dmitry Zakharov bb878aa033 feat(linter): add support eslint 9 --quiet param (#28743)
closes #28291

<!-- 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 -->
eslint 9 support --quiet param for not run warn rules, but nx not pass
that param directly
## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
nx executor should pass --quiet directly to eslint
## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #28291
2024-11-04 16:15:59 -05:00
Phillip Barta dbabfa7d2c cleanup(core): update @yarnpkg/parsers to a stable version (#27666) 2024-11-05 00:43:15 +04:00
Jack Hsu 8e4f9f55b7 chore(repo): enable DB and verbose logging for module federation tests (#28792)
This can help us debug issues that come up during these tests.

<!-- 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 #
2024-11-04 15:08:15 -05:00
Mathieu Guilbault c08d995290 docs(core): fix grammar (#28697)
fix grammar

---------

Co-authored-by: Isaac Mann <isaacplmann@gmail.com>
Co-authored-by: Isaac Mann <isaacplmann@users.noreply.github.com>
2024-11-04 19:55:47 +00:00
Isaac Mann 052a62685f chore(nx-dev): disable nx-dev-e2e (#28789)
Disable the e2e tests for nx-dev
2024-11-04 14:00:01 -05:00
Emily Xiong 277c58fbcc feat(expo): use createNodesV2 (#28005)
<!-- 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 #
2024-11-04 13:56:42 -05:00
Colum Ferry 735300c63e feat(rspack): make target property optional (#28785)
<!-- 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 `target` property is currently required by the `@nx/rspack:rspack`
executor, but is not by the `@nx/webpack:webpack` executor.
This can make migrating between the two a little more difficult.


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Target should be handled by Nx's `withWeb` helper or set intentionally
by the user in their `rspack.config` file.

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

Fixes #
2024-11-04 17:28:00 +00:00
Emily Xiong 2b2866ac89 fix(core): fix create workspace for react native (#28763)
<!-- 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 https://github.com/nrwl/nx/issues/26805
2024-11-04 11:47:36 -05:00
Phillip Barta 38448da34f feat(bundling): add createNodesV2 for rollup plugin (#28090)
<!-- 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 -->
There is no implementation for `createNodesV2`.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
There should be an implementation for `createNodesV2`.

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

Fixes #
2024-11-04 10:07:49 -05:00
Egor Kuzin 7ba7f3e798 fix(vite): tsconfig paths plugin should resolve file with dot in the name (#28701)
closed #28615

<!-- 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 #28615
2024-11-04 10:00:02 -05:00
Armin Gerina 39b0a6c959 chore(nextjs): bump Next.js version to 14.2.16 (#28782)
<!-- 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 Next.js version in @nx/next is set to 14.0.3, which lacks
the latest features and improvements available in the 14.2.16 release.
Additionally, the current version has known vulnerabilities:


[GHSA-gp8f-8m3g-qvj9](https://github.com/advisories/GHSA-gp8f-8m3g-qvj9):
Cache Poisoning vulnerability in Next.js (versions before 14.1.0)

[GHSA-g77x-44xx-532m](https://github.com/advisories/GHSA-g77x-44xx-532m):
Denial of Service (DoS) condition in Next.js image optimization
(versions before 14.2.0)

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
With this PR, the Next.js version in @nx/next is updated to 14.2.16,
addressing the listed vulnerabilities and bringing in the latest
features and bug fixes.

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

Fixes #
2024-11-04 09:50:18 -05:00
Colum Ferry 48db8ddc04 chore(react): separate module federation tests into separate test files for better distribution (#28765)
<!-- 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 -->
Module Federation tests take ~21-25mins

![image](https://github.com/user-attachments/assets/771f6314-2fba-4340-9617-d7fb0dd40c93)


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Module Federation tests take ~11-13mins

![image](https://github.com/user-attachments/assets/9a720178-5f0c-4b60-a3af-53b3f0db1111)


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

Fixes #
2024-11-04 08:23:13 -05:00
Juri eea38d760a docs(core): update pinned posts 2024-11-04 13:29:36 +01:00
Rares Matei ba762101ad docs(nx-cloud): fix formatting and wording (#28749)
<!-- 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 #
2024-11-04 12:03:20 +00:00
Isaac Mann 796862d9f4 docs(core): add martin hochel as a champion (#28755)
Adds @Hotell as an Nx Champion
2024-11-04 06:13:58 -05:00
Benjamin Cabanes c290b37cbd docs(nx-dev): add nx powerpack enterprise trial (#28712) 2024-11-01 17:43:37 -04:00
Benjamin Cabanes 856c8bcb72 docs(nx-dev): update nx powerpack title meta (#28759) 2024-11-01 17:43:20 -04:00
Benjamin Cabanes af22a41d6a docs(nx-dev): update give a star button styles (#28760) 2024-11-01 17:43:03 -04:00
Benjamin Cabanes a89e34cfca docs(nx-dev): add star github button on intro (#28758) 2024-11-01 17:42:44 -04:00
Isaac Mann b9c1f0b58e fix(testing): install playwright with-deps (#28738)
Uses the `--with-deps` flag when running `playwright install` in the
`ci-workflow` generator
2024-11-01 15:52:24 -04:00
Colum Ferry 1777d29ccb chore(react): cleanup react e2e test name (#28754)
<!-- 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 #
2024-11-01 19:20:27 +00:00
Nicholas Cunningham 0706c7f68c fix(nextjs): Formatting for pages (#28734)
<!-- 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 #28561
2024-11-01 13:04:15 -06:00
Emily Xiong 9a88ea8906 fix(expo): allow yarn 4 to install for build local (#28603)
<!-- 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 https://github.com/nrwl/nx/issues/28121
2024-11-01 14:50:47 -04:00
Emily Xiong c43c179432 feat(core): upgrade semver to 7.6.3 (#28716)
<!-- 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 https://github.com/nrwl/nx/issues/28451
2024-11-01 14:50:33 -04:00
Jack Hsu 0c852e60de chore(repo): update to nx 20.0.7 (#28746)
<!-- 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 #
2024-11-01 14:12:51 -04:00
Jack Hsu 8e460f16d1 fix(webpack): update stylus version to fix security issue (#28646)
<!-- 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 #28541
2024-11-01 13:00:26 -04:00
Colum Ferry 4f4b54609b fix(react): ensure module federation template files are indented correctly (#28753)
<!-- 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 #
2024-11-01 16:49:37 +00:00
Jack Hsu 80ef3ee544 chore(repo): allow NX_NATIVE_LOGGING to be passed to commands within e2e tests (#28752)
…e2e tests

<!-- 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 #
2024-11-01 12:28:16 -04:00
Philip Fulcher a51f02f517 docs(nx-dev): fixes for sports retailer post (#28739) 2024-11-01 10:27:46 -06:00
Colum Ferry 0f25b3c42e feat(module-federation): use module-federation runtime for dynamic federation (#28704)
<!-- 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 currently have hombrewed support for Dynamic Module Federation.
However, Module Federation 2.0 comes with more powerful helpers to
handle dynamic federation.


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
For new host projects using dynamic federation, use the Module
Federation Runtime.
For existing hosts using Nx's dynamic federation, continue to use it
when adding new remotes to it.
Deprecate Nx's dynamic federation helpers with intended removal in Nx 22

### Example Screenshot of Deprecation Message
<img width="810" alt="image"
src="https://github.com/user-attachments/assets/6c6a9504-6d89-497b-9259-9272b3f47276">


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

Fixes #
2024-11-01 16:01:33 +00:00
Colum Ferry ab8d77e719 fix(rspack): ensure NX_PUBLIC env vars are available to applications #28720 (#28751)
<!-- 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 -->
With Webpack, we setup DefinePlugin to define `NX_PUBLIC` env vars.
This was not replicated in Rspack


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Ensure `NX_PUBLIC` env vars are included in the DefinePlugin

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

Fixes #28720
2024-11-01 11:59:56 -04:00
Jonathan Cammisuli 276e799d40 chore(core): enable db logging on ci and agents (#28744) 2024-11-01 10:08:54 -04:00
Emily Xiong 9adb9e00be fix(core): fix dependency with multiple dependent packages (#28669)
<!-- 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 introduce a feature to allow circular project dependencies to
execute tasks in pr https://github.com/nrwl/nx/pull/28227/files
- for this feature, we introduce the concept of dummy task as a
temporary placeholder so we can still generate a task graph even if
dependencies contain circular dependencies
- however, it does not handle a task graph of multiple dummy task deps.
for example:
lib1 -> lib2 -> lib3 -> lib4
if we got task graph like:
lib1:build -> lib2:dummy
lib2:dummy -> lib3:dummy
lib3:dummy -> lib4:rebuild
currently, it does not create a dependency between
lib1:build->lib4:prebuild

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
it should link the dependency when it contains multiple level of
depending on dummy tasks

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

Fixes https://github.com/nrwl/nx/issues/28599 and
https://github.com/nrwl/nx/issues/28380
2024-10-31 23:33:04 -04:00
Isaac Mann d4f4dac2eb docs(core): remove on-premise docs (#28730)
Removes the on-premise docs in favor single tenant and the
nrwl/nx-cloud-helm repo
2024-10-31 16:42:56 -04:00
Isaac Mann d960ddd40f fix(nx-dev): breadcrumbs extra text with query param (#28732)
Breadcrumb component was incorrectly showing extra text when the url has
a query parameter.
2024-10-31 14:55:43 -04:00
Jack Hsu 0ad7c6b5b4 fix(nextjs): do not generate spec files if unitTestRunner is not set programmatically (#28733)
This PR fixes an issue where `create-nx-workspace` with Next.js preset
generates with Jest spec files, but does not install
`@testing-library/react` correctly due to not checking the normalized
schema 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 #
2024-10-31 14:51:21 -04:00
Nicholas Cunningham b89a62e89a fix(nextjs): Fix json spread typo (#28728)
closes: #28703

<!-- 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 #
2024-10-31 12:34:06 -06:00
Leosvel Pérez Espinosa 6af298d0a9 feat(testing): add support for the ts solution config setup to the cypress plugin (#28637)
<!-- 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 #
2024-10-31 18:29:53 +01:00
Nicholas Cunningham c2e31127d9 feat(core): Update plugin generators so that they are formatted by default (#28593) 2024-10-31 12:14:21 -04:00
Jack Hsu 178d93d9c0 feat(testing): add disableJestRuntime option to @nx/jest/plugin to speed up target inference (#28522)
This PR adds a new `disableJestRuntime` option to `@nx/jest/plugin`. By
setting this to `true`, the inference plugin will not use `jest-config`
and `jest-runtime` to retrieve `outputs`, nor matching spec files when
`ciTargetName` is used. Instead, we'll use our own config loader and
glob/matcher to get both values for the inferred targets.

This speeds up computation quite a bit. With a large monorepo (800
projects, 75K files), the computation goes from 2m 41s to 35s, or ~78%
time reduction.

NOTE: This has no effect on existing projects and needs to be opted
into.


<!-- 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 #
2024-10-31 11:48:43 -04:00
Jonathan Cammisuli 4014662986 fix(core): fix powerpack license information grammar (#28725) 2024-10-31 10:26:18 -04:00
MaxKless 93b9b71e31 docs(core): remove mention of node_modules/.cache/nx from yarn pnp docs (#28722)
Co-authored-by: Isaac Mann <isaacplmann@users.noreply.github.com>
2024-10-31 14:42:24 +01:00
Jack Hsu e22d65eeea feat(testing): split atomized outputs for Playwright and Cypress CI targets (#28682)
This PR updates `@nx/playwright/plugin` to create non-conflicting
outputs for atomized tasks.



<!-- 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
Outputs from `outputDir` and reporters are the same for each atomized
task, which results in missing outputs.

## Expected Behavior
All outputs should be captured and cached correctly.

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

Fixes #
2024-10-31 09:40:29 -04:00
Rares Matei af33660be2 docs(nx-cloud): add release notes for enterprise version (#28698)
<!-- 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: Isaac Mann <isaacplmann@users.noreply.github.com>
2024-10-31 09:23:51 +00:00
Rares Matei e3773a5a63 docs(nx-cloud): update custom github app instructions (#28708)
<!-- 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: Isaac Mann <isaacplmann@users.noreply.github.com>
2024-10-31 09:15:45 +00:00
Nicholas Cunningham ce05a98476 fix(nextjs): Add deprecation message for svgr (#28705)
<!-- 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, if you are using Next.js 15 have SVGR enabled via `WithNx`
and are using turbopack. You could potentially have issues loading your
svg. This happens because of how webpack imports svg and not having an
additional configuration for turbopack (currently it is under the
experimental option).

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Moving forward, we can call this out and deprecate the option to be
removed in Nx 21. As such should you need to use SVGs it is recommended
to do so manually. Something similar to [this
comment](https://github.com/vercel/turborepo/issues/4832#issuecomment-1751407444).

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

Fixes #
2024-10-30 18:52:18 -06:00
Nicholas Cunningham faf448379d fix(nextjs): Remove deprecated export executor (#28702)
<!-- 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 #
2024-10-30 18:10:47 -06:00
Nicholas Cunningham 51bed0e456 feat(nextjs): add support for typescript Next.js config file (#28709)
<!-- 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 #28572
2024-10-30 16:15:48 -04:00
Jonathan Cammisuli 63b745e8c3 fix(core): retry more db operations (#28667) 2024-10-30 11:45:34 -04:00
Zachary DeRose 125675079c docs(misc): adding nx import blog post (#28686)
<!-- 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 #
2024-10-30 11:16:36 -04:00
Colum Ferry c65f344bed fix(angular): use vitest generator instead of vite config generator (#28696)
<!-- 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 -->
Using the viteConfigGenerator leads to build and serve targets being
overriden


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Use the `vitestGenerator` to only add the test target

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

Fixes #
2024-10-30 15:23:54 +01:00
Colum Ferry 9e598a6c1a fix(vite): add correct gitignore pattern for vite timestamp files #28685 (#28693)
<!-- 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 pattern added for .gitignore is incorrect


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

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

Fixes #28685
2024-10-30 13:38:06 +00:00
Leosvel Pérez Espinosa 1e0423bcda fix(js): provide absolute paths to hashFile function in @nx/js/typescript plugin (#28690)
<!-- 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 #
2024-10-30 08:29:41 -04:00
Younes Jaaidi dbbc3fcae6 fix(vite): include vite mts config files (#28691)
Add `vite.config.mts` and `vitest.config.mts` to `vitest.workspace.ts`
and `tsconfig` files.

- Angular generator creates vite.config.mts files.
- Users might also use mts files.

<!-- 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 -->

`vite.config.mts` and `vitest.config.mts` were ignored in
`vitest.workspace.ts`.
They were not included in the tsconfig files neither.

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

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2024-10-30 11:40:16 +00:00
Colum Ferry d8d6d13c9e fix(linter): ensure .cjs config file is handled correctly for generators #28214 (#28672)
<!-- 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 the workspace has `eslint.config.cjs` at the root, generation of
new lint projects currently does not check for it correctly


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Ensure utils continue to work as expected when `eslint.config.cjs` is
detected at the workspaceRoot

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

Fixes #28214
2024-10-30 11:39:58 +01:00
Juri 62f58ebfee docs(core): update import page with new vid link 2024-10-29 23:18:13 +01:00
Juri 46769b3c18 feat(nx-dev): linkable resources page 2024-10-29 22:05:04 +01:00
Jonathan Cammisuli 0aa79c82ec fix(core): fix checks for wasm in db operations (#28676) 2024-10-29 16:10:14 -04:00
Younes Jaaidi 9fe8274367 feat(angular): add vitest option to angular (#27311)
- This adds `vitest` option to `unitTestRunner` for Angular generators.
- This **does not** add vitest option to `create-nx-workspace` but I
think we should provide this as an option in the future. Please let me
know if you wantme to add this here or as a future feature.

---------

Co-authored-by: Colum Ferry <cferry09@gmail.com>
2024-10-29 14:31:48 -04:00
Emily Xiong c0c7ad7efc fix(core): not install cypress when e2e is playwright for react monorepo preset (#28642)
<!-- 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

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

Fixes #

Co-authored-by: Benjamin Cabanes <3447705+bcabanes@users.noreply.github.com>
2024-10-29 13:46:19 -04:00
Colum Ferry 5a3fd0e1cf fix(module-federation): add comment clarifying default export in config file (#28675)
<!-- 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 #
2024-10-29 17:14:20 +00:00
Jack Hsu aec53a0406 feat(misc): remove handling of @nrwl scope (#28589)
This PR removes logic where we handle both `@nx/` and `@nrwl/` scope.
The latter scope has stopped being published in v20, and are no longer
relevant.

- Cleans up e2e
- Removes references to `@nrwl/` scope in our generators and executors
- Removes `@nrwl/` from `nx/package.json` `packageGroup`
- Cleans up documentation quality script
2024-10-29 11:04:44 -04:00
Tobias Engelhardt fb9c5ede84 fix(core): update http-proxy-middleware (#28607)
<!-- 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 #28577
2024-10-29 08:40:12 -04:00
Colum Ferry af9d980f34 feat(remix): generate remix vite application (#28555)
<!-- 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 currently still generate Remix Classic applications


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
We should generate Remix Vite applications

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

Fixes #
2024-10-29 08:38:13 -04:00
Lorenzo a9dbc71e9d fix: add required minimizer setting to the generated Nest rspack conf… (#28629)
## Current Behavior
When using Nest.js in combination with [decorator
metadata](https://docs.nestjs.com/fundamentals/execution-context#reflection-and-metadata),
the class names and handlers become mangled/compressed causing them to
lose the reference to the correct class/handler name.

## Expected Behavior
The decorator metadata works as intended.

## Approach
This PR implements a custom instance of the
`SwcJsMinimizerRspackPlugin`, where the setting is modified to keep
original class and function names from the `compress` and `mangle`
options.

## Related
I've opened a related PR on the rspack-examples repository:
https://github.com/rspack-contrib/rspack-examples/pull/158
2024-10-29 12:25:19 +00:00
Leosvel Pérez Espinosa 4b70d1b206 feat(testing): add support for the ts solution config setup to the playwright plugin (#28636)
<!-- 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 #
2024-10-28 14:49:04 -04:00
Leosvel Pérez Espinosa f357b4ed53 feat(js): update the setup-build generator to support the new ts setup (#28446)
Update the `@nx/js:setup-build` and the generators it depends on to
support the new TS setup with project references.

<!-- 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 #
2024-10-28 14:34:57 -04:00
Isaac Mann 1fec637514 docs(core): update docs/shared/getting-started/intro.md 2024-10-28 16:21:42 +01:00
Juri 8b1a041f92 docs(core): link nx import on entry page 2024-10-28 16:21:42 +01:00
Colum Ferry ce6f943371 fix(rspack): set NODE_ENV to production correctly #28584 (#28662)
<!-- 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 switch from `DefinPlugin` to `EnvironmentPlugin` did not account for
`production`.


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Ensure `production` is accounted for and set as expected

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

Fixes #28584
2024-10-28 13:44:13 +00:00
Colum Ferry 0857492c93 fix(vite): set NODE_ENV to production correctly #28584 (#28663)
<!-- 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 -->
After the switch to use `resolveConfig` we failed to set the value for
`NODE_ENV` which is an argument to the function.
This means it always defaulted to development.


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Ensure `NODE_ENV` is set as expected.

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

Fixes #28584
2024-10-28 13:43:53 +00:00
Colum Ferry 2936bdcb3d fix(rspack): ensure baseHref is set when provided #28455 (#28660)
<!-- 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 `@nx/rspack:rspack` executor supports `baseHref` as an option, but
we do not set it in the `rspack.HtmlRspackPlugin`.


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Ensure if `baseHref` is set, we pass it to `rspack.HtmlRspackPlugin`

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

Fixes #28455
2024-10-28 13:43:43 +00:00
Miroslav Jonaš 0d2a696443 chore(repo): update node version on nightly (#28622)
<!-- 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 #
2024-10-28 13:32:28 +01:00
Philip Fulcher f84b6e5c97 docs(nx-dev): add sports retailer blog post (#28619) 2024-10-25 15:54:37 -06:00
Benjamin Cabanes b0aebc5f9a docs(nx-dev): fix powerpack typos (#28647) 2024-10-25 17:35:10 -04:00
Isaac Mann 3da438d270 chore(core): add instructions to use e2e-ci with dte (#28621)
Use e2e in ci-workflow generator with instructions to use e2e-ci if Nx
Agents are turned on
2024-10-25 15:08:01 -04:00
Emily Xiong 013aaee85f fix(storybook): fix externalDependencies undefined (#28641)
<!-- 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 #
2024-10-25 14:24:47 -04:00
Benjamin Cabanes 96f36d3139 docs(nx-dev): add star github button & cleanup (#28623) 2024-10-25 11:51:46 -04:00
Jonathan Cammisuli ffb1b29208 chore(core): add cache implementations (#28595)
<!-- 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 #
2024-10-25 11:25:20 -04:00
Colum Ferry 37ab3cdf65 fix(react): selecting tailwind should import correct style file extension (#28630)
<!-- 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 we use `<%= style %>` to set the style file extension in the
`main.tsx` template file.
This is incorrect when `style=tailwind`


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
If `options.style=tailwind` update the `templateVariables` that are used
to set `style=css`


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

Fixes #
2024-10-25 15:12:15 +01:00
Colum Ferry edc207d1c8 docs(module-federation): remote schema should show updated regex for names #28558 (#28610)
<!-- 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 -->
Docs show incorrect regex pattern for valid MF remote names

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Docs show correct regex pattern for valid MF remote names

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

Fixes #28558
2024-10-25 15:12:07 +01:00
Jack Hsu 4e81fa2d70 fix(core): skip eslint custom hasher when hashing tasks during running commands (#28616)
This change speeds up Nx Cloud runs by not orchestrating cache hits for
lint tasks.

<!-- 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 #
2024-10-25 08:30:22 -04:00
Leosvel Pérez Espinosa fe7d7ac48e fix(js): include referenced internal config files in plugin cache hash (#28536) 2024-10-25 15:09:51 +04:00
Leosvel Pérez Espinosa 890ef830b3 fix(js): set the tsBuildInfoFile as output when it's not contained in the outDir (#28538) 2024-10-25 14:01:03 +04:00
Leosvel Pérez Espinosa fae8474939 fix(js): fix resolution of extended tsconfig files in plugin (#28535) 2024-10-25 13:59:11 +04:00
Benjamin Cabanes ff630a3e09 docs(nx-dev): update free powerpack link (#28523)
Co-authored-by: Isaac Mann <isaacplmann@users.noreply.github.com>
2024-10-25 09:52:08 +02:00
Emily Xiong 1218502c84 fix(js): allow custom listenAddress for verdaccio (#28498)
<!-- 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
-->
replace localhost with options. listenAddress

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

Fixes https://github.com/nrwl/nx/issues/28314
2024-10-24 12:51:10 -04:00
Juri 84aba19bec feat(nx-dev): add videos to CI docs 2024-10-24 17:29:06 +02:00
Emily Xiong 7839c804a0 fix(storybook): fix yarn storybook upgrade 8 (#28605)
<!-- 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 https://github.com/nrwl/nx/issues/28301
2024-10-24 08:27:29 +01:00
Emily Xiong 0bea5b28e6 fix(core): createTaskGraph should accept extraTargetDependencies (#28542)
<!-- 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 is a follow up to https://github.com/nrwl/nx/pull/26033.
for function `createTaskGraph`, it should not accept
`defaultDependencyConfigs`, it should be `extraTargetDependencies`.

## Current Behavior
<!-- This is the behavior we have today -->
this caused an issue where the task graph shows that 2 tasks depend on
each other; however, when actually running, it does not.

## 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 https://github.com/nrwl/nx/issues/26929
2024-10-23 21:25:02 -04:00
Jonathan Cammisuli 7f92efad79 fix(core): only check if files are in sync if there are no records in the db (#28597)
<!-- 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 #
2024-10-23 17:14:27 -04:00
Philip Fulcher b6a3414f95 chore(nx-dev): remove duplicate blog post (#28570)
<!-- 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 -->
Personal access token blog post appears twice

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Personal access token blog post appears once

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

Fixes #
2024-10-23 14:48:44 -06:00
Jonathan Cammisuli d3df76f2f4 fix(core): handle concurrent db connections better (#28544) 2024-10-23 23:33:33 +04:00
Jack Hsu 018543c785 cleanup(misc): remove unused migrations (#28591)
This PR removes migrations that are unused in our packages.

Other changes:

- Update the `remove-migrations` generator to remove all files inside
the migration directory, rather than just the implementation, spec file,
and `__snapshots__` directory. There were some helpers that were not
removed due to this problem.
- Add a check to the `assertValidMigrationPaths` test util (used in
`migrations.spec.ts` test files) to ensure that all paths inside
`./src/migrations` are included in `migrations.json` file. There were a
few migrations missing in the `@nx/expo` package, and we never run them
nor cleaned them up.


**Note:** This has no effect on users and is purely a clean-up.

## 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 #
2024-10-23 14:29:56 -04:00
Isaac Mann daa4e19a07 chore(core): task distribution defaults to off (#28587)
- Updates workspace:ci-workflow generator to disable task distribution
by default
- Updates gradle:ci-workflow generator to disable task distribution by
default
- Updates all tutorials to reflect the new generator and adds a line
explaining how to enable task distribution
2024-10-23 13:15:00 -04:00
James Henry 29a556dc78 chore(repo): bump nx to latest v20 and graph 0.1.0 (#28581) 2024-10-23 19:48:11 +04:00
Juri ea01d39291 fix(nx-dev): powerpack content update 2024-10-23 16:21:48 +02:00
Isaac Mann 2d3eea3dcd docs(core): single tenant section (#28548)
- Remove on-premise Nx Cloud docs from navigation
- Expand single tenant Nx Cloud documentation
2024-10-23 10:20:11 -04:00
MaxKless d27f8bc076 fix(core): make sure yarn berry correctly resolves latest version during nx add (#28580) 2024-10-23 18:07:54 +04:00
Colum Ferry 36556f6f23 feat(rspack): add convert-webpack generator (#28167)
<!-- 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 do not have an automated method for people to switch to rspack from
webpack applications


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
We should have a generator that will convert webpack application
projects to use rspack

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

Fixes #
2024-10-23 09:54:49 +01:00
Benjamin Cabanes 12cbfc35da docs(nx-dev): update powerpack features description (#28566) 2024-10-22 20:15:24 -04:00
Jack Hsu a354857d47 feat(react): update eslint plugins to be compat with eslint v9 (#28559)
<!-- 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 #28191
2024-10-22 19:59:14 -04:00
Isaac Mann e345bc7b11 docs(core): ts project references in npm tutorial (#28504)
Update the npm workspaces tutorial to use typescript project references
2024-10-22 15:52:13 -04:00
Isaac Mann ce7f1b5e4a docs(core): move powerpack features to enterprise section (#28528)
- Makes a new Enterprise section under the Nx section of the docs
- Moves Powerpack docs into the Enterprise section
2024-10-22 14:53:08 -04:00
Isaac Mann e1c49d9178 docs(core): remove reference to remote cache API (#28505)
Remove outdated reference to remote cache API
2024-10-22 14:46:10 -04:00
James Henry c396c1c5ca chore(repo): bump dependencies (#28562) 2024-10-22 20:14:07 +04:00
Emily Xiong 53b33b1f0e fix(core): not to cache entire workspace root (#28552)
<!-- 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 directory is workspace root, when walking through the directory, it
will include the directory root path, then will strip prefix, it will be
empty string. it will return "*" as a found path.
- When copying "*", it will run into a recursive loop because it will
try to copy the walkspace root with node_modules into
node_modules/.cache/nx

## 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 https://github.com/nrwl/nx/issues/28393
2024-10-22 10:15:16 -04:00
Juri e57b85152c fix(nx-dev): cleanup 2024-10-21 17:30:52 +02:00
Mike Hartington b7578f1bdc docs(core): update release blog post (#28526)
<!-- 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 #
2024-10-21 10:39:50 -04:00
Isaac Mann 1876b83c3f chore(nx-dev): ignore anchors on changelog page (#28540)
Do not check anchor links pointing to the changelog page
2024-10-21 10:05:31 -04:00
Phillip Barta 25e3bdde9c fix(rspack): removed webpack-sources import (#28447)
removed the webpack-sources import and replaced it with the sources
export from rspack

<!-- 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/rspack` uses `webpack-sources` which is not listed as dependency.
The issue originated in PR #27676 but i decided to split it out. I also
opened #28225 to add the dependency-check rule for rspack.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
`@nx/rspack` uses the reexport from `@rspack/core` 

https://rspack.dev/api/javascript-api/#sources-object

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

#28225 #27676
2024-10-21 12:33:33 +01:00
Nicholas Cunningham 19e765f89a feat(nextjs): update createNodes to createNodesV2 and add deprecation message (#28527)
<!-- 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, we are using `createNodes` API which should be deprecated in
favour of `createNodesV2`.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
We should be using `createNodesV2` instead of `createNodes`.
## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2024-10-18 13:20:21 -06:00
Nicholas Cunningham 8b5ee3624b docs(nx-dev): Remove unused environment variables (#28521) 2024-10-18 11:09:25 -06:00
James Henry 59bb1c6b89 feat(core): allow disabling of tsconfig path sorting in format:write and formatFiles() (#28517) 2024-10-18 20:12:44 +04:00
Colum Ferry 768e59e144 fix(module-federation): normalize hypen names for runtime library control plugin #28497 (#28512)
<!-- 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 part of the work to normalize `-` in MF project names for Federation,
setting the NX_MF_DEV_REMOTES env var was missed.
This causes issues with the RuntimeLibraryControlPlugin


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Remote names should be normalized correctly

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

Fixes #28497
2024-10-18 08:18:47 -04:00
Colum Ferry 112c9f63ce fix(react): ensure rspack react app is added to exclude on rspack plugin #28464 (#28515)
<!-- 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 you create a react rspack app when there is a `@nx/rspack/plugin`
definition in the nx.json, it causes the project graph to fail to create
nodes.


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Ensure the projects created via @nx/react:app --bundler=rspack are added
to exclude array if the plugin exists

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

Fixes #28464
2024-10-18 08:18:25 -04:00
Benjamin Cabanes f971c1b63a docs(nx-dev): update blog post (#28500) 2024-10-17 21:21:15 -04:00
Alexander Janssen 9b528cc893 fix(expo): check if option is not undefined closes #28488 (#28489)
## Current Behavior
NX Cannot read properties of undefined (reading 'trim')

TypeError: Cannot read properties of undefined (reading 'trim')
at
/path/node_modules/@expo/package-manager/build/node/NpmPackageManager.js:80:22
at Array.map ()
at NpmPackageManager.parsePackageSpecs
(/path/node_modules/@expo/package-manager/build/node/NpmPackageManager.js:79:14)
at NpmPackageManager.addAsync
(/path/node_modules/@expo/package-manager/build/node/NpmPackageManager.js:34:56)
at installPackagesAsync
(/path/node_modules/@expo/cli/build/src/install/installAsync.js:178:30)
at process.processTicksAndRejections
(node:internal/process/task_queues:105:5)
at async installAndUpdatePackageJson
(/path/node_modules/@nx/expo/src/executors/install/install.impl.js:33:5)
at async buildExecutor
(/path/node_modules/@nx/expo/src/executors/update/update.impl.js:13:9)
at async getLastValueFromAsyncIterableIterator
(/path/node_modules/nx/src/utils/async-iterator.js:15:19)
at async iteratorToProcessStatusCode
(/path/node_modules/nx/src/command-line/run/run.js:39:25)

## Expected Behavior
› Installing 1 SDK 51.0.0 compatible native module using npm
npm install

## Related Issue(s)
Fixes #28488
2024-10-17 16:00:49 -06:00
Nicholas Cunningham 1806624891 fix(core): neverConnectToCloud should disable connecting to nxCloud (#28501)
closed #28482, #28486

<!-- 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, `neverConnectToCloud` is set to `true`, there are still attempts
made to connect to NxCloud.
## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
if, `neverConnectToCloud` is set to `true`, we should not attempt to
connect to NxCloud.

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

Fixes #
2024-10-17 16:53:01 -04:00
MaxKless 499300fd76 fix(core): repair SIGINT signals on windows (#28496)
using `windowsHide: true` is causing an issue on windows: Ctrl + C
handling isn't enabled and no `SIGINT` is sent to the child process when
users exit the process. See https://github.com/nodejs/node/issues/29837
and https://github.com/nodejs/node-v0.x-archive/issues/5054 for
reference. This will cause leftover processes throughout nx.

This PR sets `windowsHide: false` everywhere except for the plugin
workers and some short-lived utils. They `spawn` child processes but
have explicit handling to make sure they kill themselves when the parent
process dies, so the missing Ctrl + C handling doesn't cause issues.

We will follow up to make sure any other culprits that still cause
windows popups (especially when used through Nx Console) are handled.
Leaving no leftover processes running is more important for now, though.

Keep in mind the underlying tooling (like vite) might have some windows
popups themselves that Nx will inherit.
2024-10-17 15:03:37 -04:00
Igor Loskutov 42da5421af fix(expo): pnpm+workspace build (#28209)
## Current Behavior

build executors for expo crash when package manager pnpm and workspaces
are used

## Expected Behavior

no crashies

## Related Issue(s)

https://github.com/nrwl/nx/issues/28208

Fixes #28208

## FAQ

- why not handle the `undefined` by the calling code instead

The less the calling code knows about inner workings, the better: in
this case, doing this would add the implicit dependency on "pnpm and
workspaces" to the calling code

- but it's an empty function, my performance

We call it once per user interaction.

- but still, it's an empty function

We return an `empty array` when there are no elements; we don't return
`undefined` when the array is empty and `array` when array is non-empty.
Hopefully so.

- but,

The doc also says that this function returns a function.
2024-10-17 13:39:29 -04:00
Colum Ferry f9f3de06d0 fix(vite): use resolveConfig instead of loadConfigFromFile to ensure node env set #27627 (#28444)
<!-- 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 -->
In the Vite Build Executor, we're using `loadConfigFromFile` from Vite
to get the config options.
The issue with this is that vite will not attempt to set `NODE_ENV`
which may be required by both the config file that is being loaded, and
other plugins.


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Use resolveConfig which does set NODE_ENV correctly


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

Fixes #27627
2024-10-17 12:26:34 -04:00
Nicholas Cunningham 1dd401cdc3 fix(react): update rspack to include styles in the main bundle (#28478)
<!-- 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, styles are not included in the main bundle by default.
## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->
Similar to webpack, styles should be included by default.
## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #28465
2024-10-17 07:48:09 +01:00
Alan Pazetto aa2e86088c fix(js): change verdaccio childProcess kill order (#28364)
<!-- 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/js:verdaccio` current call `npm config` to setup npm scopes in
global `.npmrc` file, which it's supposed to do.

However, when process is killed (using terminal exit command or any
other way), the process is killed and doesn't restore changed config.

In my case I'm changing scope to my private scope (using `scopes`
option), but after kill I need to restore manually.

## Expected Behavior
When process be killed, restore all configs that was set.

## Related Issue(s)
#28353

Fixes #28353
2024-10-17 00:20:17 -04:00
769 changed files with 19835 additions and 17457 deletions
+1
View File
@@ -82,6 +82,7 @@ jobs:
NX_E2E_CI_CACHE_KEY: e2e-circleci-linux
NX_DAEMON: 'true'
NX_PERF_LOGGING: 'false'
NX_VERBOSE_LOGGING: 'false'
NX_NATIVE_LOGGING: 'false'
NX_E2E_RUN_E2E: 'true'
NX_CI_EXECUTION_ENV: 'linux'
+138 -20
View File
@@ -25,35 +25,43 @@ jobs:
- ubuntu-latest
- macos-latest
node_version:
- 20
- 18
- 20
- 22
# - 23
exclude:
# run just node v20 on macos
- os: macos-latest
node_version: 18
- os: macos-latest
node_version: 22
# - os: macos-latest
# node_version: 23
name: Cache install (${{ matrix.os }}, node v${{ matrix.node_version }})
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PNPM
run: |
npm install -g @pnpm/exe@8
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
version: 9.8.0
run_install: false
- name: Set node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
cache: 'pnpm'
- name: Cache node_modules
id: cache-modules
uses: actions/cache@v3
uses: actions/cache@v4
with:
lookup-only: true
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ matrix.node_version }}-${{ github.run_id }}
key: ${{ runner.os }}-modules-${{ matrix.node_version }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Ensure Python setuptools Installed on Macos
if: ${{ matrix.os == 'macos-latest' }}
@@ -71,7 +79,7 @@ jobs:
- name: Cache Homebrew
if: ${{ matrix.os == 'macos-latest' }}
uses: actions/cache@v3
uses: actions/cache@v4
with:
lookup-only: true
path: ${{ steps.homebrew-cache-dir-path.outputs.dir }}
@@ -81,7 +89,7 @@ jobs:
- name: Cache Cypress
id: cache-cypress
uses: actions/cache@v3
uses: actions/cache@v4
with:
lookup-only: true
path: '${{ github.workspace }}/.cypress'
@@ -104,8 +112,10 @@ jobs:
- ubuntu-latest
- macos-latest
node_version:
- 20
- 18
- 20
- 22
# - 23
package_manager:
- npm
- yarn
@@ -266,6 +276,106 @@ jobs:
project: e2e-vue
- node_version: 18
project: e2e-webpack
- node_version: 22
project: e2e-angular
- node_version: 22
project: e2e-cypress
- node_version: 22
project: e2e-detox
- node_version: 22
project: e2e-esbuild
- node_version: 22
project: e2e-expo
- node_version: 22
project: e2e-gradle
- node_version: 22
project: e2e-jest
- node_version: 22
project: e2e-js
- node_version: 22
project: e2e-eslint
- node_version: 22
project: e2e-next
- node_version: 22
project: e2e-node
- node_version: 22
project: e2e-nuxt
- node_version: 22
project: e2e-nx-init
- node_version: 22
project: e2e-nx
- node_version: 22
project: e2e-plugin
- node_version: 22
project: e2e-playwright
- node_version: 22
project: e2e-react
- node_version: 22
project: e2e-react-native
- node_version: 22
project: e2e-web
- node_version: 22
project: e2e-remix
- node_version: 22
project: e2e-rollup
- node_version: 22
project: e2e-storybook
- node_version: 22
project: e2e-vite
- node_version: 22
project: e2e-vue
- node_version: 22
project: e2e-webpack
# - node_version: 23
# project: e2e-angular
# - node_version: 23
# project: e2e-cypress
# - node_version: 23
# project: e2e-detox
# - node_version: 23
# project: e2e-esbuild
# - node_version: 23
# project: e2e-expo
# - node_version: 23
# project: e2e-gradle
# - node_version: 23
# project: e2e-jest
# - node_version: 23
# project: e2e-js
# - node_version: 23
# project: e2e-eslint
# - node_version: 23
# project: e2e-next
# - node_version: 23
# project: e2e-node
# - node_version: 23
# project: e2e-nuxt
# - node_version: 23
# project: e2e-nx-init
# - node_version: 23
# project: e2e-nx
# - node_version: 23
# project: e2e-plugin
# - node_version: 23
# project: e2e-playwright
# - node_version: 23
# project: e2e-react
# - node_version: 23
# project: e2e-react-native
# - node_version: 23
# project: e2e-web
# - node_version: 23
# project: e2e-remix
# - node_version: 23
# project: e2e-rollup
# - node_version: 23
# project: e2e-storybook
# - node_version: 23
# project: e2e-vite
# - node_version: 23
# project: e2e-vue
# - node_version: 23
# project: e2e-webpack
# run just npm v20 on macos
- os: macos-latest
package_manager: yarn
@@ -273,6 +383,10 @@ jobs:
package_manager: pnpm
- os: macos-latest
node_version: 18
- os: macos-latest
node_version: 22
# - os: macos-latest
# node_version: 23
fail-fast: false
name: ${{ matrix.os_name }}/${{ matrix.package_manager }}/${{ matrix.node_version }} ${{ join(matrix.project) }}
@@ -283,22 +397,24 @@ jobs:
- name: Prepare dir for output
run: mkdir -p outputs
- name: Install PNPM
run: |
npm install -g @pnpm/exe@8
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
version: 9.8.0
run_install: false
- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
cache: 'pnpm'
- name: Cache node_modules
id: cache-modules
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ matrix.node_version }}-${{ github.run_id }}
key: ${{ runner.os }}-modules-${{ matrix.node_version }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install packages
run: pnpm install --frozen-lockfile
@@ -322,7 +438,7 @@ jobs:
- name: Cache Homebrew
if: ${{ matrix.os == 'macos-latest' }}
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ steps.homebrew-cache-dir-path.outputs.dir }}
key: brew-${{ matrix.node_version }}
@@ -331,7 +447,7 @@ jobs:
- name: Cache Cypress
id: cache-cypress
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: '${{ github.workspace }}/.cypress'
key: ${{ runner.os }}-cypress
@@ -396,10 +512,12 @@ jobs:
echo "$matrix" > $path
- name: Upload matrix config
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: outputs
overwrite: true
if-no-files-found: 'ignore'
path: ${{ steps.save-matrix.outputs.path }}
- name: Setup tmate session
@@ -418,7 +536,7 @@ jobs:
codeowners: ${{ steps.process-json.outputs.CODEOWNERS }}
steps:
- name: Load outputs
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: outputs
path: outputs
+105 -22
View File
@@ -22,22 +22,24 @@ jobs:
strategy:
matrix:
node_version:
- 20
- 18
- 20
- 22
# - 23
name: Cache install (node v${{ matrix.node_version }})
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
version: 8
version: 9.8.0
run_install: false
- name: Set node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
cache: 'pnpm'
@@ -48,14 +50,15 @@ jobs:
with:
lookup-only: true
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ matrix.node_version }}-${{ github.run_id }}
key: ${{ runner.os }}-modules-${{ matrix.node_version }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install packages
if: steps.cache-modules.outputs.cache-hit != 'true'
run: pnpm install --frozen-lockfile
- name: Cache Cypress
id: cache-cypress
uses: actions/cache@v3
uses: actions/cache@v4
with:
lookup-only: true
path: '${{ github.workspace }}/.cypress'
@@ -74,8 +77,10 @@ jobs:
strategy:
matrix:
node_version:
- 20
- 18
- 20
- 22
# - 23
package_manager:
- npm
project:
@@ -109,14 +114,8 @@ jobs:
codeowners: 'S04SS457V38'
- project: e2e-cypress
codeowners: 'S04T16BTJJY'
- project: e2e-detox
codeowners: 'S04TNCNJG5N'
- project: e2e-esbuild
codeowners: 'S04SJ6HHP0X'
- project: e2e-expo
codeowners: 'S04TNCNJG5N'
- project: e2e-gradle
codeowners: 'S04TNCNJG5N'
- project: e2e-jest
codeowners: 'S04T16BTJJY'
- project: e2e-js
@@ -139,8 +138,6 @@ jobs:
codeowners: 'S04SYHYKGNP'
- project: e2e-react
codeowners: 'S04TNCNJG5N'
- project: e2e-react-native
codeowners: 'S04TNCNJG5N'
- project: e2e-web
codeowners: 'S04SJ6PL98X'
- project: e2e-rollup
@@ -205,6 +202,90 @@ jobs:
project: e2e-vue
- node_version: 18
project: e2e-webpack
- node_version: 22
project: e2e-angular
- node_version: 22
project: e2e-cypress
- node_version: 22
project: e2e-esbuild
- node_version: 22
project: e2e-jest
- node_version: 22
project: e2e-js
- node_version: 22
project: e2e-eslint
- node_version: 22
project: e2e-next
- node_version: 22
project: e2e-node
- node_version: 22
project: e2e-nuxt
- node_version: 22
project: e2e-nx-init
- node_version: 22
project: e2e-nx
- node_version: 22
project: e2e-plugin
- node_version: 22
project: e2e-playwright
- node_version: 22
project: e2e-react
- node_version: 22
project: e2e-web
- node_version: 22
project: e2e-remix
- node_version: 22
project: e2e-rollup
- node_version: 22
project: e2e-storybook
- node_version: 22
project: e2e-vite
- node_version: 22
project: e2e-vue
- node_version: 22
project: e2e-webpack
# - node_version: 23
# project: e2e-angular
# - node_version: 23
# project: e2e-cypress
# - node_version: 23
# project: e2e-esbuild
# - node_version: 23
# project: e2e-jest
# - node_version: 23
# project: e2e-js
# - node_version: 23
# project: e2e-eslint
# - node_version: 23
# project: e2e-next
# - node_version: 23
# project: e2e-node
# - node_version: 23
# project: e2e-nuxt
# - node_version: 23
# project: e2e-nx-init
# - node_version: 23
# project: e2e-nx
# - node_version: 23
# project: e2e-plugin
# - node_version: 23
# project: e2e-playwright
# - node_version: 23
# project: e2e-react
# - node_version: 23
# project: e2e-web
# - node_version: 23
# project: e2e-remix
# - node_version: 23
# project: e2e-rollup
# - node_version: 23
# project: e2e-storybook
# - node_version: 23
# project: e2e-vite
# - node_version: 23
# project: e2e-vue
# - node_version: 23
# project: e2e-webpack
fail-fast: false
name: ${{ matrix.project }} (v${{ matrix.node_version }})
@@ -215,21 +296,21 @@ jobs:
- name: Prepare dir for output
run: mkdir -p outputs
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
version: 8.7.4
version: 9.8.0
run_install: false
- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
cache: 'pnpm'
- name: Cache node_modules
id: cache-modules
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ matrix.node_version }}-${{ github.run_id }}
@@ -239,7 +320,7 @@ jobs:
- name: Cache Cypress
id: cache-cypress
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: '${{ github.workspace }}/.cypress'
key: ${{ runner.os }}-cypress
@@ -289,10 +370,12 @@ jobs:
echo "$matrix" > $path
- name: Upload matrix config
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: outputs
overwrite: true
if-no-files-found: 'ignore'
path: ${{ steps.save-matrix.outputs.path }}
- name: Setup tmate session
@@ -311,7 +394,7 @@ jobs:
codeowners: ${{ steps.process-json.outputs.CODEOWNERS }}
steps:
- name: Load outputs
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: outputs
path: outputs
+2
View File
@@ -60,3 +60,5 @@ out
target
*.wasm
/wasi-sdk*
vite.config.*.timestamp*
+1
View File
@@ -9,6 +9,7 @@ launch-templates:
GIT_COMMITTER_NAME: Test
SELECTED_PM: 'pnpm'
NPM_CONFIG_PREFIX: '/home/workflows/.npm-global'
NX_NATIVE_LOGGING: 'nx::native::db'
init-steps:
- name: Checkout
uses: 'nrwl/nx-cloud-workflows/v4/workflow-steps/checkout/main.yaml'
Generated
+72 -11
View File
@@ -290,6 +290,15 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "ci_info"
version = "0.14.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "840dbb7bdd1f2c4d434d6b08420ef204e0bfad0ab31a07a80a1248d24cc6e38b"
dependencies = [
"envmnt",
]
[[package]]
name = "clang-sys"
version = "1.8.1"
@@ -460,6 +469,16 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
[[package]]
name = "envmnt"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d73999a2b8871e74c8b8bc23759ee9f3d85011b24fafc91a4b3b5c8cc8185501"
dependencies = [
"fsio",
"indexmap",
]
[[package]]
name = "errno"
version = "0.3.8"
@@ -499,9 +518,9 @@ dependencies = [
[[package]]
name = "fastrand"
version = "2.0.1"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
[[package]]
name = "filedescriptor"
@@ -545,6 +564,16 @@ dependencies = [
"syn 2.0.53",
]
[[package]]
name = "fs4"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec6fcfb3c0c1d71612528825042261419d5dade9678c39a781e05b63677d9b32"
dependencies = [
"rustix",
"windows-sys 0.52.0",
]
[[package]]
name = "fs_extra"
version = "1.3.0"
@@ -560,6 +589,15 @@ dependencies = [
"libc",
]
[[package]]
name = "fsio"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dad0ce30be0cc441b325c5d705c8b613a0ca0d92b6a8953d41bd236dc09a36d0"
dependencies = [
"dunce",
]
[[package]]
name = "funty"
version = "2.0.0"
@@ -1030,6 +1068,16 @@ dependencies = [
"tracing",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]]
name = "inotify"
version = "0.9.6"
@@ -1120,9 +1168,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "libc"
version = "0.2.155"
version = "0.2.161"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
[[package]]
name = "libloading"
@@ -1147,9 +1195,9 @@ dependencies = [
[[package]]
name = "linux-raw-sys"
version = "0.4.13"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
[[package]]
name = "lock_api"
@@ -1467,11 +1515,13 @@ version = "0.1.0"
dependencies = [
"anyhow",
"assert_fs",
"ci_info",
"colored",
"crossbeam-channel",
"crossterm",
"dashmap",
"dunce",
"fs4",
"fs_extra",
"globset",
"hashbrown 0.14.5",
@@ -1496,6 +1546,7 @@ dependencies = [
"swc_ecma_dep_graph",
"swc_ecma_parser",
"swc_ecma_visit",
"tempfile",
"thiserror",
"tracing",
"tracing-subscriber",
@@ -1919,9 +1970,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "rustix"
version = "0.38.32"
version = "0.38.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a"
dependencies = [
"bitflags 2.6.0",
"errno",
@@ -2370,14 +2421,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]]
name = "tempfile"
version = "3.10.1"
version = "3.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
dependencies = [
"cfg-if",
"fastrand",
"once_cell",
"rustix",
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -2826,6 +2878,15 @@ dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-targets"
version = "0.48.5"
+1 -1
View File
@@ -12,7 +12,7 @@ We are very excited to announce our support for Gradle with our new plugin: `@nx
The Nx Gradle plugin registers Gradle projects in your Nx workspace. It allows Gradle tasks to be run through Nx. Nx effortlessly makes your [CI faster](/ci/intro/ci-with-nx).
> **Note:** this plugin is currently experimental.
> **Update:** Learn how to import your existing Gradle projects into Nx in [our recent blog post](/blog/nx-import).
This blog will show you:
-1
View File
@@ -5,7 +5,6 @@ authors: ['Philip Fulcher']
cover_image: '/blog/images/2024-07-29/explain-with-ai-header.avif'
tags: [nx, nx-cloud, ai, release]
youtubeUrl: https://youtu.be/g2m9cHp-O-Q?si=ax-SKCO0Xvy9vFIz
pinned: true
---
It's Friday, and you absolutely, positively have to deploy to production. But you can't get CI to pass your PR. What do you do? It's an inevitable part of your life as a developer, and you've built a collection of tools to deal with it: Google, MDN, Discord, ChatGPT. We've got one more tool for your toolbox: **"Explain with AI" for [Nx Cloud](/nx-cloud)**.
@@ -1,97 +0,0 @@
---
title: Better security with Personal Access Tokens
slug: personal-access-tokens
authors: ['Philip Fulcher']
tags: [nx-cloud]
cover_image: /blog/images/2024-09-05/personal-access-tokens-header.avif
---
Today, Nx Cloud gets a huge upgrade to managing access to your cached artifacts
using [Nx Replay](/ci/features/remote-cache). Previously, workspaces
were limited to defining access tokens with read or read/write permissions for an entire workspace. With the
introduction of _personal access tokens_, you gain much more control over access. This is a feature request we've heard
from many customers, especially our [Enterprise](/enterprise) customers, and we're happy to be able to deliver this
enhancement.
## Access Tokens and the problem of revoking access
Our previous implementation of access tokens required you to commit the access token to your `nx.json` file. Typically,
service providers don't recommend committing any kind of API token like this, and we've fielded a lot of questions about
this practice in the past. It is safe to commit this token, as access to the cached artifacts of Nx Cloud rely on both
the access token and the source code itself. Without access to both, you can't access the cache.
However, this did present the following problem: revoking someone's access to the cache became difficult as long as they
had the source code. Imagine a scenario where someone has left an organization. As long as they have a clone of the
repo, they have everything they need to access the cache, even if their credentials have been
revoked. To fully revoke
their access would require cycling the access token, which could interrupt the work of other developers and CI
pipelines.
## Access Tokens become CI Access Tokens
What we previously called "access tokens" will now be called "[CI access tokens](/ci/recipes/security/access-tokens)."
They are still defined at the workspace
level, but are designed for use in CI. These tokens should be set as environment variables or secrets on your CI
platform so that they're no longer committed to your repo.
## What are personal access tokens?
[Personal access tokens](/ci/recipes/security/personal-access-tokens) are a new type of access token that is scoped to
an individual user. This means that this token lives and dies with that member's access to your Nx Cloud workspace.
Users must log in to Nx Cloud and they are a member of a workspace before a personal access token can be created.
Once created, we validate that token for access each time you use the distributed cache. As soon as a user loses access,
the personal access token no
longer works, and access to the cache is removed.
This gets even more powerful when combined with the GitHub VCS integration. When a user's GitHub access is removed from
a GitHub-connected organization, their access to Nx Cloud is removed, and their personal access token is invalidated.
This means that Nx Cloud can fit into existing user de-provisioning processes you already have.
Open source teams also benefit from personal access tokens. You can configure your access to allow anonymous users to
read from the cache, but limit read/write access to core contributors.
## Controlling default access
![Personal access token settings in Nx Cloud workspace](/blog/images/2024-09-05/workspace-settings.avif)
By default, a workspace that opts in to personal access tokens will allow anonymous users (users without a personal
access token defined) read-only access. This can be changed to disallow access to the cache for anonymous users
in your workspace settings.
Users with personal access tokens will have read-only access to the cache. This can be changed to enable read-write
access in the workspace settings.
## Converting existing workspaces to use personal access tokens
Personal access tokens can be enabled with _Nx versions 13+_. These steps will get you started, but you
can [find more details in our docs](/ci/recipes/security/personal-access-tokens).
1. **Convert to using `nxCloudId` by running `npx nx-cloud convert-to-nx-cloud-id`** - Previously, your `nx.json` had a
CI
access token defined in the `nxCloudAccessToken` property. This command will replace that with `nxCloudId`, a generic
id that references your workspace but no longer provides access to the cache.
2. **Generate a personal access token by running `npx nx-cloud login`** - Follow the directions in your terminal to log
in
to Nx Cloud. Each contributor with access to the workspace will need to complete this step.
3. **Move CI access tokens to environment variables** - Now that the access token is no longer committed to your
`nx.json`,
you'll need to provide that CI access token via the
`NX_CLOUD_ACCESS_TOKEN` [environment variable](/ci/reference/env-vars#nxcloudaccesstoken).
4. **_Optional_ Disable anonymous access** - By default, anyone without a personal access token will have read-only
access
to your cached artifacts. Once everyone has a personal access token defined, you can disable this anonymous access in
your Nx Cloud workspace settings.
[Learn more about using personal access tokens](/ci/recipes/security/personal-access-tokens)
## Learn more
- [Nx Docs](/getting-started/intro)
- [Nx Cloud Cache Security](/ci/concepts/cache-security)
- [Nx Cloud Personal Access Tokens](/ci/recipes/security/personal-access-tokens)
- [Nx Cloud CI Access Tokens](/ci/recipes/security/access-tokens)
- [X/Twitter](https://twitter.com/nxdevtools) -- [LinkedIn](https://www.linkedin.com/company/nrwl/)
- [Nx GitHub](https://github.com/nrwl/nx)
- [Nx Official Discord Server](https://go.nx.dev/community)
- [Nx Youtube Channel](https://www.youtube.com/@nxdevtools)
- [Speed up your CI](https://nx.app/)
-1
View File
@@ -5,7 +5,6 @@ authors: [Zack DeRose]
tags: [nx, release]
cover_image: /blog/images/2024-09-20/thumbnail.png
youtubeUrl: https://youtu.be/Zgv4LHvwGx0
pinned: true
---
Nx 19.8 is here! This is our last minor release before we get ready to move ahead into Nx v20, which should land in October around the same time as the [Monorepo World Conference](https://monorepo.world/)!
+8 -2
View File
@@ -6,6 +6,12 @@ tags: [nx, release]
cover_image: /blog/images/evolving-nx/thumbnail.png
---
_Update from Jeff Cross, October 17, 2024_
In my original version of this post, I said that Powerpack is completely new functionality. I mistakenly thought that all custom remote cache solutions were using private/unsupported APIs, but I've since learned that we've had docs and some APIs that helped people build their own remote caches. I'm sorry for the error, and have updated the text to indicate that Powerpack is mostly new functionality. We've also updated the [Powerpack page](/powerpack) to make it more explicit how some teams can get free Powerpack licenses.
---
Over the years, Nx has grown from a small 20% side project of our consulting business into a tool that empowers millions of developers worldwide and helps Fortune 500 companies ship high-quality software faster. In the last two years, we successfully transformed our consulting business into a product company, where our team can fully focus on evolving Nx and building Nx Cloud to extend Nxs capabilities beyond local development.
This success is in large part thanks to:
@@ -21,7 +27,7 @@ When we have new ideas to make Nx better, weve always had two options: it cou
> If you want to get into the technical details, we wrote a separate blog post diving deeper into the technical details: [Introducing Nx Powerpack](/blog/introducing-nx-powerpack).
Everything in Powerpack is new functionality, not previously free features that were now putting behind a paywall. However, this change coincides with some Nx improvements that will eventually interfere with users who were relying on our original filesystem-based implementation of local caching. Weve completely rewritten Nx's local caching to be faster and more secure, partly by using a local database instead of checking the filesystem for artifact metadata. With this rewrite, any custom remote caches that rely on metadata reflected in the filesystem will not work as of Nx 21. This is why we decided to build an API into Powerpack to be able to connect Nxs cache to different clouds and data sources. Now with Powerpack, teams can use an officially-supported implementation of remote caching, without needing to use Nx Cloud.
Powerpack is mostly new functionality. However, this change coincides with some Nx improvements that will eventually interfere with users who were relying on our original filesystem-based implementation of local caching. Weve completely rewritten Nx's local caching to be faster and more secure, partly by using a local database instead of checking the filesystem for artifact metadata. With this rewrite, any custom remote caches that rely on metadata reflected in the filesystem will not work as of Nx 21. This is why we decided to build an API into Powerpack to be able to connect Nxs cache to different clouds and data sources. Now with Powerpack, teams can use an officially-supported implementation of remote caching, without needing to use Nx Cloud.
Theres a Steve Jobs quote that I think rings true with all of us at Nx:
@@ -45,7 +51,7 @@ Are you a startup? If these features make sense for your team but the cost is a
## Got Questions?
If youre curious to learn more about these changes for Nx and how to get started, [check out our docs](/features/powerpack).
If youre curious to learn more about these changes for Nx and how to get started, [check out our docs](/nx-enterprise/powerpack).
## Learn more
@@ -119,7 +119,7 @@ A dedicated `nx sync` command automatically synchronizes these definitions to a
...
```
Read all about how to [configure Codeowners for your project in our docs](/features/powerpack/owners).
Read all about how to [configure Codeowners for your project in our docs](/nx-enterprise/powerpack/owners).
## Self-hosted Cache Storage
@@ -156,9 +156,6 @@ permissions:
id-token: write
...
env:
NX_DB_CACHE: true
jobs:
main:
runs-on: ubuntu-latest
@@ -178,7 +175,7 @@ jobs:
Similarly you can **set up network file based caching** using the `nx add @nx/powerpack-shared-fs-cache` package and by setting the `cacheDirectory` path in your `nx.json`.
Read all about how to [set up S3 or network drive based caching for your Nx workspace in our docs](/features/powerpack/custom-caching).
Read all about how to [set up S3 or network drive based caching for your Nx workspace in our docs](/nx-enterprise/powerpack/custom-caching).
## Workspace Conformance (Beta)
@@ -245,7 +242,7 @@ You can then run `nx conformance` to execute the conformance checks:
In this first preview release, you'll only be able to run workspace conformance rules on a single workspace. In future iterations, you **will be able to connect it to your existing Nx Cloud organization**, allowing you to upload conformance rules and run them across connected workspaces.
Read all the details on how to [get started with workspace conformance rules in our docs](/features/powerpack/conformance).
Read all the details on how to [get started with workspace conformance rules in our docs](/nx-enterprise/powerpack/conformance).
## Learn More
+68 -10
View File
@@ -4,11 +4,13 @@ slug: announcing-nx-20
authors: [Mike Hartington]
tags: [nx, release]
cover_image: /blog/images/2024-10-03/nx-20-header.png
youtubeUrl: https://youtu.be/5-QwtlhaJK8
pinned: true
---
I know it's hard to believe but Nx 20 is here! There's a lot of great updates in this release, but look back at some of the major features from Nx 19:
- Added [`nx import`][nx-import] to import existing external projects while maintaining git history.
- Added [`nx import`][nx-import] to import existing external projects, more on that below.
- Added a [generator][crystalize-command] to convert all your Nx Plugins to use inferred tasks.
- Moved to [rspack][nx-rspack] as the default bundler for Module Federation
- Added [file-based versioning][file-based-versioning] for Nx Release
@@ -22,27 +24,32 @@ If you've been around the Nx ecosystem for any amount of time, you're probably a
## TypeScript Project References For Monorepos
[**Project References**](https://www.typescriptlang.org/docs/handbook/project-references.html) allows TypeScript to process individual projects rather than the entire monorepo as whole. This is a huge improvement in terms of build times and developer experience. However, Project References comes with a maintenance cost, as it is up to you to update these references. In a large monorepo, this cost is prohibitive.
[**Project References**](https://www.typescriptlang.org/docs/handbook/project-references.html) allows TypeScript to process individual projects rather than the entire monorepo as a whole. This is a huge improvement in terms of build times and developer experience. However, Project References comes with a maintenance cost, as it is up to you to update these references. In a large monorepo, this cost is prohibitive.
With Nx 20, when using `create-nx-workspace --preset=ts`, workspaces will use Project References out of the box. Nx removes the maintenance cost of this feature by automatically updating the references for you when you run `build` or `typecheck` targets. You can also run [`nx sync`](/reference/nx-commands#sync) to update references, and `nx sync:check` in CI to validate the workspace.
With Nx 20, when using `create-nx-workspace --preset=ts`, workspaces will use Project References out of the box. Nx removes the maintenance cost of this feature by automatically updating the references for you when you run `build` or `typecheck` targets. You can also run [`nx sync`](/reference/nx-commands#sync) to update project references in your `tsconfig.json`, and `nx sync:check` in CI to validate the workspace.
In addition to adopting Project References, we're also changing the way we link projects in a TypeScript monorepos. **Workspaces** is the standard way to link packages in monorepos. This is a feature that all modern package managers support, such as [npm](https://docs.npmjs.com/cli/using-npm/workspaces), [yarn](https://yarnpkg.com/features/workspaces), [pnpm](https://pnpm.io/workspaces), and [bun](https://bun.sh/docs/install/workspaces), so taking advantage of it is a no-brainer. Now we have a proper way to provide type information and have your packages available in a way developers are used to.
In addition to adopting Project References, we're also changing the way we link projects in a TypeScript monorepos. **Workspaces** is the standard way to link packages in monorepos. This is a feature that all modern package managers support, such as [npm](https://docs.npmjs.com/cli/using-npm/workspaces), [yarn](https://yarnpkg.com/features/workspaces), [pnpm](https://pnpm.io/workspaces), and [bun](https://bun.sh/docs/install/workspaces), where you can declare a `workspace` key in your `package.json` and provide it an array of paths. Then on install, your package manager will traverse any directories that it finds in the workspaces key, and link them to your `node-modules`. This built in feature provides a much more standard way of connecting your packages in a monorepo that its a no-brainer. Now we have a proper way to provide type information and have your packages available in a way developers are used to.
Note that we've enabled Project References and Workspaces for the TS preset (i.e. `--preset=ts`), and we're working on extending this support for all other presets soon (Angular, React, Vue, Node). If you are an existing Nx user and want to create an empty workspace in the previous "integrated" style, you can use `create-nx-workspace --preset=apps`.
## `@nx/rspack` Graduates From Labs 🎓
[Rspack][rspack] has become one of the most exciting new bundlers in recent years. With a webpack-compatible API, it's a painless migration for folks who want faster builds without having to rewrite their entire build process. At Nx, we're big fans of Rspack and have been working on a plugin for folks who would like to migrate. With that in mind, the `@nx/rspack` plugin has officially been merged into the main Nx repository and will become a fully supported plugin for the ecosystem.
[Rspack][rspack] has become one of the most exciting new bundlers in recent years. With a webpack-compatible API, it's a painless migration for folks who want faster builds without having to rewrite their entire build process. At Nx, we're big fans of Rspack and have been working on a plugin for folks who would like to migrate. With that in mind, the `@nx/rspack` plugin has officially been merged into the main Nx repository and will become a fully supported plugin for the ecosystem. Want to learn more about Rspac in general? Check out our recent live stream where we deep dive into how to use Rspack and cover its involvement with module federation.
{% youtube
src="https://www.youtube.com/watch?v=_c4zjYm0pYE"
title="Nx Live | Rspack"
/%}
In addition to this, Nx core team member [Colum Ferry][colum] has taken the work he's done on the Rspack plugin and brought it to the Angular ecosystem! He's recently released `@ng-rspack/nx` to bring Rspack support to your Angular projects. Simply install the plugin and generate a new app in your workspace to try it out!
```bash
```shell
# In an Nx Workspace (npx create-nx-workspace)
# Install Package
npm install @ng-rspack/nx
# Run the app generator
npx nx g @ng-rspack/nx: app apps/myapp
npx nx g @ng-rspack/nx:app apps/myapp
# Serve the app
npx nx serve myapp
@@ -54,6 +61,19 @@ npx nx build myapp
npx nx e2e myapp-e2e
```
## ESLint v9 Updates
In [Nx 19.8](/blog/nx-19-8-update#new-nx-workspaces-created-with-eslint-v9), we highlighted that workspaces will now be created with [`eslint`](https://www.npmjs.com/package/eslint) v9, and [`typescript-eslint`](https://www.npmjs.com/package/typescript-eslint) v8.
This not only brings us inline with the latest version of eslint and typescript-eslint, but also that [flat config](https://eslint.org/docs/latest/use/configure/migration-guide) is only supported moving forward. Nx users should migrate to this new config format using [our flat config generator](/recipes/tips-n-tricks/flat-config#switching-to-eslints-flat-config-format).
For more on eslint's flat config, and how to use our generator to get to flat config checkout this video:
{% youtube
src="https://www.youtube.com/watch?v=32XH909CZrY"
title="ESLint Config Automation With Nx"
/%}
## Nx Release: More Powerful And Flexible Versioning
`nx release` has added many powerful versioning capabilities since it was first made public as part of Nx 19. We are super excited about an in progress ground-up reworking of our versioning logic that powers `nx release` and the programmatic API `releaseVersion()` that will continue to support all these features, and allow for even more complex and large scale workspaces to be supported.
@@ -64,6 +84,26 @@ Additionally, for workspaces that contain multiple different programming languag
The Nx Team provides the JavaScript version generator out of the box, so for many users, this is not a concern. But for those working with Go, Rust, Dotnet, Java etc, currently a lot of logic needs to be reimplemented and kept up to date with the latest features. In the upcoming versioning rework, the abstraction required for each new language/ecosystem is tiny and purely deals with interacting with the relevant manifest file and registry, if applicable. All feature capabilities are maintained on the Nx core side. Once this new versioning implementation is available in an Nx v20 minor release we will update our documentation to provide guidance on how to opt in, before it ultimately becomes the primary implementation in Nx v21.
## Importing Existing Projects
Another important feature worth highlighting with Nx 20 is the ability to import external projects and add them to your Nx workspace with `nx import`. Not only does `nx import` ease the process of consolidating separate projects into one monorepo, it also maintains that original projects git history. Now you have the full historical context of that particular project. In addition to just being able to bring in external projects, `nx import` will also analyze the project and provide recommended Nx plugins to be added to your workspace. So if you're importing a Vite project that also has ESLint, `nx import` will detect the config files and suggest installing them into your workspace. So not only is migrating to a monorepo simpler, you can keep your existing tool chain and keep working with a setup you are familiar with. Get a glance of how import works in a past live stream and be on the lookout for more on import in the future.
{% youtube
src="https://youtu.be/8ljemsNT21c?t=2632"
title="Nx Import Preview"
/%}
## Caching - Now With Databases
Caching is a big feature of Nx and is one of many reasons why we can have such a fast build time. But our approach to caching has historically been lacking for a bit. Prior to Nx 20, we utilized a file-based caching system where the build results were written to disk and were read from disk when any subsequent builds were performed. This solution could lead to some performance issues if the cached output was rather large, leading to the build process needing to wait for any output to be loaded from the cache. In Nx 20, we've adopted a database-driven solution for caching your results. Not only is this a faster mechanism for caching, but it's a much more robust solution than simply reading/writing from a directory. We can make sure that as your monorepo scales, the caching portion does not become a bottleneck. While the new database caching solution is the default for Nx 20, you can opt-out by setting `useLegacyCache` in your `nx.json`
```json {% fileName="nx.json" %}
{
"useLegacyCache": true,
"namedInputs": {...}
}
```
## So Long Derived Directories 👋
Generating apps and libraries in a monorepo is something folks do quite regularly and part of that is telling Nx where it should put things. So you've probably seen this prompt before:
@@ -74,9 +114,26 @@ This is where the concept of derived directories comes in. It will try to inspec
## Wrapping Up
There's a lot more in Nx 20, so be sure to check the full changelog for all the details on everything in this major release.
Updating Nx and its plugins is easy as we ship an [automated migration command][migration-step].
- [Nx 20 Changelog](/changelog)
{% youtube
src="https://www.youtube.com/watch?v=A0FjwsTlZ8A"
title="Nx Automatic Migrations"
/%}
```shell
npx nx migrate latest
npx nx migrate --run-migrations
```
There's a lot more in Nx 20, so be sure to check the full changelog for all the details on everything in this major release and any of our past releases.
- [Nx 20.0 Changelog](/changelog#20.0.0)
- [Nx 19.8 Changelog](/changelog#19.8.0)
- [Nx 19.7 Changelog](/changelog#19.7.0)
- [Nx 19.6 Changelog](/changelog#19.6.0)
- [Nx 19.5 Changelog](/changelog#19.5.0)
- [Nx 19.0 Changelog](/changelog#19.0.0)
[rspack]: https://rspack.dev
[rescope]: /deprecated/rescope
@@ -86,4 +143,5 @@ There's a lot more in Nx 20, so be sure to check the full changelog for all the
[file-based-versioning]: /recipes/nx-release/file-based-versioning-version-plans
[nx-rspack]: /nx-api/rspack
[crystalize-command]: /blog/nx-19-8-update#crystalize-your-entire-workspace-in-one-command
[nx-import]: /nx-api/nx/documents/import
[nx-import]: /recipes/adopting-nx/import-project
[migration-step]: /features/automate-updating-dependencies
@@ -0,0 +1,103 @@
---
title: Improve your architecture and CI pipeline times with Nx projects
slug: improve-architecture-and-ci-times-with-projects
authors: [Philip Fulcher]
tags: [nx, enterprise]
cover_image: '/blog/images/2024-10-25/header.avif'
pinned: true
---
When adopting monorepos and Nx, it can feel like there's a lot that needs to be understood first before you get all the benefits. Oftentimes it's tempting to skip some fundamentals and just add all your code into one monorepo and call it a day. Following this mentality is the best way to actually _increase_ your CI run times and cost. Monorepos should simplify your architecture and reduce costs, not cause you to spend more money and time to build, test, and deploy. To make this possible, following a simple restructure of multiple applications and investing time and effort into setting up your monorepo can pay off in the long run. But what does this ideal structure look like, and what are the benefits?
## Real World Example
![Graphs showing pipeline improvements](/blog/images/2024-10-25/improvement-graph.avif)
While it's easy to say this architectural approach is better, it does help to highlight cases where other teams have faced this very challenge. A major sports retailer in the US made the switch to monorepos powered by Nx and faced several challenges. Their project structure had a massive amount of code duplication across all of the apps in monorepo. When measuring their initial migration, they had an average **CI run time of an hour** and a **cache hit rate of under 20%**. We worked with this team and were able to guide them along their migration to figure out where they could make the biggest impact. After investing in this effort, they've been able to cut their CI run times down to **7-9 minutes** and with a **cache hit rate of 57%**. This significant improvement can all be traced back to following best practices.
## Projects All The Way Down
In our sports retailer monorepo, lets consider that we have three apps for different parts of our frontend. In a worst case scenario, we bring all these apps together, configure their CI pipelines, and call it a day. This bare minimum, while it does give us a monorepo, it does not provide any real substantial value outside of dependencies being matched across the apps. As we start to add more and more to the monorepo, we'll see our CI run times start to increase. Anytime we try to cut a release, we'll be left waiting longer and longer. So what's the solution here?
Let's say we have some code in our app that exists in all three of our apps that is copied across all of them. When your PR hits CI, this portion of code is built, tested, and linted in every place that it is copied, which is unnecessary. One block of shared code won't fix our CI pipeline times, but it will set us on the correct path. The solution is to start migrating portions that are common across any apps in a monorepo into its own project that we can import.
Splitting this code out with Nx is as simple as generating a new project and migrating that code over. So this:
```text
monorepo/
└── apps/
├── storefront/
├── internal-dash/
└── support-dash/
```
Becomes this:
```text
monorepo/
├── apps/
│ ├── storefront/
│ ├── internal-dash/
│ └── support-dash/
└── libs/
└── date-time-utils/
```
![Graph of applications depending on a shared library](/blog/images/2024-10-25/apps-with-shared-lib.avif)
This small change will now allow Nx to cache the task results of our `date-time-utils`. That way, when we attempt to build, test, or lint our apps, Nx will simply provide the cached results if the project hasn't been changed. As we migrate more and more of our code into their own projects, the caching features become more and more impactful.
Splitting our shared utilities seems like a very reasonable first step, but we can take this further by actually splitting any UI features into their own projects. This is helpful if we've standardized around a particular frontend framework, then sharing those components across any number of apps becomes trivial. A secondary aspect of this is now we can ensure consistency across our UI design all while reducing our build times further down.
## Projects aren't just for shared code
Shared libraries often make sense as a first attempt at optimizing monorepo architecture because it mirrors what we see in a multirepo approach. Grouping code that's used in multiple places into a single reusable library scratches that engineering itch to be DRY. But shared code is not the only code that should be in projects in a monorepo. Applications themselves can also be broken down into projects.
Why? Caching and parallelization of tasks happens at the **project** level. Dividing code into logical pieces and separating it into separate projects allow us to:
- **Run tasks faster** - Running tasks on smaller projects = faster run times
- **Cache more results** - Making changes to smaller projects results in fewer affected projects = running fewer tasks in CI
Imagine this application has three routes:
```text
storefront/
├── product-search
├── product-details
└── checkout
```
If we leave this application as-is, we build, test, and lint this entire application any time we make a change.
If we instead break these routes into their own projects:
```text
monorepo/
├── libs/
│ shared
│ │ └──date-time-utils/
│ └──storefront/
│ ├──product-search/
│ ├──product-details/
│ └──checkout
└── apps/
├── storefront/
├── internal-dash/
└── support-dash/
```
![Graph of application depending on projects](/blog/images/2024-10-25/app-with-route-projects.avif)
The routes exist as projects which are then imported by the application. We can now lint and test the app and those routes individually. If we make a change to one route, we don't have to lint and test the other routes.
## Improve Your Builds, Talk With Us
Adopting a monorepo powered by Nx on its own does not solve build speeds or CI pipeline times. But adopting a monorepo and taking the time to reevaluate your architecture can lead to a significant improvement in build times when best practices are applied. If you're curious to know more, reach out to us to see how Nx can improve your monorepo experience and ship faster!
{% call-to-action title="Explore Nx Cloud for Enterprises" url="/enterprise" icon="nxcloud" description="Learn more about our offerings for enterprises and contact our team" %} Explore Nx Cloud for Enterprises {% /call-to-action %}
## Further reading
- [Project size in monorepos](/concepts/decisions/project-size)
- [Folder structure for project](/concepts/decisions/folder-structure)
- [Defining dependency rules between projects](/concepts/decisions/project-dependency-rules)
+89
View File
@@ -0,0 +1,89 @@
---
title: Import External Projects to Your Nx Monorepo With `nx import`
slug: nx-import
authors: [Zack DeRose]
tags: [nx]
cover_image: '/blog/images/2024-10-29/nx-import-thumbnail.avif'
youtubeUrl: https://youtu.be/hnbwoV2-620
---
- [The Need](#the-need)
- [How It Works](#how-it-works)
- [`git` History ✅; Selective `git` History ✅](#git-history-selective-git-history)
- [Resources And More](#resources-and-more)
## The Need
One of the larger and more frequent asks we've gotten through the years at Nx is for the ability to import other repos (and projects from other repos) into an organization's monorepo. And that's understandable.
The [benefits of monorepos](https://monorepo.tools/) are immense, and over time we've seen more and more organizations and developers in the wider community gravitate towards monorepos as a way of managing codebases that are broader and more complex.
However, while we've always had a great story for starting up a fresh monorepo from scratch, the ability to easily import other existing projects has become more and more in demand as organizations have warmed to the idea of monorepos - and like we said, it's understandable. Once you get a taste of how much better things get in a monorepo, you tend to want to bring in all the things!
Prior to this work, it was always possible to do manually - but it takes some finessing both in terms of copying/pasting files over, and (as we'll see later) maintaining combining git history from the old project into its new home.
We always wanted to make this better - and now, we've now added a new top-level command to Nx specifically to address this: [`nx import`](http://localhost:4200/nx-api/nx/documents/import).
## How It Works
Here's how it works:
```shell
nx import ../my-side-project
```
Simply provide either a path to the repo that you want to import from to the CLI, or if you want to import from a central repository - for example from GitHub, you can provide the URL of the repo as the command-line argument. This will take you through some interactive prompts. For this example I'm importing the project `promise-pool`, located on my local disk at `/my-side-project/projects/promise-pool`.
Here are those interactive prompts:
```shell
nx import ../example-ts-monorepo --dry-run
NX Nx will walk you through the process of importing code from the source repository into this repository:
1. Nx will clone the source repository into a temporary directory
2. The project code from the sourceDirectory will be moved to the destinationDirectory on a temporary branch in this repository
✔ Filtered git history to only include files in packages/promise-pool
✔ /Users/zackderose/example-ts-monorepo has been prepared to be imported into this workspace on a temporary branch: __nx_tmp_import__/main in /private/var/folders/r2/7dj0tnbd1174yxxj18nhl5v40000gn/T/nx-import/repo
✔ Fetched __nx_tmp_import__/main from __tmp_nx_import__
✔ Merged files and git history from main from /Users/zackderose/example-ts-monorepo into libs/promise-pool
✔ Cleaned up temporary files and remotes
```
Following this, Nx will prompt you to install any relevant Nx plugins that it can detect from the incoming project if they are missing!
```shell
Add these Nx plugins to integrate with the tools used in your workspace.
? Which plugins would you like to add? Press <Space> to select and <Enter> to submit. …
✔ @nx/eslint
✔ @nx/vite
✔ @nx/playwright
```
Following this step, we're essentially good-to-go, though in a real life scenario you're likely 90-95% of the way there. There may be some final finessing required in terms of merging CI pipelines and etc. - things that we can't really automate away!
## `git` History ✅; Selective `git` History ✅
One thing you may have missed in the example was this line here when the `nx import` command was running:
```shell
⠋ Filtering git history to only include files in packages/promise-pool (this might take a few minutes -- install git-filter-repo for faster performance)
```
As mentioned earlier, `nx import` WILL preserve the git history of your incoming project, merging it in with your monorepo's git history.
But as an extra feature - in the case like the example we were looking at (only importing one package from the `my-side-project` repo), `nx import` will automate a filtering of the git history of the incoming project, to ONLY match for commits that involved the projects being imported! We've found this feature to be especially helpful for our enterprise-level users who are importing a project from their legacy codebase into their Nx Workspace!
## Resources And More
For more on `nx import` be sure to check out our [recipe for using `nx import`](/recipes/adopting-nx/import-project), and as always, you can find more help:
- In the [Nx Docs](/getting-started/intro)
- On our [Nx Official Discord Server](https://go.nx.dev/community)
And you can keep up with us:
- On our [Nx Youtube Channel](https://www.youtube.com/@nxdevtools)
- On [X/Twitter](https://twitter.com/nxdevtools) -- [LinkedIn](https://www.linkedin.com/company/nrwl/)
- And on the [Nx GitHub](https://github.com/nrwl/nx)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

+6 -1
View File
@@ -1,4 +1,9 @@
# Nx 20
# [Nx 20.0 Blogpost](/blog/announcing-nx-20)
{% youtube
src="https://youtu.be/5-QwtlhaJK8"
title="Announcing... Nx 20!!!"
width="100%" /%}
## Features
+78 -1
View File
@@ -1,4 +1,27 @@
[
{
"description": "A Nx Powerpack plugin which provides a Nx cache which can be self hosted on Azure Blob Storage.",
"documents": [
{
"id": "overview",
"name": "Overview",
"description": "A Nx Powerpack plugin which provides a Nx cache which can be self hosted on Azure Blob Storage.",
"file": "external-generated/packages/powerpack-azure-cache/documents/overview",
"itemList": [],
"isExternal": false,
"path": "powerpack-azure-cache/documents/overview",
"tags": [],
"originalFilePath": "shared/packages/powerpack-azure-cache/powerpack-azure-cache-plugin"
}
],
"executors": [],
"generators": [],
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-azure-cache",
"packageName": "@nx/powerpack-azure-cache",
"root": "/libs/nx-packages/powerpack-azure-cache",
"source": "/libs/nx-packages/powerpack-azure-cache/src"
},
{
"description": "A Nx Powerpack plugin which allows users to write and apply rules for your entire workspace that help with consistency, maintainability, reliability and security.",
"documents": [
@@ -14,7 +37,17 @@
"originalFilePath": "shared/packages/powerpack-conformance/powerpack-conformance-plugin"
}
],
"executors": [],
"executors": [
{
"description": "Compile and bundle an Nx Conformance Rule",
"file": "external-generated/packages/powerpack-conformance/executors/bundle-rule.json",
"hidden": false,
"name": "bundle-rule",
"originalFilePath": "/libs/nx-packages/powerpack-conformance/src/executors/bundle-rule/schema.json",
"path": "powerpack-conformance/executors/bundle-rule",
"type": "executor"
}
],
"generators": [],
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-conformance",
@@ -22,6 +55,50 @@
"root": "/libs/nx-packages/powerpack-conformance",
"source": "/libs/nx-packages/powerpack-conformance/src"
},
{
"description": "A Nx Powerpack plugin which is specific to Nx Enterprise Cloud workspaces.",
"documents": [],
"executors": [],
"generators": [
{
"description": "Initialize Nx Powerpack Enterprise Cloud config",
"file": "external-generated/packages/powerpack-enterprise-cloud/generators/init.json",
"hidden": false,
"name": "init",
"originalFilePath": "/libs/nx-packages/powerpack-enterprise-cloud/src/generators/init/schema.json",
"path": "powerpack-enterprise-cloud/generators/init",
"type": "generator"
}
],
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-enterprise-cloud",
"packageName": "@nx/powerpack-enterprise-cloud",
"root": "/libs/nx-packages/powerpack-enterprise-cloud",
"source": "/libs/nx-packages/powerpack-enterprise-cloud/src"
},
{
"description": "A Nx Powerpack plugin which provides a Nx cache which can be self hosted on Google Cloud Storage.",
"documents": [
{
"id": "overview",
"name": "Overview",
"description": "A Nx Powerpack plugin which provides a Nx cache which can be self hosted on Google Cloud Storage.",
"file": "external-generated/packages/powerpack-gcs-cache/documents/overview",
"itemList": [],
"isExternal": false,
"path": "powerpack-gcs-cache/documents/overview",
"tags": [],
"originalFilePath": "shared/packages/powerpack-gcs-cache/powerpack-gcs-cache-plugin"
}
],
"executors": [],
"generators": [],
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-gcs-cache",
"packageName": "@nx/powerpack-gcs-cache",
"root": "/libs/nx-packages/powerpack-gcs-cache",
"source": "/libs/nx-packages/powerpack-gcs-cache/src"
},
{
"description": "Package to provide the ability to activate and read licenses for Nx Powerpack.",
"documents": [],
@@ -0,0 +1,83 @@
---
title: Overview of the Nx powerpack-azure-cache Plugin
description: The powerpack-azure-cache Nx plugin enables you to use Azure Storage to host your remote cache instead of Nx Cloud
---
The `@nx/powerpack-azure-cache` plugin enables you to use [Azure Storage](https://azure.microsoft.com/en-us/products/storage/blobs) instead of Nx Cloud to host your remote cache.
This plugin will enable the remote cache for your Nx workspace, but does not provide any of the other features of Nx Cloud. If you want to leverage [distributed task execution](/ci/features/distribute-task-execution), [re-running flaky tasks](/ci/features/flaky-tasks) or [automatically splitting tasks](/ci/features/split-e2e-tasks), you'll need to [connect to Nx Cloud](/ci/intro/connect-to-nx-cloud) and use [Nx Replay](/ci/features/remote-cache) instead.
{% callout type="warning" title="Potential Cache Poisoning" %}
Using your own Azure Storage account to host the remote cache opens you up to the possibility of [cache poisoning](/troubleshooting/unknown-local-cache). To avoid this, use [Nx Replay](/ci/features/remote-cache).
{% /callout %}
{% callout title="This plugin requires an active Nx Powerpack license" %}
In order to use `@nx/powerpack-azure-cache`, you need to have an active Powerpack license. If you don't have a license or it has expired, your cache will no longer be shared and each machine will use its local cache.
{% /callout %}
## Set Up @nx/powerpack-azure-cache
### 1. Install the Package
1. [Activate Powerpack](/nx-enterprise/activate-powerpack) if you haven't already
2. Install the package
```shell
nx add @nx/powerpack-azure-cache
```
### 2. Authenticate with Azure
There are several ways to [authenticate with Azure Storage](https://github.com/Azure/login#login-with-openid-connect-oidc-recommended), but the method recommended by Azure is to use OpenID Connect, like this:
```yaml {% fileName=".github/workflows/ci.yml" %}
name: CI
...
permissions:
id-token: write
...
jobs:
main:
env:
NX_POWERPACK_LICENSE: ${{ secrets.NX_POWERPACK_LICENSE }}
runs-on: ubuntu-latest
steps:
...
- name: Azure login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
...
- run: pnpm exec nx affected -t lint test build
```
You need to set the `AZURE_CLIENT_ID`, `AZURE_TENANT_ID` and `AZURE_SUBSCRIPTION_ID` secrets as defined in the [Azure documentation](https://github.com/Azure/login#login-with-openid-connect-oidc-recommended).
Note: Any authentication method that [sets up the `DefaultAzureCredentials`](https://learn.microsoft.com/en-us/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility) will enable the plugin to work.
{% callout type="note" title="Custom Azure Endpoint" %}
If you are using a custom Azure endpoint, you will need to authenticate by [setting the `AZURE_STORAGE_CONNECTION_STRING` environment variable](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string). The `@nx/powerpack-azure-cache` plugin will detect the environment variable and automatically use it to connect to Azure.
{% /callout %}
### 3. Configure the Nx Cache to Use Azure Storage
Finally, you need to configure your Nx cache in the `nx.json` file. The `container` that you specify needs to already exist - Nx doesn't create it for you.
```jsonc {% fileName="nx.json" %}
{
"azure": {
"container": "mycontainer",
"accountName": "myaccount"
}
}
```
| **Property** | **Description** |
| --------------- | -------------------------------- |
| **container** | The name of the container to use |
| **accountName** | The name of blob storage account |
@@ -18,7 +18,7 @@ In order to use `@nx/powerpack-conformance`, you need to have an active Powerpac
## Set Up @nx/powerpack-conformance
1. [Activate Powerpack](/recipes/installation/activate-powerpack) if you haven't already
1. [Activate Powerpack](/nx-enterprise/activate-powerpack) if you haven't already
2. Install the package
```shell
@@ -189,6 +189,7 @@ import { createConformanceRule } from '@nx/powerpack-conformance';
const rule = createConformanceRule({
name: 'local-conformance-rule-example',
description: 'The description of the rule',
category: 'security', // `consistency`, `maintainability`, `reliability` or `security`
reporter: 'project-reporter', // `project-reporter` or `project-files-reporter`
implementation: async (context) => {
@@ -0,0 +1,28 @@
{
"name": "bundle-rule",
"implementation": "/libs/nx-packages/powerpack-conformance/src/executors/bundle-rule/executor.ts",
"schema": {
"$schema": "https://json-schema.org/schema",
"version": 2,
"title": "BundleNxConformanceRule",
"description": "Compile and bundle an Nx Conformance Rule",
"type": "object",
"properties": {
"main": {
"type": "string",
"description": "The entrypoint file for the rule"
},
"outputPath": {
"type": "string",
"description": "The output path for the bundled rule"
}
},
"required": ["main", "outputPath"],
"presets": []
},
"description": "Compile and bundle an Nx Conformance Rule",
"aliases": [],
"hidden": false,
"path": "/libs/nx-packages/powerpack-conformance/src/executors/bundle-rule/schema.json",
"type": "executor"
}
@@ -0,0 +1,21 @@
{
"name": "init",
"factory": "./src/generators/init/init",
"schema": {
"$schema": "http://json-schema.org/schema",
"id": "NxPowerpackEnterpriseCloudInit",
"title": "Add Powerpack Enterprise Cloud plugin to the workspace",
"type": "object",
"cli": "nx",
"properties": {},
"additionalProperties": false,
"required": [],
"presets": []
},
"description": "Initialize Nx Powerpack Enterprise Cloud config",
"implementation": "/libs/nx-packages/powerpack-enterprise-cloud/src/generators/init/init.ts",
"aliases": [],
"hidden": false,
"path": "/libs/nx-packages/powerpack-enterprise-cloud/src/generators/init/schema.json",
"type": "generator"
}
@@ -0,0 +1,82 @@
---
title: Overview of the Nx powerpack-gcs-cache Plugin
description: The powerpack-gcs-cache Nx plugin enables you to use Google Cloud Storage to host your remote cache instead of Nx Cloud
---
The `@nx/powerpack-gcs-cache` plugin enables you to use [Google Cloud Storage](https://cloud.google.com/storage) instead of Nx Cloud to host your remote cache.
This plugin will enable the remote cache for your Nx workspace, but does not provide any of the other features of Nx Cloud. If you want to leverage [distributed task execution](/ci/features/distribute-task-execution), [re-running flaky tasks](/ci/features/flaky-tasks) or [automatically splitting tasks](/ci/features/split-e2e-tasks), you'll need to [connect to Nx Cloud](/ci/intro/connect-to-nx-cloud) and use [Nx Replay](/ci/features/remote-cache) instead.
{% callout type="warning" title="Potential Cache Poisoning" %}
Using your own Google Cloud Storage account to host the remote cache opens you up to the possibility of [cache poisoning](/troubleshooting/unknown-local-cache). To avoid this, use [Nx Replay](/ci/features/remote-cache).
{% /callout %}
{% callout title="This plugin requires an active Nx Powerpack license" %}
In order to use `@nx/powerpack-gcs-cache`, you need to have an active Powerpack license. If you don't have a license or it has expired, your cache will no longer be shared and each machine will use its local cache.
{% /callout %}
## Set Up @nx/powerpack-gcs-cache
### 1. Install the Package
1. [Activate Powerpack](/nx-enterprise/activate-powerpack) if you haven't already
2. Install the package
```shell
nx add @nx/powerpack-gcs-cache
```
### 2. Authenticate with Google Cloud
There are several ways to [authenticate with Google Cloud Storage](https://github.com/google-github-actions/setup-gcloud#authorization), but the method recommended by Google is to use Workload Identity Federation, like this:
```yaml {% fileName=".github/workflows/ci.yml" %}
name: CI
...
permissions:
id-token: write
...
jobs:
main:
env:
NX_POWERPACK_LICENSE: ${{ secrets.NX_POWERPACK_LICENSE }}
runs-on: ubuntu-latest
steps:
...
- id: 'auth'
name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v2'
with:
token_format: 'access_token'
workload_identity_provider: 'projects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-provider'
service_account: 'my-service-account@my-project.iam.gserviceaccount.com'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v2'
with:
version: '>= 363.0.0'
...
- run: pnpm exec nx affected -t lint test build
```
Note: Any authentication method that [sets up the Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials) will enable the plugin to work.
### 3. Configure the Nx Cache to Use Google Cloud Storage
Finally, you need to configure your Nx cache in the `nx.json` file. The `bucket` that you specify needs to already exist - Nx doesn't create it for you.
```jsonc {% fileName="nx.json" %}
{
"gcs": {
"bucket": "my-bucket"
}
}
```
| **Property** | **Description** |
| ------------ | ----------------------------- |
| **bucket** | The name of the bucket to use |
@@ -13,7 +13,7 @@ In order to use `@nx/powerpack-owners`, you need to have an active Powerpack lic
## Set Up @nx/powerpack-owners
1. [Activate Powerpack](/recipes/installation/activate-powerpack) if you haven't already
1. [Activate Powerpack](/nx-enterprise/activate-powerpack) if you haven't already
2. Install the package
```shell
@@ -19,7 +19,7 @@ In order to use `@nx/powerpack-s3-cache`, you need to have an active Powerpack l
### 1. Install the Package
1. [Activate Powerpack](/recipes/installation/activate-powerpack) if you haven't already
1. [Activate Powerpack](/nx-enterprise/activate-powerpack) if you haven't already
2. Install the package
```shell
@@ -57,11 +57,10 @@ permissions:
id-token: write
...
env:
NX_DB_CACHE: true
jobs:
main:
env:
NX_POWERPACK_LICENSE: ${{ secrets.NX_POWERPACK_LICENSE }}
runs-on: ubuntu-latest
steps:
...
@@ -19,7 +19,7 @@ In order to use `@nx/powerpack-shared-fs-cache`, you need to have an active Powe
### 1. Install the Package
1. [Activate Powerpack](/recipes/installation/activate-powerpack) if you haven't already
1. [Activate Powerpack](/nx-enterprise/activate-powerpack) if you haven't already
2. Install the package
```shell
+2 -2
View File
@@ -10,7 +10,7 @@ description: 'Executes any command as if it was a target on the project'
## Usage
In package.json, adding a script with `nx exec` will run the command as if it is a target that project:
In package.json, adding a script with `nx exec` will run the command as if it is a target on that project:
```json
{
@@ -37,7 +37,7 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
## Examples
You can use `npm run <command>` for a project and leverage the caching by wrap your command with `nx exec`.
You can use `npm run <command>` for a project and leverage the caching by wrapping your command with `nx exec`.
For example, you can run `npm run docs` as a Nx target for `myorg`:
+14 -13
View File
@@ -17,16 +17,17 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
## Options
| Option | Type | Description |
| ----------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `--all` | boolean | Format all projects. |
| `--base` | string | Base of the current branch (usually main). |
| `--exclude` | string | Exclude certain projects from being processed. |
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
| `--head` | string | Latest commit of the current branch (usually HEAD). |
| `--help` | boolean | Show help. |
| `--libs-and-apps` | boolean | Format only libraries and applications files. |
| `--projects` | string | Projects to format (comma/space delimited). |
| `--uncommitted` | boolean | Uncommitted changes. |
| `--untracked` | boolean | Untracked changes. |
| `--version` | boolean | Show version number. |
| Option | Type | Description |
| ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--all` | boolean | Format all projects. |
| `--base` | string | Base of the current branch (usually main). |
| `--exclude` | string | Exclude certain projects from being processed. |
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
| `--head` | string | Latest commit of the current branch (usually HEAD). |
| `--help` | boolean | Show help. |
| `--libs-and-apps` | boolean | Format only libraries and applications files. |
| `--projects` | string | Projects to format (comma/space delimited). |
| `--sort-root-tsconfig-paths` | boolean | Ensure the workspace's tsconfig compilerOptions.paths are sorted. Warning: This will cause comments in the tsconfig to be lost. (Default: `true`) |
| `--uncommitted` | boolean | Uncommitted changes. |
| `--untracked` | boolean | Untracked changes. |
| `--version` | boolean | Show version number. |
+14 -13
View File
@@ -17,16 +17,17 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
## Options
| Option | Type | Description |
| ----------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `--all` | boolean | Format all projects. |
| `--base` | string | Base of the current branch (usually main). |
| `--exclude` | string | Exclude certain projects from being processed. |
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
| `--head` | string | Latest commit of the current branch (usually HEAD). |
| `--help` | boolean | Show help. |
| `--libs-and-apps` | boolean | Format only libraries and applications files. |
| `--projects` | string | Projects to format (comma/space delimited). |
| `--uncommitted` | boolean | Uncommitted changes. |
| `--untracked` | boolean | Untracked changes. |
| `--version` | boolean | Show version number. |
| Option | Type | Description |
| ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--all` | boolean | Format all projects. |
| `--base` | string | Base of the current branch (usually main). |
| `--exclude` | string | Exclude certain projects from being processed. |
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
| `--head` | string | Latest commit of the current branch (usually HEAD). |
| `--help` | boolean | Show help. |
| `--libs-and-apps` | boolean | Format only libraries and applications files. |
| `--projects` | string | Projects to format (comma/space delimited). |
| `--sort-root-tsconfig-paths` | boolean | Ensure the workspace's tsconfig compilerOptions.paths are sorted. Warning: This will cause comments in the tsconfig to be lost. (Default: `true`) |
| `--uncommitted` | boolean | Uncommitted changes. |
| `--untracked` | boolean | Untracked changes. |
| `--version` | boolean | Show version number. |
+6 -4
View File
@@ -1,14 +1,16 @@
# Function: formatFiles
**formatFiles**(`tree`): `Promise`\<`void`\>
**formatFiles**(`tree`, `options?`): `Promise`\<`void`\>
Formats all the created or updated files using Prettier
#### Parameters
| Name | Type | Description |
| :----- | :------------------------------------ | :------------------- |
| `tree` | [`Tree`](../../devkit/documents/Tree) | the file system tree |
| Name | Type | Description |
| :------------------------------ | :------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tree` | [`Tree`](../../devkit/documents/Tree) | the file system tree |
| `options?` | `Object` | - |
| `options.sortRootTsconfigPaths` | `boolean` | TODO(v21): Stop sorting tsconfig paths by default, paths are now less common/important in Nx workspace setups, and the sorting causes comments to be lost. |
#### Returns
+85 -217
View File
@@ -682,54 +682,32 @@
"file": "",
"itemList": [
{
"id": "on-premise",
"name": "On-Premise",
"id": "single-tenant",
"name": "Single Tenant",
"description": "Manage an on-premise installation of Nx Cloud",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "on-premise",
"name": "Set up Nx Cloud On-Premise",
"description": "Set up Nx Cloud on machines that you control",
"mediaImage": "",
"file": "nx-cloud/features/nx-enterprise-on-prem",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/on-premise",
"tags": ["on-premise"]
},
{
"id": "auth-single-admin",
"name": "Authenticate with a Single Admin",
"id": "overview",
"name": "Single Tenant Nx Cloud Hosting",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin",
"file": "nx-cloud/enterprise/single-tenant/overview",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"tags": []
"path": "/ci/recipes/enterprise/single-tenant/overview",
"tags": ["single-tenant"]
},
{
"id": "auth-github",
"name": "Authenticate with GitHub",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-github",
"file": "nx-cloud/enterprise/single-tenant/auth-github",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"tags": []
},
{
"id": "ami-setup",
"name": "On-Prem VM Setup",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/ami-setup",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/single-tenant/auth-github",
"tags": []
},
{
@@ -737,10 +715,10 @@
"name": "Authenticate with GitLab",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab",
"file": "nx-cloud/enterprise/single-tenant/auth-gitlab",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/single-tenant/auth-gitlab",
"tags": []
},
{
@@ -748,10 +726,10 @@
"name": "Authenticate with BitBucket",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket",
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket",
"tags": []
},
{
@@ -759,10 +737,10 @@
"name": "Authenticate with BitBucket Data Center",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket-data-center",
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket-data-center",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center",
"tags": []
},
{
@@ -770,21 +748,10 @@
"name": "Authenticate via SAML",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-saml",
"file": "nx-cloud/enterprise/single-tenant/auth-saml",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"tags": []
},
{
"id": "advanced-config",
"name": "Advanced Configuration",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/advanced-config",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/single-tenant/auth-saml",
"tags": []
},
{
@@ -792,15 +759,15 @@
"name": "Custom GitHub App",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/custom-github-app",
"file": "nx-cloud/enterprise/single-tenant/custom-github-app",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/custom-github-app",
"path": "/ci/recipes/enterprise/single-tenant/custom-github-app",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise",
"path": "/ci/recipes/enterprise/single-tenant",
"tags": []
},
{
@@ -1277,54 +1244,32 @@
"file": "",
"itemList": [
{
"id": "on-premise",
"name": "On-Premise",
"id": "single-tenant",
"name": "Single Tenant",
"description": "Manage an on-premise installation of Nx Cloud",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "on-premise",
"name": "Set up Nx Cloud On-Premise",
"description": "Set up Nx Cloud on machines that you control",
"mediaImage": "",
"file": "nx-cloud/features/nx-enterprise-on-prem",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/on-premise",
"tags": ["on-premise"]
},
{
"id": "auth-single-admin",
"name": "Authenticate with a Single Admin",
"id": "overview",
"name": "Single Tenant Nx Cloud Hosting",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin",
"file": "nx-cloud/enterprise/single-tenant/overview",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"tags": []
"path": "/ci/recipes/enterprise/single-tenant/overview",
"tags": ["single-tenant"]
},
{
"id": "auth-github",
"name": "Authenticate with GitHub",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-github",
"file": "nx-cloud/enterprise/single-tenant/auth-github",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"tags": []
},
{
"id": "ami-setup",
"name": "On-Prem VM Setup",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/ami-setup",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/single-tenant/auth-github",
"tags": []
},
{
@@ -1332,10 +1277,10 @@
"name": "Authenticate with GitLab",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab",
"file": "nx-cloud/enterprise/single-tenant/auth-gitlab",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/single-tenant/auth-gitlab",
"tags": []
},
{
@@ -1343,10 +1288,10 @@
"name": "Authenticate with BitBucket",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket",
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket",
"tags": []
},
{
@@ -1354,10 +1299,10 @@
"name": "Authenticate with BitBucket Data Center",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket-data-center",
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket-data-center",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center",
"tags": []
},
{
@@ -1365,21 +1310,10 @@
"name": "Authenticate via SAML",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-saml",
"file": "nx-cloud/enterprise/single-tenant/auth-saml",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"tags": []
},
{
"id": "advanced-config",
"name": "Advanced Configuration",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/advanced-config",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/single-tenant/auth-saml",
"tags": []
},
{
@@ -1387,15 +1321,15 @@
"name": "Custom GitHub App",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/custom-github-app",
"file": "nx-cloud/enterprise/single-tenant/custom-github-app",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/custom-github-app",
"path": "/ci/recipes/enterprise/single-tenant/custom-github-app",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise",
"path": "/ci/recipes/enterprise/single-tenant",
"tags": []
},
{
@@ -1481,55 +1415,33 @@
"path": "/ci/recipes/enterprise",
"tags": []
},
"/ci/recipes/enterprise/on-premise": {
"id": "on-premise",
"name": "On-Premise",
"/ci/recipes/enterprise/single-tenant": {
"id": "single-tenant",
"name": "Single Tenant",
"description": "Manage an on-premise installation of Nx Cloud",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "on-premise",
"name": "Set up Nx Cloud On-Premise",
"description": "Set up Nx Cloud on machines that you control",
"mediaImage": "",
"file": "nx-cloud/features/nx-enterprise-on-prem",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/on-premise",
"tags": ["on-premise"]
},
{
"id": "auth-single-admin",
"name": "Authenticate with a Single Admin",
"id": "overview",
"name": "Single Tenant Nx Cloud Hosting",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin",
"file": "nx-cloud/enterprise/single-tenant/overview",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"tags": []
"path": "/ci/recipes/enterprise/single-tenant/overview",
"tags": ["single-tenant"]
},
{
"id": "auth-github",
"name": "Authenticate with GitHub",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-github",
"file": "nx-cloud/enterprise/single-tenant/auth-github",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"tags": []
},
{
"id": "ami-setup",
"name": "On-Prem VM Setup",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/ami-setup",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/single-tenant/auth-github",
"tags": []
},
{
@@ -1537,10 +1449,10 @@
"name": "Authenticate with GitLab",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab",
"file": "nx-cloud/enterprise/single-tenant/auth-gitlab",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/single-tenant/auth-gitlab",
"tags": []
},
{
@@ -1548,10 +1460,10 @@
"name": "Authenticate with BitBucket",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket",
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket",
"tags": []
},
{
@@ -1559,10 +1471,10 @@
"name": "Authenticate with BitBucket Data Center",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket-data-center",
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket-data-center",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center",
"tags": []
},
{
@@ -1570,21 +1482,10 @@
"name": "Authenticate via SAML",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-saml",
"file": "nx-cloud/enterprise/single-tenant/auth-saml",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"tags": []
},
{
"id": "advanced-config",
"name": "Advanced Configuration",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/advanced-config",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/single-tenant/auth-saml",
"tags": []
},
{
@@ -1592,125 +1493,92 @@
"name": "Custom GitHub App",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/custom-github-app",
"file": "nx-cloud/enterprise/single-tenant/custom-github-app",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/custom-github-app",
"path": "/ci/recipes/enterprise/single-tenant/custom-github-app",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise",
"path": "/ci/recipes/enterprise/single-tenant",
"tags": []
},
"/ci/recipes/enterprise/on-premise/on-premise": {
"id": "on-premise",
"name": "Set up Nx Cloud On-Premise",
"description": "Set up Nx Cloud on machines that you control",
"mediaImage": "",
"file": "nx-cloud/features/nx-enterprise-on-prem",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/on-premise",
"tags": ["on-premise"]
},
"/ci/recipes/enterprise/on-premise/auth-single-admin": {
"id": "auth-single-admin",
"name": "Authenticate with a Single Admin",
"/ci/recipes/enterprise/single-tenant/overview": {
"id": "overview",
"name": "Single Tenant Nx Cloud Hosting",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin",
"file": "nx-cloud/enterprise/single-tenant/overview",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"tags": []
"path": "/ci/recipes/enterprise/single-tenant/overview",
"tags": ["single-tenant"]
},
"/ci/recipes/enterprise/on-premise/auth-github": {
"/ci/recipes/enterprise/single-tenant/auth-github": {
"id": "auth-github",
"name": "Authenticate with GitHub",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-github",
"file": "nx-cloud/enterprise/single-tenant/auth-github",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"path": "/ci/recipes/enterprise/single-tenant/auth-github",
"tags": []
},
"/ci/recipes/enterprise/on-premise/ami-setup": {
"id": "ami-setup",
"name": "On-Prem VM Setup",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/ami-setup",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-gitlab": {
"/ci/recipes/enterprise/single-tenant/auth-gitlab": {
"id": "auth-gitlab",
"name": "Authenticate with GitLab",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab",
"file": "nx-cloud/enterprise/single-tenant/auth-gitlab",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/single-tenant/auth-gitlab",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-bitbucket": {
"/ci/recipes/enterprise/single-tenant/auth-bitbucket": {
"id": "auth-bitbucket",
"name": "Authenticate with BitBucket",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket",
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center": {
"/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center": {
"id": "auth-bitbucket-data-center",
"name": "Authenticate with BitBucket Data Center",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket-data-center",
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket-data-center",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-saml": {
"/ci/recipes/enterprise/single-tenant/auth-saml": {
"id": "auth-saml",
"name": "Authenticate via SAML",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-saml",
"file": "nx-cloud/enterprise/single-tenant/auth-saml",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/single-tenant/auth-saml",
"tags": []
},
"/ci/recipes/enterprise/on-premise/advanced-config": {
"id": "advanced-config",
"name": "Advanced Configuration",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/advanced-config",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"tags": []
},
"/ci/recipes/enterprise/on-premise/custom-github-app": {
"/ci/recipes/enterprise/single-tenant/custom-github-app": {
"id": "custom-github-app",
"name": "Custom GitHub App",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/custom-github-app",
"file": "nx-cloud/enterprise/single-tenant/custom-github-app",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/custom-github-app",
"path": "/ci/recipes/enterprise/single-tenant/custom-github-app",
"tags": []
},
"/ci/recipes/enterprise/dte": {
+287 -263
View File
@@ -323,39 +323,6 @@
"children": [],
"disableCollapsible": false
},
{
"name": "Powerpack Features",
"path": "/features/powerpack",
"id": "powerpack",
"isExternal": false,
"children": [
{
"name": "Run Language-Agnostic Conformance Rules",
"path": "/features/powerpack/conformance",
"id": "conformance",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Define Code Ownership at the Project Level",
"path": "/features/powerpack/owners",
"id": "owners",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Self-Host the Remote Cache",
"path": "/features/powerpack/custom-caching",
"id": "custom-caching",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
},
{
"name": "CI Features",
"path": "/features/ci-features",
@@ -472,63 +439,6 @@
"children": [],
"disableCollapsible": false
},
{
"name": "Powerpack Features",
"path": "/features/powerpack",
"id": "powerpack",
"isExternal": false,
"children": [
{
"name": "Run Language-Agnostic Conformance Rules",
"path": "/features/powerpack/conformance",
"id": "conformance",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Define Code Ownership at the Project Level",
"path": "/features/powerpack/owners",
"id": "owners",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Self-Host the Remote Cache",
"path": "/features/powerpack/custom-caching",
"id": "custom-caching",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
},
{
"name": "Run Language-Agnostic Conformance Rules",
"path": "/features/powerpack/conformance",
"id": "conformance",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Define Code Ownership at the Project Level",
"path": "/features/powerpack/owners",
"id": "owners",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Self-Host the Remote Cache",
"path": "/features/powerpack/custom-caching",
"id": "custom-caching",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "CI Features",
"path": "/features/ci-features",
@@ -1155,14 +1065,6 @@
"id": "installation",
"isExternal": false,
"children": [
{
"name": "Activate Powerpack",
"path": "/recipes/installation/activate-powerpack",
"id": "activate-powerpack",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Install Nx in a Non-Javascript Repo",
"path": "/recipes/installation/install-non-javascript",
@@ -2131,6 +2033,14 @@
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Configuring Version Prefix for Dependency Versions",
"path": "/recipes/nx-release/configuration-version-prefix",
"id": "configuration-version-prefix",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
@@ -2144,14 +2054,6 @@
"id": "installation",
"isExternal": false,
"children": [
{
"name": "Activate Powerpack",
"path": "/recipes/installation/activate-powerpack",
"id": "activate-powerpack",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Install Nx in a Non-Javascript Repo",
"path": "/recipes/installation/install-non-javascript",
@@ -2171,14 +2073,6 @@
],
"disableCollapsible": false
},
{
"name": "Activate Powerpack",
"path": "/recipes/installation/activate-powerpack",
"id": "activate-powerpack",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Install Nx in a Non-Javascript Repo",
"path": "/recipes/installation/install-non-javascript",
@@ -3865,6 +3759,14 @@
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Configuring Version Prefix for Dependency Versions",
"path": "/recipes/nx-release/configuration-version-prefix",
"id": "configuration-version-prefix",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
@@ -3973,6 +3875,129 @@
"children": [],
"disableCollapsible": false
},
{
"name": "Configuring Version Prefix for Dependency Versions",
"path": "/recipes/nx-release/configuration-version-prefix",
"id": "configuration-version-prefix",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Enterprise",
"path": "/nx-enterprise",
"id": "nx-enterprise",
"isExternal": false,
"children": [
{
"name": "Activate Powerpack",
"path": "/nx-enterprise/activate-powerpack",
"id": "activate-powerpack",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Powerpack Features",
"path": "/nx-enterprise/powerpack",
"id": "powerpack",
"isExternal": false,
"children": [
{
"name": "Run Language-Agnostic Conformance Rules",
"path": "/nx-enterprise/powerpack/conformance",
"id": "conformance",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Define Code Ownership at the Project Level",
"path": "/nx-enterprise/powerpack/owners",
"id": "owners",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Self-Host the Remote Cache",
"path": "/nx-enterprise/powerpack/custom-caching",
"id": "custom-caching",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
}
],
"disableCollapsible": false
},
{
"name": "Activate Powerpack",
"path": "/nx-enterprise/activate-powerpack",
"id": "activate-powerpack",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Powerpack Features",
"path": "/nx-enterprise/powerpack",
"id": "powerpack",
"isExternal": false,
"children": [
{
"name": "Run Language-Agnostic Conformance Rules",
"path": "/nx-enterprise/powerpack/conformance",
"id": "conformance",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Define Code Ownership at the Project Level",
"path": "/nx-enterprise/powerpack/owners",
"id": "owners",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Self-Host the Remote Cache",
"path": "/nx-enterprise/powerpack/custom-caching",
"id": "custom-caching",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
},
{
"name": "Run Language-Agnostic Conformance Rules",
"path": "/nx-enterprise/powerpack/conformance",
"id": "conformance",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Define Code Ownership at the Project Level",
"path": "/nx-enterprise/powerpack/owners",
"id": "owners",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Self-Host the Remote Cache",
"path": "/nx-enterprise/powerpack/custom-caching",
"id": "custom-caching",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Showcase",
"path": "/showcase",
@@ -5896,46 +5921,30 @@
"isExternal": false,
"children": [
{
"name": "On-Premise",
"path": "/ci/recipes/enterprise/on-premise",
"id": "on-premise",
"name": "Single Tenant",
"path": "/ci/recipes/enterprise/single-tenant",
"id": "single-tenant",
"isExternal": false,
"children": [
{
"name": "Set up Nx Cloud On-Premise",
"path": "/ci/recipes/enterprise/on-premise/on-premise",
"id": "on-premise",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with a Single Admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"id": "auth-single-admin",
"name": "Single Tenant Nx Cloud Hosting",
"path": "/ci/recipes/enterprise/single-tenant/overview",
"id": "overview",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitHub",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"path": "/ci/recipes/enterprise/single-tenant/auth-github",
"id": "auth-github",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "On-Prem VM Setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"id": "ami-setup",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitLab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/single-tenant/auth-gitlab",
"id": "auth-gitlab",
"isExternal": false,
"children": [],
@@ -5943,7 +5952,7 @@
},
{
"name": "Authenticate with BitBucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket",
"id": "auth-bitbucket",
"isExternal": false,
"children": [],
@@ -5951,7 +5960,7 @@
},
{
"name": "Authenticate with BitBucket Data Center",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center",
"id": "auth-bitbucket-data-center",
"isExternal": false,
"children": [],
@@ -5959,23 +5968,15 @@
},
{
"name": "Authenticate via SAML",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/single-tenant/auth-saml",
"id": "auth-saml",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Advanced Configuration",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"id": "advanced-config",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Custom GitHub App",
"path": "/ci/recipes/enterprise/on-premise/custom-github-app",
"path": "/ci/recipes/enterprise/single-tenant/custom-github-app",
"id": "custom-github-app",
"isExternal": false,
"children": [],
@@ -6330,46 +6331,30 @@
"isExternal": false,
"children": [
{
"name": "On-Premise",
"path": "/ci/recipes/enterprise/on-premise",
"id": "on-premise",
"name": "Single Tenant",
"path": "/ci/recipes/enterprise/single-tenant",
"id": "single-tenant",
"isExternal": false,
"children": [
{
"name": "Set up Nx Cloud On-Premise",
"path": "/ci/recipes/enterprise/on-premise/on-premise",
"id": "on-premise",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with a Single Admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"id": "auth-single-admin",
"name": "Single Tenant Nx Cloud Hosting",
"path": "/ci/recipes/enterprise/single-tenant/overview",
"id": "overview",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitHub",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"path": "/ci/recipes/enterprise/single-tenant/auth-github",
"id": "auth-github",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "On-Prem VM Setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"id": "ami-setup",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitLab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/single-tenant/auth-gitlab",
"id": "auth-gitlab",
"isExternal": false,
"children": [],
@@ -6377,7 +6362,7 @@
},
{
"name": "Authenticate with BitBucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket",
"id": "auth-bitbucket",
"isExternal": false,
"children": [],
@@ -6385,7 +6370,7 @@
},
{
"name": "Authenticate with BitBucket Data Center",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center",
"id": "auth-bitbucket-data-center",
"isExternal": false,
"children": [],
@@ -6393,23 +6378,15 @@
},
{
"name": "Authenticate via SAML",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/single-tenant/auth-saml",
"id": "auth-saml",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Advanced Configuration",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"id": "advanced-config",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Custom GitHub App",
"path": "/ci/recipes/enterprise/on-premise/custom-github-app",
"path": "/ci/recipes/enterprise/single-tenant/custom-github-app",
"id": "custom-github-app",
"isExternal": false,
"children": [],
@@ -6479,46 +6456,30 @@
"disableCollapsible": false
},
{
"name": "On-Premise",
"path": "/ci/recipes/enterprise/on-premise",
"id": "on-premise",
"name": "Single Tenant",
"path": "/ci/recipes/enterprise/single-tenant",
"id": "single-tenant",
"isExternal": false,
"children": [
{
"name": "Set up Nx Cloud On-Premise",
"path": "/ci/recipes/enterprise/on-premise/on-premise",
"id": "on-premise",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with a Single Admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"id": "auth-single-admin",
"name": "Single Tenant Nx Cloud Hosting",
"path": "/ci/recipes/enterprise/single-tenant/overview",
"id": "overview",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitHub",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"path": "/ci/recipes/enterprise/single-tenant/auth-github",
"id": "auth-github",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "On-Prem VM Setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"id": "ami-setup",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitLab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/single-tenant/auth-gitlab",
"id": "auth-gitlab",
"isExternal": false,
"children": [],
@@ -6526,7 +6487,7 @@
},
{
"name": "Authenticate with BitBucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket",
"id": "auth-bitbucket",
"isExternal": false,
"children": [],
@@ -6534,7 +6495,7 @@
},
{
"name": "Authenticate with BitBucket Data Center",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center",
"id": "auth-bitbucket-data-center",
"isExternal": false,
"children": [],
@@ -6542,23 +6503,15 @@
},
{
"name": "Authenticate via SAML",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/single-tenant/auth-saml",
"id": "auth-saml",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Advanced Configuration",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"id": "advanced-config",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Custom GitHub App",
"path": "/ci/recipes/enterprise/on-premise/custom-github-app",
"path": "/ci/recipes/enterprise/single-tenant/custom-github-app",
"id": "custom-github-app",
"isExternal": false,
"children": [],
@@ -6568,40 +6521,24 @@
"disableCollapsible": false
},
{
"name": "Set up Nx Cloud On-Premise",
"path": "/ci/recipes/enterprise/on-premise/on-premise",
"id": "on-premise",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with a Single Admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"id": "auth-single-admin",
"name": "Single Tenant Nx Cloud Hosting",
"path": "/ci/recipes/enterprise/single-tenant/overview",
"id": "overview",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitHub",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"path": "/ci/recipes/enterprise/single-tenant/auth-github",
"id": "auth-github",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "On-Prem VM Setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"id": "ami-setup",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitLab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/single-tenant/auth-gitlab",
"id": "auth-gitlab",
"isExternal": false,
"children": [],
@@ -6609,7 +6546,7 @@
},
{
"name": "Authenticate with BitBucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket",
"id": "auth-bitbucket",
"isExternal": false,
"children": [],
@@ -6617,7 +6554,7 @@
},
{
"name": "Authenticate with BitBucket Data Center",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center",
"path": "/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center",
"id": "auth-bitbucket-data-center",
"isExternal": false,
"children": [],
@@ -6625,23 +6562,15 @@
},
{
"name": "Authenticate via SAML",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/single-tenant/auth-saml",
"id": "auth-saml",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Advanced Configuration",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"id": "advanced-config",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Custom GitHub App",
"path": "/ci/recipes/enterprise/on-premise/custom-github-app",
"path": "/ci/recipes/enterprise/single-tenant/custom-github-app",
"id": "custom-github-app",
"isExternal": false,
"children": [],
@@ -8495,14 +8424,6 @@
"children": [],
"isExternal": false,
"disableCollapsible": false
},
{
"id": "export",
"path": "/nx-api/next/executors/export",
"name": "export",
"children": [],
"isExternal": false,
"disableCollapsible": false
}
],
"isExternal": false,
@@ -9940,6 +9861,14 @@
"children": [],
"isExternal": false,
"disableCollapsible": false
},
{
"id": "convert-webpack",
"path": "/nx-api/rspack/generators/convert-webpack",
"name": "convert-webpack",
"children": [],
"isExternal": false,
"disableCollapsible": false
}
],
"isExternal": false,
@@ -10596,6 +10525,32 @@
"isExternal": false,
"disableCollapsible": false
},
{
"id": "powerpack-azure-cache",
"path": "/nx-api/powerpack-azure-cache",
"name": "powerpack-azure-cache",
"children": [
{
"id": "documents",
"path": "/nx-api/powerpack-azure-cache/documents",
"name": "documents",
"children": [
{
"name": "Overview",
"path": "/nx-api/powerpack-azure-cache/documents/overview",
"id": "overview",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"isExternal": false,
"disableCollapsible": false
}
],
"isExternal": false,
"disableCollapsible": false
},
{
"id": "powerpack-conformance",
"path": "/nx-api/powerpack-conformance",
@@ -10617,6 +10572,75 @@
],
"isExternal": false,
"disableCollapsible": false
},
{
"id": "executors",
"path": "/nx-api/powerpack-conformance/executors",
"name": "executors",
"children": [
{
"id": "bundle-rule",
"path": "/nx-api/powerpack-conformance/executors/bundle-rule",
"name": "bundle-rule",
"children": [],
"isExternal": false,
"disableCollapsible": false
}
],
"isExternal": false,
"disableCollapsible": false
}
],
"isExternal": false,
"disableCollapsible": false
},
{
"id": "powerpack-enterprise-cloud",
"path": "/nx-api/powerpack-enterprise-cloud",
"name": "powerpack-enterprise-cloud",
"children": [
{
"id": "generators",
"path": "/nx-api/powerpack-enterprise-cloud/generators",
"name": "generators",
"children": [
{
"id": "init",
"path": "/nx-api/powerpack-enterprise-cloud/generators/init",
"name": "init",
"children": [],
"isExternal": false,
"disableCollapsible": false
}
],
"isExternal": false,
"disableCollapsible": false
}
],
"isExternal": false,
"disableCollapsible": false
},
{
"id": "powerpack-gcs-cache",
"path": "/nx-api/powerpack-gcs-cache",
"name": "powerpack-gcs-cache",
"children": [
{
"id": "documents",
"path": "/nx-api/powerpack-gcs-cache/documents",
"name": "documents",
"children": [
{
"name": "Overview",
"path": "/nx-api/powerpack-gcs-cache/documents/overview",
"id": "overview",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"isExternal": false,
"disableCollapsible": false
}
],
"isExternal": false,
+90 -10
View File
@@ -1531,15 +1531,6 @@
"originalFilePath": "/packages/next/src/executors/server/schema.json",
"path": "/nx-api/next/executors/server",
"type": "executor"
},
"/nx-api/next/executors/export": {
"description": "Export a Next.js application. The exported application is located at `dist/$outputPath/exported`.",
"file": "generated/packages/next/executors/export.json",
"hidden": false,
"name": "export",
"originalFilePath": "/packages/next/src/executors/export/schema.json",
"path": "/nx-api/next/executors/export",
"type": "executor"
}
},
"generators": {
@@ -3000,6 +2991,15 @@
"originalFilePath": "/packages/rspack/src/generators/application/schema.json",
"path": "/nx-api/rspack/generators/application",
"type": "generator"
},
"/nx-api/rspack/generators/convert-webpack": {
"description": "Convert a webpack application to use rspack.",
"file": "generated/packages/rspack/generators/convert-webpack.json",
"hidden": false,
"name": "convert-webpack",
"originalFilePath": "/packages/rspack/src/generators/convert-webpack/schema.json",
"path": "/nx-api/rspack/generators/convert-webpack",
"type": "generator"
}
},
"path": "/nx-api/rspack"
@@ -3606,6 +3606,30 @@
},
"path": "/nx-api/workspace"
},
"powerpack-azure-cache": {
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-azure-cache",
"packageName": "@nx/powerpack-azure-cache",
"description": "A Nx Powerpack plugin which provides a Nx cache which can be self hosted on Azure Blob Storage.",
"documents": {
"/nx-api/powerpack-azure-cache/documents/overview": {
"id": "overview",
"name": "Overview",
"description": "A Nx Powerpack plugin which provides a Nx cache which can be self hosted on Azure Blob Storage.",
"file": "external-generated/packages/powerpack-azure-cache/documents/overview",
"itemList": [],
"isExternal": false,
"path": "/nx-api/powerpack-azure-cache/documents/overview",
"tags": [],
"originalFilePath": "shared/packages/powerpack-azure-cache/powerpack-azure-cache-plugin"
}
},
"root": "/libs/nx-packages/powerpack-azure-cache",
"source": "/libs/nx-packages/powerpack-azure-cache/src",
"executors": {},
"generators": {},
"path": "/nx-api/powerpack-azure-cache"
},
"powerpack-conformance": {
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-conformance",
@@ -3626,10 +3650,66 @@
},
"root": "/libs/nx-packages/powerpack-conformance",
"source": "/libs/nx-packages/powerpack-conformance/src",
"executors": {},
"executors": {
"/nx-api/powerpack-conformance/executors/bundle-rule": {
"description": "Compile and bundle an Nx Conformance Rule",
"file": "external-generated/packages/powerpack-conformance/executors/bundle-rule.json",
"hidden": false,
"name": "bundle-rule",
"originalFilePath": "/libs/nx-packages/powerpack-conformance/src/executors/bundle-rule/schema.json",
"path": "/nx-api/powerpack-conformance/executors/bundle-rule",
"type": "executor"
}
},
"generators": {},
"path": "/nx-api/powerpack-conformance"
},
"powerpack-enterprise-cloud": {
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-enterprise-cloud",
"packageName": "@nx/powerpack-enterprise-cloud",
"description": "A Nx Powerpack plugin which is specific to Nx Enterprise Cloud workspaces.",
"documents": {},
"root": "/libs/nx-packages/powerpack-enterprise-cloud",
"source": "/libs/nx-packages/powerpack-enterprise-cloud/src",
"executors": {},
"generators": {
"/nx-api/powerpack-enterprise-cloud/generators/init": {
"description": "Initialize Nx Powerpack Enterprise Cloud config",
"file": "external-generated/packages/powerpack-enterprise-cloud/generators/init.json",
"hidden": false,
"name": "init",
"originalFilePath": "/libs/nx-packages/powerpack-enterprise-cloud/src/generators/init/schema.json",
"path": "/nx-api/powerpack-enterprise-cloud/generators/init",
"type": "generator"
}
},
"path": "/nx-api/powerpack-enterprise-cloud"
},
"powerpack-gcs-cache": {
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-gcs-cache",
"packageName": "@nx/powerpack-gcs-cache",
"description": "A Nx Powerpack plugin which provides a Nx cache which can be self hosted on Google Cloud Storage.",
"documents": {
"/nx-api/powerpack-gcs-cache/documents/overview": {
"id": "overview",
"name": "Overview",
"description": "A Nx Powerpack plugin which provides a Nx cache which can be self hosted on Google Cloud Storage.",
"file": "external-generated/packages/powerpack-gcs-cache/documents/overview",
"itemList": [],
"isExternal": false,
"path": "/nx-api/powerpack-gcs-cache/documents/overview",
"tags": [],
"originalFilePath": "shared/packages/powerpack-gcs-cache/powerpack-gcs-cache-plugin"
}
},
"root": "/libs/nx-packages/powerpack-gcs-cache",
"source": "/libs/nx-packages/powerpack-gcs-cache/src",
"executors": {},
"generators": {},
"path": "/nx-api/powerpack-gcs-cache"
},
"powerpack-license": {
"githubRoot": "https://github.com/nrwl/nx/blob/master",
"name": "powerpack-license",
+190 -156
View File
@@ -438,51 +438,6 @@
"path": "/features/manage-releases",
"tags": ["nx-release"]
},
{
"id": "powerpack",
"name": "Powerpack Features",
"description": "Nx Powerpack is a suite of paid extensions for the Nx CLI specifically designed for enterprises.",
"mediaImage": "",
"file": "shared/features/powerpack/index",
"itemList": [
{
"id": "conformance",
"name": "Run Language-Agnostic Conformance Rules",
"description": "Write and apply rules for your Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/conformance",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/conformance",
"tags": ["conformance"]
},
{
"id": "owners",
"name": "Define Code Ownership at the Project Level",
"description": "Configure and maintain code owners for projects in an Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/owners",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/owners",
"tags": ["owners"]
},
{
"id": "custom-caching",
"name": "Self-Host the Remote Cache",
"description": "Host the remote cache without using Nx Cloud",
"mediaImage": "",
"file": "shared/features/powerpack/custom-caching",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/custom-caching",
"tags": ["custom-caching"]
}
],
"isExternal": false,
"path": "/features/powerpack",
"tags": []
},
{
"id": "ci-features",
"name": "CI Features",
@@ -643,84 +598,6 @@
"path": "/features/manage-releases",
"tags": ["nx-release"]
},
"/features/powerpack": {
"id": "powerpack",
"name": "Powerpack Features",
"description": "Nx Powerpack is a suite of paid extensions for the Nx CLI specifically designed for enterprises.",
"mediaImage": "",
"file": "shared/features/powerpack/index",
"itemList": [
{
"id": "conformance",
"name": "Run Language-Agnostic Conformance Rules",
"description": "Write and apply rules for your Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/conformance",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/conformance",
"tags": ["conformance"]
},
{
"id": "owners",
"name": "Define Code Ownership at the Project Level",
"description": "Configure and maintain code owners for projects in an Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/owners",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/owners",
"tags": ["owners"]
},
{
"id": "custom-caching",
"name": "Self-Host the Remote Cache",
"description": "Host the remote cache without using Nx Cloud",
"mediaImage": "",
"file": "shared/features/powerpack/custom-caching",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/custom-caching",
"tags": ["custom-caching"]
}
],
"isExternal": false,
"path": "/features/powerpack",
"tags": []
},
"/features/powerpack/conformance": {
"id": "conformance",
"name": "Run Language-Agnostic Conformance Rules",
"description": "Write and apply rules for your Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/conformance",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/conformance",
"tags": ["conformance"]
},
"/features/powerpack/owners": {
"id": "owners",
"name": "Define Code Ownership at the Project Level",
"description": "Configure and maintain code owners for projects in an Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/owners",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/owners",
"tags": ["owners"]
},
"/features/powerpack/custom-caching": {
"id": "custom-caching",
"name": "Self-Host the Remote Cache",
"description": "Host the remote cache without using Nx Cloud",
"mediaImage": "",
"file": "shared/features/powerpack/custom-caching",
"itemList": [],
"isExternal": false,
"path": "/features/powerpack/custom-caching",
"tags": ["custom-caching"]
},
"/features/ci-features": {
"id": "ci-features",
"name": "CI Features",
@@ -1577,17 +1454,6 @@
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "activate-powerpack",
"name": "Activate Powerpack",
"description": "",
"mediaImage": "",
"file": "shared/recipes/installation/activate-powerpack",
"itemList": [],
"isExternal": false,
"path": "/recipes/installation/activate-powerpack",
"tags": ["installation"]
},
{
"id": "install-non-javascript",
"name": "Install Nx in a Non-Javascript Repo",
@@ -2913,6 +2779,17 @@
"isExternal": false,
"path": "/recipes/nx-release/build-before-versioning",
"tags": ["nx-release"]
},
{
"id": "configuration-version-prefix",
"name": "Configuring Version Prefix for Dependency Versions",
"description": "",
"mediaImage": "",
"file": "shared/recipes/nx-release/configuration-version-prefix",
"itemList": [],
"isExternal": false,
"path": "/recipes/nx-release/configuration-version-prefix",
"tags": ["nx-release"]
}
],
"isExternal": false,
@@ -2931,17 +2808,6 @@
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "activate-powerpack",
"name": "Activate Powerpack",
"description": "",
"mediaImage": "",
"file": "shared/recipes/installation/activate-powerpack",
"itemList": [],
"isExternal": false,
"path": "/recipes/installation/activate-powerpack",
"tags": ["installation"]
},
{
"id": "install-non-javascript",
"name": "Install Nx in a Non-Javascript Repo",
@@ -2969,17 +2835,6 @@
"path": "/recipes/installation",
"tags": []
},
"/recipes/installation/activate-powerpack": {
"id": "activate-powerpack",
"name": "Activate Powerpack",
"description": "",
"mediaImage": "",
"file": "shared/recipes/installation/activate-powerpack",
"itemList": [],
"isExternal": false,
"path": "/recipes/installation/activate-powerpack",
"tags": ["installation"]
},
"/recipes/installation/install-non-javascript": {
"id": "install-non-javascript",
"name": "Install Nx in a Non-Javascript Repo",
@@ -5291,6 +5146,17 @@
"isExternal": false,
"path": "/recipes/nx-release/build-before-versioning",
"tags": ["nx-release"]
},
{
"id": "configuration-version-prefix",
"name": "Configuring Version Prefix for Dependency Versions",
"description": "",
"mediaImage": "",
"file": "shared/recipes/nx-release/configuration-version-prefix",
"itemList": [],
"isExternal": false,
"path": "/recipes/nx-release/configuration-version-prefix",
"tags": ["nx-release"]
}
],
"isExternal": false,
@@ -5440,6 +5306,174 @@
"path": "/recipes/nx-release/build-before-versioning",
"tags": ["nx-release"]
},
"/recipes/nx-release/configuration-version-prefix": {
"id": "configuration-version-prefix",
"name": "Configuring Version Prefix for Dependency Versions",
"description": "",
"mediaImage": "",
"file": "shared/recipes/nx-release/configuration-version-prefix",
"itemList": [],
"isExternal": false,
"path": "/recipes/nx-release/configuration-version-prefix",
"tags": ["nx-release"]
},
"/nx-enterprise": {
"id": "nx-enterprise",
"name": "Enterprise",
"description": "Enterprise solutions for the Nx CLI",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "activate-powerpack",
"name": "Activate Powerpack",
"description": "",
"mediaImage": "",
"file": "shared/recipes/installation/activate-powerpack",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/activate-powerpack",
"tags": ["installation"]
},
{
"id": "powerpack",
"name": "Powerpack Features",
"description": "Nx Powerpack is a suite of paid extensions for the Nx CLI specifically designed for enterprises.",
"mediaImage": "",
"file": "shared/features/powerpack/index",
"itemList": [
{
"id": "conformance",
"name": "Run Language-Agnostic Conformance Rules",
"description": "Write and apply rules for your Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/conformance",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/conformance",
"tags": ["conformance"]
},
{
"id": "owners",
"name": "Define Code Ownership at the Project Level",
"description": "Configure and maintain code owners for projects in an Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/owners",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/owners",
"tags": ["owners"]
},
{
"id": "custom-caching",
"name": "Self-Host the Remote Cache",
"description": "Host the remote cache without using Nx Cloud",
"mediaImage": "",
"file": "shared/features/powerpack/custom-caching",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/custom-caching",
"tags": ["custom-caching"]
}
],
"isExternal": false,
"path": "/nx-enterprise/powerpack",
"tags": []
}
],
"isExternal": false,
"path": "/nx-enterprise",
"tags": []
},
"/nx-enterprise/activate-powerpack": {
"id": "activate-powerpack",
"name": "Activate Powerpack",
"description": "",
"mediaImage": "",
"file": "shared/recipes/installation/activate-powerpack",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/activate-powerpack",
"tags": ["installation"]
},
"/nx-enterprise/powerpack": {
"id": "powerpack",
"name": "Powerpack Features",
"description": "Nx Powerpack is a suite of paid extensions for the Nx CLI specifically designed for enterprises.",
"mediaImage": "",
"file": "shared/features/powerpack/index",
"itemList": [
{
"id": "conformance",
"name": "Run Language-Agnostic Conformance Rules",
"description": "Write and apply rules for your Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/conformance",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/conformance",
"tags": ["conformance"]
},
{
"id": "owners",
"name": "Define Code Ownership at the Project Level",
"description": "Configure and maintain code owners for projects in an Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/owners",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/owners",
"tags": ["owners"]
},
{
"id": "custom-caching",
"name": "Self-Host the Remote Cache",
"description": "Host the remote cache without using Nx Cloud",
"mediaImage": "",
"file": "shared/features/powerpack/custom-caching",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/custom-caching",
"tags": ["custom-caching"]
}
],
"isExternal": false,
"path": "/nx-enterprise/powerpack",
"tags": []
},
"/nx-enterprise/powerpack/conformance": {
"id": "conformance",
"name": "Run Language-Agnostic Conformance Rules",
"description": "Write and apply rules for your Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/conformance",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/conformance",
"tags": ["conformance"]
},
"/nx-enterprise/powerpack/owners": {
"id": "owners",
"name": "Define Code Ownership at the Project Level",
"description": "Configure and maintain code owners for projects in an Nx workspace",
"mediaImage": "",
"file": "shared/features/powerpack/owners",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/owners",
"tags": ["owners"]
},
"/nx-enterprise/powerpack/custom-caching": {
"id": "custom-caching",
"name": "Self-Host the Remote Cache",
"description": "Host the remote cache without using Nx Cloud",
"mediaImage": "",
"file": "shared/features/powerpack/custom-caching",
"itemList": [],
"isExternal": false,
"path": "/nx-enterprise/powerpack/custom-caching",
"tags": ["custom-caching"]
},
"/showcase": {
"id": "showcase",
"name": "Showcase",
+47 -40
View File
@@ -567,6 +567,13 @@
"name": "Build Before Versioning",
"path": "/recipes/nx-release/build-before-versioning"
},
{
"description": "",
"file": "shared/recipes/nx-release/configuration-version-prefix",
"id": "configuration-version-prefix",
"name": "Configuring Version Prefix for Dependency Versions",
"path": "/recipes/nx-release/configuration-version-prefix"
},
{
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
"file": "generated/packages/nx/documents/release",
@@ -575,33 +582,6 @@
"path": "/nx-api/nx/documents/release"
}
],
"conformance": [
{
"description": "Write and apply rules for your Nx workspace",
"file": "shared/features/powerpack/conformance",
"id": "conformance",
"name": "Run Language-Agnostic Conformance Rules",
"path": "/features/powerpack/conformance"
}
],
"owners": [
{
"description": "Configure and maintain code owners for projects in an Nx workspace",
"file": "shared/features/powerpack/owners",
"id": "owners",
"name": "Define Code Ownership at the Project Level",
"path": "/features/powerpack/owners"
}
],
"custom-caching": [
{
"description": "Host the remote cache without using Nx Cloud",
"file": "shared/features/powerpack/custom-caching",
"id": "custom-caching",
"name": "Self-Host the Remote Cache",
"path": "/features/powerpack/custom-caching"
}
],
"intro": [
{
"description": "",
@@ -811,13 +791,6 @@
}
],
"installation": [
{
"description": "",
"file": "shared/recipes/installation/activate-powerpack",
"id": "activate-powerpack",
"name": "Activate Powerpack",
"path": "/recipes/installation/activate-powerpack"
},
{
"description": "",
"file": "shared/recipes/installation/install-non-javascript",
@@ -831,6 +804,13 @@
"id": "update-global-installation",
"name": "Update Your Global Nx Installation",
"path": "/recipes/installation/update-global-installation"
},
{
"description": "",
"file": "shared/recipes/installation/activate-powerpack",
"id": "activate-powerpack",
"name": "Activate Powerpack",
"path": "/nx-enterprise/activate-powerpack"
}
],
"workspace-watching": [
@@ -1103,6 +1083,33 @@
"path": "/recipes/tips-n-tricks/flat-config"
}
],
"conformance": [
{
"description": "Write and apply rules for your Nx workspace",
"file": "shared/features/powerpack/conformance",
"id": "conformance",
"name": "Run Language-Agnostic Conformance Rules",
"path": "/nx-enterprise/powerpack/conformance"
}
],
"owners": [
{
"description": "Configure and maintain code owners for projects in an Nx workspace",
"file": "shared/features/powerpack/owners",
"id": "owners",
"name": "Define Code Ownership at the Project Level",
"path": "/nx-enterprise/powerpack/owners"
}
],
"custom-caching": [
{
"description": "Host the remote cache without using Nx Cloud",
"file": "shared/features/powerpack/custom-caching",
"id": "custom-caching",
"name": "Self-Host the Remote Cache",
"path": "/nx-enterprise/powerpack/custom-caching"
}
],
"database": [
{
"description": "",
@@ -1188,13 +1195,13 @@
"path": "/ci/features/remote-cache"
}
],
"on-premise": [
"single-tenant": [
{
"description": "Set up Nx Cloud on machines that you control",
"file": "nx-cloud/features/nx-enterprise-on-prem",
"id": "on-premise",
"name": "Set up Nx Cloud On-Premise",
"path": "/ci/recipes/enterprise/on-premise/on-premise"
"description": "",
"file": "nx-cloud/enterprise/single-tenant/overview",
"id": "overview",
"name": "Single Tenant Nx Cloud Hosting",
"path": "/ci/recipes/enterprise/single-tenant/overview"
}
],
"docker": [
+9 -9
View File
@@ -1511,15 +1511,6 @@
"originalFilePath": "/packages/next/src/executors/server/schema.json",
"path": "next/executors/server",
"type": "executor"
},
{
"description": "Export a Next.js application. The exported application is located at `dist/$outputPath/exported`.",
"file": "generated/packages/next/executors/export.json",
"hidden": false,
"name": "export",
"originalFilePath": "/packages/next/src/executors/export/schema.json",
"path": "next/executors/export",
"type": "executor"
}
],
"generators": [
@@ -2970,6 +2961,15 @@
"originalFilePath": "/packages/rspack/src/generators/application/schema.json",
"path": "rspack/generators/application",
"type": "generator"
},
{
"description": "Convert a webpack application to use rspack.",
"file": "generated/packages/rspack/generators/convert-webpack.json",
"hidden": false,
"name": "convert-webpack",
"originalFilePath": "/packages/rspack/src/generators/convert-webpack/schema.json",
"path": "rspack/generators/convert-webpack",
"type": "generator"
}
],
"githubRoot": "https://github.com/nrwl/nx/blob/master",
@@ -96,8 +96,9 @@
},
"unitTestRunner": {
"type": "string",
"enum": ["jest", "none"],
"enum": ["jest", "vitest", "none"],
"description": "Test runner to use for unit tests.",
"x-prompt": "Which unit test runner would you like to use?",
"default": "jest"
},
"e2eTestRunner": {
@@ -51,8 +51,9 @@
},
"unitTestRunner": {
"type": "string",
"enum": ["jest", "none"],
"enum": ["jest", "vitest", "none"],
"description": "Test runner to use for unit tests of the remote if it needs to be created.",
"x-prompt": "Which unit test runner would you like to use?",
"default": "jest"
},
"e2eTestRunner": {
@@ -105,8 +105,9 @@
},
"unitTestRunner": {
"type": "string",
"enum": ["jest", "none"],
"enum": ["jest", "vitest", "none"],
"description": "Test runner to use for unit tests.",
"x-prompt": "Which unit test runner would you like to use?",
"default": "jest"
},
"e2eTestRunner": {
@@ -88,8 +88,9 @@
},
"unitTestRunner": {
"type": "string",
"enum": ["jest", "none"],
"enum": ["jest", "vitest", "none"],
"description": "Test runner to use for unit tests.",
"x-prompt": "Which unit test runner would you like to use?",
"default": "jest"
},
"importPath": {
@@ -24,7 +24,7 @@
"name": {
"type": "string",
"description": "The name to give to the remote Angular app.",
"pattern": "^[a-zA-Z][^:]*$",
"pattern": "^[a-zA-Z_$][a-zA-Z_$0-9]*$",
"x-priority": "important"
},
"host": {
@@ -99,8 +99,9 @@
},
"unitTestRunner": {
"type": "string",
"enum": ["jest", "none"],
"enum": ["jest", "vitest", "none"],
"description": "Test runner to use for unit tests.",
"x-prompt": "Which unit test runner would you like to use?",
"default": "jest"
},
"e2eTestRunner": {
@@ -43,8 +43,8 @@
"linter": {
"description": "The tool to use for running lint checks.",
"type": "string",
"enum": ["eslint", "none"],
"default": "eslint"
"enum": ["none", "eslint"],
"x-priority": "important"
},
"js": {
"description": "Generate JavaScript files rather than TypeScript files.",
@@ -61,6 +61,12 @@
"description": "The build target to add.",
"type": "string",
"default": "build"
},
"format": {
"description": "The format to build the library (esm or cjs).",
"type": "array",
"items": { "type": "string", "enum": ["esm", "cjs"] },
"default": ["esm"]
}
},
"required": [],
@@ -60,13 +60,16 @@ within the same workspace. In this case, you can configure the `@nx/jest/plugin`
"include": ["e2e/**/*"],
"options": {
"targetName": "e2e-local",
"ciTargetName": "e2e-ci"
"ciTargetName": "e2e-ci",
"disableJestRuntime": false
}
}
]
}
```
If you experience slowness from `@nx/jest/plugin`, then set `disableJestRuntime` to `true` to skip creating the Jest runtime. By disabling the Jest runtime, Nx will use its own utilities to find `inputs`, `outputs`, and test files for [Atomized targets](/ci/features/split-e2e-tasks). This can reduce computation time by as much as 80%.
### Splitting E2E Tests
If Jest is used to run E2E tests, you can enable [splitting the tasks](/ci/features/split-e2e-tasks) by file to get
@@ -130,13 +130,13 @@
"description": "Generate a lockfile (e.g. package-lock.json) that matches the workspace lockfile to ensure package versions match.",
"default": false,
"x-priority": "internal"
},
"stripLeadingPaths": {
"type": "boolean",
"description": "Remove leading directory from output (e.g. src). See: https://swc.rs/docs/usage/cli#--strip-leading-paths",
"default": false
}
},
"stripLeadingPaths": {
"type": "boolean",
"description": "Remove leading directory from output (e.g. src). See: https://swc.rs/docs/usage/cli#--strip-leading-paths",
"default": false
},
"required": ["main", "outputPath", "tsConfig"],
"definitions": {
"assetPattern": {
@@ -25,7 +25,8 @@
},
"listenAddress": {
"type": "string",
"description": "Listen address that Verdaccio should listen to"
"description": "Listen address that Verdaccio should listen to",
"default": "localhost"
},
"config": {
"type": "string",
@@ -60,6 +60,7 @@ The `@nx/next` plugin will create tasks for any project that has a Next.js confi
- `next.config.js`
- `next.config.cjs`
- `next.config.mjs`
- `next.config.ts`
### View Inferred Tasks
@@ -1,41 +0,0 @@
{
"name": "export",
"implementation": "/packages/next/src/executors/export/export.impl.ts",
"schema": {
"version": 2,
"outputCapture": "pipe",
"cli": "nx",
"title": "Next Export",
"description": "Export a Next.js application. The exported application is located at `dist/$outputPath/exported`.",
"type": "object",
"properties": {
"buildTarget": {
"type": "string",
"description": "Target which builds the application",
"x-priority": "important"
},
"silent": {
"type": "boolean",
"description": "Hide progress or not (default is `false`)",
"default": false
},
"threads": {
"type": "number",
"description": "Number of worker threads to utilize (defaults to the number of CPUs)"
},
"buildLibsFromSource": {
"type": "boolean",
"description": "Read buildable libraries from source instead of building them separately.",
"default": true
}
},
"required": [],
"presets": []
},
"description": "Export a Next.js application. The exported application is located at `dist/$outputPath/exported`.",
"x-deprecated": "Use static exports in next.config.js instead. See: https://nextjs.org/docs/pages/building-your-application/deploying/static-exports.",
"aliases": [],
"hidden": false,
"path": "/packages/next/src/executors/export/schema.json",
"type": "executor"
}
+2 -2
View File
@@ -10,7 +10,7 @@ description: 'Executes any command as if it was a target on the project'
## Usage
In package.json, adding a script with `nx exec` will run the command as if it is a target that project:
In package.json, adding a script with `nx exec` will run the command as if it is a target on that project:
```json
{
@@ -37,7 +37,7 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
## Examples
You can use `npm run <command>` for a project and leverage the caching by wrap your command with `nx exec`.
You can use `npm run <command>` for a project and leverage the caching by wrapping your command with `nx exec`.
For example, you can run `npm run docs` as a Nx target for `myorg`:
@@ -17,16 +17,17 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
## Options
| Option | Type | Description |
| ----------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `--all` | boolean | Format all projects. |
| `--base` | string | Base of the current branch (usually main). |
| `--exclude` | string | Exclude certain projects from being processed. |
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
| `--head` | string | Latest commit of the current branch (usually HEAD). |
| `--help` | boolean | Show help. |
| `--libs-and-apps` | boolean | Format only libraries and applications files. |
| `--projects` | string | Projects to format (comma/space delimited). |
| `--uncommitted` | boolean | Uncommitted changes. |
| `--untracked` | boolean | Untracked changes. |
| `--version` | boolean | Show version number. |
| Option | Type | Description |
| ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--all` | boolean | Format all projects. |
| `--base` | string | Base of the current branch (usually main). |
| `--exclude` | string | Exclude certain projects from being processed. |
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
| `--head` | string | Latest commit of the current branch (usually HEAD). |
| `--help` | boolean | Show help. |
| `--libs-and-apps` | boolean | Format only libraries and applications files. |
| `--projects` | string | Projects to format (comma/space delimited). |
| `--sort-root-tsconfig-paths` | boolean | Ensure the workspace's tsconfig compilerOptions.paths are sorted. Warning: This will cause comments in the tsconfig to be lost. (Default: `true`) |
| `--uncommitted` | boolean | Uncommitted changes. |
| `--untracked` | boolean | Untracked changes. |
| `--version` | boolean | Show version number. |
@@ -17,16 +17,17 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
## Options
| Option | Type | Description |
| ----------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `--all` | boolean | Format all projects. |
| `--base` | string | Base of the current branch (usually main). |
| `--exclude` | string | Exclude certain projects from being processed. |
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
| `--head` | string | Latest commit of the current branch (usually HEAD). |
| `--help` | boolean | Show help. |
| `--libs-and-apps` | boolean | Format only libraries and applications files. |
| `--projects` | string | Projects to format (comma/space delimited). |
| `--uncommitted` | boolean | Uncommitted changes. |
| `--untracked` | boolean | Untracked changes. |
| `--version` | boolean | Show version number. |
| Option | Type | Description |
| ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--all` | boolean | Format all projects. |
| `--base` | string | Base of the current branch (usually main). |
| `--exclude` | string | Exclude certain projects from being processed. |
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
| `--head` | string | Latest commit of the current branch (usually HEAD). |
| `--help` | boolean | Show help. |
| `--libs-and-apps` | boolean | Format only libraries and applications files. |
| `--projects` | string | Projects to format (comma/space delimited). |
| `--sort-root-tsconfig-paths` | boolean | Ensure the workspace's tsconfig compilerOptions.paths are sorted. Warning: This will cause comments in the tsconfig to be lost. (Default: `true`) |
| `--uncommitted` | boolean | Uncommitted changes. |
| `--untracked` | boolean | Untracked changes. |
| `--version` | boolean | Show version number. |
@@ -21,6 +21,12 @@
"x-priority": "important",
"default": "e2e"
},
"linter": {
"description": "The tool to use for running lint checks.",
"type": "string",
"enum": ["none", "eslint"],
"x-priority": "important"
},
"js": {
"type": "boolean",
"description": "Generate JavaScript files rather than TypeScript files.",
@@ -34,12 +40,6 @@
"type": "string",
"description": "The address of the web server."
},
"linter": {
"description": "The tool to use for running lint checks.",
"type": "string",
"enum": ["eslint", "none"],
"default": "eslint"
},
"setParserOptionsProject": {
"type": "boolean",
"description": "Whether or not to configure the ESLint `parserOptions.project` option. We do not do this by default for lint performance reasons.",
@@ -19,7 +19,7 @@
"name": {
"type": "string",
"description": "The name of the remote application to generate the Module Federation configuration",
"pattern": "^[a-zA-Z][^:]*$",
"pattern": "^[a-zA-Z_$][a-zA-Z_$0-9]*$",
"x-priority": "important"
},
"dynamic": {
@@ -20,11 +20,6 @@
"description": "The name of the application.",
"x-priority": "important"
},
"js": {
"type": "boolean",
"description": "Generate JavaScript files rather than TypeScript files.",
"default": false
},
"linter": {
"description": "The tool to use for running lint checks.",
"type": "string",
@@ -21,11 +21,6 @@
"x-prompt": "What project would you like to add Tailwind to?",
"pattern": "^[a-zA-Z].*$"
},
"js": {
"type": "boolean",
"description": "Generate a JavaScript config file instead of a TypeScript config file",
"default": false
},
"skipFormat": {
"type": "boolean",
"description": "Skip formatting files after generator runs",
@@ -26,13 +26,13 @@
},
"main": {
"type": "string",
"description": "Path relative to the workspace root for the main entry file. Defaults to '<projectRoot>/src/main.ts'.",
"description": "Path relative to the workspace root for the main entry file. Defaults to '<projectRoot>/src/index.ts'.",
"alias": "entryFile",
"x-priority": "important"
},
"tsConfig": {
"type": "string",
"description": "Path relative to the workspace root for the tsconfig file to build with. Defaults to '<projectRoot>/tsconfig.app.json'.",
"description": "Path relative to the workspace root for the tsconfig file to build with. Defaults to '<projectRoot>/tsconfig.lib.json'.",
"x-priority": "important"
},
"skipFormat": {
@@ -155,7 +155,7 @@
"description": "Generates a `package.json` and pruned lock file with the project's `node_module` dependencies populated for installing in a container. If a `package.json` exists in the project's directory, it will be reused with dependencies populated."
}
},
"required": ["target", "main", "outputPath", "tsConfig", "rspackConfig"],
"required": ["rspackConfig"],
"definitions": {
"assetPattern": {
"oneOf": [
@@ -0,0 +1,34 @@
{
"name": "convert-webpack",
"factory": "./src/generators/convert-webpack/convert-webpack",
"schema": {
"$schema": "http://json-schema.org/schema",
"$id": "Rspack",
"title": "Nx Webpack to Rspack Generator",
"description": "Convert a Webpack project to Rspack.",
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The name of the project.",
"$default": { "$source": "argv", "index": 0 },
"x-dropdown": "project",
"x-prompt": "What is the name of the project to convert to rspack?",
"x-priority": "important"
},
"skipFormat": {
"description": "Skip formatting files.",
"type": "boolean",
"default": false,
"x-priority": "internal"
}
},
"presets": []
},
"description": "Convert a webpack application to use rspack.",
"implementation": "/packages/rspack/src/generators/convert-webpack/convert-webpack.ts",
"aliases": [],
"hidden": false,
"path": "/packages/rspack/src/generators/convert-webpack/schema.json",
"type": "generator"
}
+86 -63
View File
@@ -131,35 +131,6 @@
"tags": ["nx-release"],
"file": "shared/features/manage-releases"
},
{
"name": "Powerpack Features",
"id": "powerpack",
"description": "Nx Powerpack is a suite of paid extensions for the Nx CLI specifically designed for enterprises.",
"file": "shared/features/powerpack/index",
"itemList": [
{
"name": "Run Language-Agnostic Conformance Rules",
"description": "Write and apply rules for your Nx workspace",
"id": "conformance",
"tags": ["conformance"],
"file": "shared/features/powerpack/conformance"
},
{
"name": "Define Code Ownership at the Project Level",
"description": "Configure and maintain code owners for projects in an Nx workspace",
"id": "owners",
"tags": ["owners"],
"file": "shared/features/powerpack/owners"
},
{
"name": "Self-Host the Remote Cache",
"description": "Host the remote cache without using Nx Cloud",
"id": "custom-caching",
"tags": ["custom-caching"],
"file": "shared/features/powerpack/custom-caching"
}
]
},
{
"name": "CI Features",
"id": "ci-features",
@@ -377,12 +348,6 @@
"id": "installation",
"description": "Installing Nx",
"itemList": [
{
"name": "Activate Powerpack",
"id": "activate-powerpack",
"tags": ["installation"],
"file": "shared/recipes/installation/activate-powerpack"
},
{
"name": "Install Nx in a Non-Javascript Repo",
"id": "install-non-javascript",
@@ -1100,6 +1065,54 @@
"id": "build-before-versioning",
"tags": ["nx-release"],
"file": "shared/recipes/nx-release/build-before-versioning"
},
{
"name": "Configuring Version Prefix for Dependency Versions",
"id": "configuration-version-prefix",
"tags": ["nx-release"],
"file": "shared/recipes/nx-release/configuration-version-prefix"
}
]
}
]
},
{
"name": "Enterprise",
"id": "nx-enterprise",
"description": "Enterprise solutions for the Nx CLI",
"itemList": [
{
"name": "Activate Powerpack",
"id": "activate-powerpack",
"tags": ["installation"],
"file": "shared/recipes/installation/activate-powerpack"
},
{
"name": "Powerpack Features",
"id": "powerpack",
"description": "Nx Powerpack is a suite of paid extensions for the Nx CLI specifically designed for enterprises.",
"file": "shared/features/powerpack/index",
"itemList": [
{
"name": "Run Language-Agnostic Conformance Rules",
"description": "Write and apply rules for your Nx workspace",
"id": "conformance",
"tags": ["conformance"],
"file": "shared/features/powerpack/conformance"
},
{
"name": "Define Code Ownership at the Project Level",
"description": "Configure and maintain code owners for projects in an Nx workspace",
"id": "owners",
"tags": ["owners"],
"file": "shared/features/powerpack/owners"
},
{
"name": "Self-Host the Remote Cache",
"description": "Host the remote cache without using Nx Cloud",
"id": "custom-caching",
"tags": ["custom-caching"],
"file": "shared/features/powerpack/custom-caching"
}
]
}
@@ -1854,61 +1867,45 @@
"description": "Recipes for enterprise accounts",
"itemList": [
{
"name": "On-Premise",
"id": "on-premise",
"name": "Single Tenant",
"id": "single-tenant",
"description": "Manage an on-premise installation of Nx Cloud",
"itemList": [
{
"name": "Set up Nx Cloud On-Premise",
"description": "Set up Nx Cloud on machines that you control",
"id": "on-premise",
"tags": ["on-premise"],
"file": "nx-cloud/features/nx-enterprise-on-prem"
},
{
"name": "Authenticate with a Single Admin",
"id": "auth-single-admin",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin"
"name": "Single Tenant Nx Cloud Hosting",
"id": "overview",
"tags": ["single-tenant"],
"file": "nx-cloud/enterprise/single-tenant/overview"
},
{
"name": "Authenticate with GitHub",
"id": "auth-github",
"file": "nx-cloud/enterprise/on-premise/auth-github"
},
{
"name": "On-Prem VM Setup",
"id": "ami-setup",
"file": "nx-cloud/enterprise/on-premise/ami-setup"
"file": "nx-cloud/enterprise/single-tenant/auth-github"
},
{
"name": "Authenticate with GitLab",
"id": "auth-gitlab",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab"
"file": "nx-cloud/enterprise/single-tenant/auth-gitlab"
},
{
"name": "Authenticate with BitBucket",
"id": "auth-bitbucket",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket"
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket"
},
{
"name": "Authenticate with BitBucket Data Center",
"id": "auth-bitbucket-data-center",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket-data-center"
"file": "nx-cloud/enterprise/single-tenant/auth-bitbucket-data-center"
},
{
"name": "Authenticate via SAML",
"id": "auth-saml",
"file": "nx-cloud/enterprise/on-premise/auth-saml"
},
{
"name": "Advanced Configuration",
"id": "advanced-config",
"file": "nx-cloud/enterprise/on-premise/advanced-config"
"file": "nx-cloud/enterprise/single-tenant/auth-saml"
},
{
"name": "Custom GitHub App",
"id": "custom-github-app",
"file": "nx-cloud/enterprise/on-premise/custom-github-app"
"file": "nx-cloud/enterprise/single-tenant/custom-github-app"
}
]
},
@@ -2626,6 +2623,32 @@
}
]
},
{
"name": "powerpack-azure-cache",
"id": "powerpack-azure-cache",
"description": "powerpack-azure-cache package.",
"itemList": [
{
"name": "Overview",
"id": "overview",
"path": "/nx-api/powerpack-azure-cache",
"file": "shared/packages/powerpack-azure-cache/powerpack-azure-cache-plugin"
}
]
},
{
"name": "powerpack-gcs-cache",
"id": "powerpack-gcs-cache",
"description": "powerpack-gcs-cache package.",
"itemList": [
{
"name": "Overview",
"id": "overview",
"path": "/nx-api/powerpack-gcs-cache",
"file": "shared/packages/powerpack-gcs-cache/powerpack-gcs-cache-plugin"
}
]
},
{
"name": "powerpack-s3-cache",
"id": "powerpack-s3-cache",
+1 -1
View File
@@ -46,7 +46,7 @@ In order to guarantee that cache poisoning will never affect your end users, [sk
### Do Not Manually Share Your Local Cache
Nx implicitly trusts the local cache which is stored by default in the `.nx/cache` folder. You can change the location of that folder in the `nx.json` file, so it could be tempting to place it on a network drive and easily share your cache with everyone on the company network. However, by doing this you've voided the guarantee of immutability from your cache. If someone has direct access to the cached files, they could directly poison the cache. Nx will automatically detect if a cache entry has been created in your local cache using a different machine and warn you with an [Unknown Local Cache Error](/troubleshooting/unknown-local-cache). Instead, use Nx Cloud [remote caching](/ci/features/remote-cache). If you want share your local cache anyway, you can [activate Nx Powerpack](/recipes/installation/activate-powerpack) and use the [`@nx/powerpack-shared-fs-cache`](/nx-api/powerpack-shared-fs-cache) plugin.
Nx implicitly trusts the local cache which is stored by default in the `.nx/cache` folder. You can change the location of that folder in the `nx.json` file, so it could be tempting to place it on a network drive and easily share your cache with everyone on the company network. However, by doing this you've voided the guarantee of immutability from your cache. If someone has direct access to the cached files, they could directly poison the cache. Nx will automatically detect if a cache entry has been created in your local cache using a different machine and warn you with an [Unknown Local Cache Error](/troubleshooting/unknown-local-cache). Instead, use Nx Cloud [remote caching](/ci/features/remote-cache). If you want share your local cache anyway, you can [activate Nx Powerpack](/nx-enterprise/activate-powerpack) and use the [`@nx/powerpack-shared-fs-cache`](/nx-api/powerpack-shared-fs-cache) plugin.
### Configure End to End Encryption
@@ -1,65 +0,0 @@
# Advanced Configuration
## Troubleshooting and Verbose Logging
To help troubleshoot installations set `verboseLogging` to `'true'`:
```yaml
image:
tag: 'latest'
verboseLogging: 'true'
```
## Running the Mongo Database
Nx Cloud uses MongoDB to store its metadata. There are several common ways to run MongoDB.
### Using MongoDB Kubernetes Operator
The MongoDB team maintains the open
source [MongoDB Kubernetes Operator](https://github.com/mongodb/mongodb-kubernetes-operator). You can use it to set up
your own deployment of MongoDB. See [the Nx Cloud Kubernetes example](https://github.com/nrwl/nxcloud-k8s-setup) for
more information.
### Using Mongo Atlas
[Mongo Atlas](https://mongodb.com/) is a great option for deploying MongoDB.
## Using External File Storage
By default, the on-prem version of Nx Cloud is going to start a file server and store the cached artifacts in the
provided volume. But
you can also configure Nx Cloud to use an external file storage. At the moment, only S3 and Azure Blob are
supported.
### Using S3/Minio
To configure S3 as a file storage, provision the `AWS_S3_ACCESS_KEY_ID`, `AWS_S3_SECRET_ACCESS_KEY`, and `AWS_S3_BUCKET`
env variables for the `nx-cloud-nx-api` container.
If you are using an accelerated bucket, et: `AWS_S3_ACCELERATED` to `true`
If you are using a local S3 installation (e.g., Minio), you will also need to set `AWS_S3_ENDPOINT`.
{% callout type="note" title="On cache item expiration time" %}
Remember to
set [a cache item expiration time](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)
. The default is currently 4 weeks. If you would like to keep items for longer, for example for 8 weeks, please remember
to set the `NX_CACHE_EXPIRATION_PERIOD_IN_DAYS=56` env variable as well, so the container knows when to expire the Mongo
cache entries as well.
{% /callout %}
### Using Azure
To configure Azure Blob as a file storage, provision the `AZURE_CONNECTION_STRING`, `AZURE_CONTAINER` env variables for the `nx-cloud-nx-api` container.
To obtain the `AZURE_CONNECTION_STRING` value go to your "Storage Account" and click on "Access Keys". You will also
need to create a container in your storage account before starting the Nx Cloud container.
If you use an external file storage and an external MongoDB instance, you don't have to provision the volume.
{% callout type="note" title="Cache expiration time" %}
See note above about setting a cache expiration time. For Azure blob
storage, [see this guide](https://docs.microsoft.com/en-us/azure/cdn/cdn-manage-expiration-of-blob-content).
{% /callout %}
@@ -1,182 +0,0 @@
# Setting up a dedicated Nx Cloud VM
## AWS EC2
1. Login to your AWS Console and select [the top image published here](https://console.aws.amazon.com/ec2/v2/home?home#Images:visibility=public-images;imageName=nx-cloud;owner=623002322076;sort=desc:imageName)
2. Launch a new instance from that AMI
3. Recommended instance type: `t3.2xlarge`
4. You will need to SSH into the instance once it's created:
- Use an existing SSH key-pair that you already have installed locally.
- [Or create a new one and download the keys locally](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html?icmpid=docs_ec2_console#having-ec2-create-your-key-pair)
- Then select your new SSH pair from the list
5. Networking:
- Allow the instance to receive HTTP and HTTPS traffic
- Allow SSH from your current IP
6. Leave the storage options as they are
7. "Launch instance"
8. Wait 10 minutes, then navigate to your instance's IP in the browser. You should see the Nx Cloud dashboard!
![Nx Cloud landing page](/nx-cloud/enterprise/on-premise/images/nx-cloud-landing.png)
### Your Nx Cloud URL
1. At this point, your instance will have a public IP accessible from the browser.
- You can consider this IP the URL of Nx Cloud, and proceed with the below steps and all will work fine!
2. You might want, however, to add a Load Balancer in front of the instance, with an explicit domain (e.g. https://my-nxcloud.my-org.com).
- This is strongly recommended because you will be able to upgrade/restart/re-configure your Nx Cloud EC2 instance while keeping the Nx Cloud URL static.
- Create an [application load balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)
- You will need to create a certificate for your domain to assign to the LB
- And you will need to target your EC2 instance from the LB
- You should now have a permanent domain pointing to your Nx Cloud instance
Once you have your Nx Cloud URL proceed to the below steps!
### Configuring your Nx Cloud instance
1. Create a new `myconfiguration.yaml` file with the below contents
```yaml
# This is all you need to get the baseline of your nx-cloud instance configured!
# Set the external URL your instance is running on. This is the URL from the previous step
nxCloudAppURL: 'https://nx-cloud.on.my-domain.ca' # make sure no backslash is at the end
secret:
# set your initial admin password for logging into the app
adminPassword: 'correcthorsebatterystaple'
```
2. Apply the configuration:
```bash
scp -i ./<path-to-your-ssh-pem-file>.pem -r ./myconfiguration.yaml nx-cloud@<your-instance-ip>:~/config/user/update.yaml
```
That's it! After a few minutes, you should be able to log-in with:
- username: `admin`
- password: `<the-password-you-set-above>`
### Applying the license
Once you log-in, you will see an organisation has been created for you.
1. You can rename it or create a new organization.
2. Navigate to your new organization's page and send us it's id
- It should look something like this: https://your-url.com/orgs/649f240f7fb955000c1fd10b/workspaces
3. We will then give you a License Key which you can apply on your org's billing page
### Connecting to your instance
In your Nx workspace, you can enable Nx Cloud by running:
```bash
NX_CLOUD_API="https://nx-cloud.on.my-domain.ca" npx nx connect
```
If it doesn't work, there might be an issue with unrecognized certificates on your instance. You can try running with:
```bash
NODE_TLS_REJECT_UNAUTHORIZED=0 NX_CLOUD_API="https://nx-cloud.on.my-domain.ca" npx nx connect
```
Although we have [a full guide here](https://github.com/nrwl/nx-cloud-helm/blob/main/PROXY-GUIDE.md#nxcloud-runner-proxy-issues) for dealing with self-signed certificates.
### Advanced configuration and auth
You can optionally enable authentication using your preferred SSO provider:
- GitHub
- Bitbucket
- GitLab
- SAML (Okta, Azure AD etc.)
- And even [Nx Agents](/ci/features/distribute-task-execution#distribute-task-execution-nx-agents)
- Follow [the guide here](https://github.com/nrwl/nx-cloud-helm/blob/main/agents-guide/AGENTS-GUIDE.md) for setting up an Nx Agents cluster
```yaml
# This is all you need to get the baseline of your nx-cloud instance configured!
# only use this if you'd like to use any of the newer Nx Cloud version from here: https://nx.dev/ci/reference/release-notes#docker-containers
# global.imageTag: ''
# Set the external URL your instance is running on
nxCloudAppURL: 'https://nx-cloud.on.my-domain.ca' # make sure no backslash is at the end
# Uncomment (along with github secrets below) to enable working with GitHub pull requests or github auth
#github:
# auth:
# enabled: false
# pr:
# apiUrl: '' # this is only needed if you have a self-hosted github instance
#gitlab:
# apiUrl: '' # this is only needed if you have a self-hosted gitlab instance
# auth:
# enabled: false
# we do not support self-hosted bitbucket instances
#bitbucket:
# apiUrl: '' (if using Data Center/on-prem)
# auth:
# enabled: false
#saml:
# auth:
# enabled: false
# for enabling Nx Agents
#nxCloudWorkflows:
# enabled: true
# externalName: your-agents-cluster-address.com
# Provide plaintext values for your application to use. We will extract them,
# store them within the application runtime, and scrub the plaintext ones from
# the filesystem
secret:
# set your initial admin password for logging into the app
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-single-admin
adminPassword: 'correcthorsebatterystaple'
# If you want to enable GitHub Login, just provide your client id & secret, we handle the rest
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-github
githubAuthClientId: 'my_client_id'
githubAuthClientSecret: 'my_client_secret'
# The same goes for GitLab authentication
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-gitlab
# gitlabAppId: 'my_gitlab_app_id'
# gitlabAppSecret: 'my_gitlab_app_secret'
# Bitbucket too! If these are uncommented, BB auth is automatically enabled
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-bitbucket
# bitbucketAppId: 'bitbucket_app_id'
# bitbucketAppSecret: 'bitbucket_app_secret'
# SAML auth
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-saml
# samlEntryPoint: 'your_saml_entry_point'
# samlCert: 'saml_cert'
```
### Upgrades
We send out emails with every new Nx Cloud release to all our Enterprise customers:
1. You can view your current version at the `/version` route: https://your-nx-cloud-url.com/version
2. [And these are the latest Nx Cloud releases](/ci/reference/release-notes)
To upgrade to a newer version, add the below line to your `myconfiguration.yml` file:
```yaml
global:
imageTag: '2306.01.2'
global:
imageTag: '2405.02.15' # set the version of nx-cloud you'd like
helmVersion: '0.15.3' # helm version
```
And apply the changes:
```bash
scp -r ./myconfiguration.yaml nx-cloud@<your-instance-ip>:~/config/user/update.yaml
```
@@ -1,44 +0,0 @@
# GitHub Auth
First, you'll need to create a GitHub OAuth app for your organisation.
## Creating a GitHub OAuth app
From GitHub, click on your profile picture and chose "Settings":
![Step 1](/nx-cloud/enterprise/on-premise/images/github_auth_step_1.png)
Then "Developer settings" from the left-hand menu:
![Step 2](/nx-cloud/enterprise/on-premise/images/github_auth_step_2.png)
Then "OAuth Apps":
![Step 3](/nx-cloud/enterprise/on-premise/images/github_auth_step_3.png)
And create a new OAuth app:
![Step 4](/nx-cloud/enterprise/on-premise/images/github_auth_step_4.png)
Give it a name, and a homepage URL. The authorization callback is the important bit. It needs to be in this form:
```
[your-nx-cloud-url]/auth-callback
# for example
https://my.nx-enterprise.url:8080/auth-callback
```
![Step 5](/nx-cloud/enterprise/on-premise/images/github_auth_step_5.png)
Once you create, keep a note of the Client ID:
![Step 6](/nx-cloud/enterprise/on-premise/images/github_auth_step_6.png)
And then generate a new client secret, and save it somewhere secure (we'll use it in a bit):
![Step 7](/nx-cloud/enterprise/on-premise/images/github_auth_step_7.png)
## Configure Nx Cloud Installation
It's now time to enable auth on NxCloud. Refer to the [auth guide](https://github.com/nrwl/nx-cloud-helm/blob/main/AUTH-GUIDE.md) here for instructions on configuring your Helm values file.
@@ -1,69 +0,0 @@
# Auth (Basic)
## Why do users need access?
While just adding an Nx Cloud access token to your monorepo gives you remote caching and distributed tasks
execution, the Nx Cloud web app gives you analytics about tasks running in your workspace, allows devs to easily inspect
terminal output, and works seamlessly with our GitHub integration for your Pull Requests. Here is
a [video walkthrough of this](https://youtu.be/GT7XIwG1i5A?t=409).
By default, when you connect your token to a workspace on your Nx Cloud web app, all links and runs are private to only
members of your organisation. This means that you'll either need to explicitly add members, or make your organisation
public (which means anyone with access to your Nx Cloud instance will be able to see your runs)
.
## Setting up a single admin user
If you just want to try out running Nx Cloud on prem and set up full membership management later, then the simplest
option is to
just set up a single admin user. This option might also work for you if you are okay
with making your organisation public to anyone that has access to your
Nx Cloud installation.
To do that provision the `ADMIN_PASSWORD` env variable for the `nx-cloud-aggregator` container (if you are running Nx
Cloud as a single container, provision the `ADMIN_PASSWORD` env variable for that container). This will set up a
default admin user for you, which you can use to manage your workspace on the Nx Cloud web app.
{% callout type="note" title="Preventing access loss" %}
Even if you can make your organisation public, we still recommend setting up GitHub authentication and inviting more
than 1 admin to your workspace, to reduce the chance of losing access to it.
{% /callout %}
## Setting up third-party auth providers
For instructions on how to set up third-party auth providers, please refer to these guides:
- [GitHub Auth](/ci/recipes/enterprise/on-premise/auth-github)
- [GitLab Auth](/ci/recipes/enterprise/on-premise/auth-gitlab)
- [BitBucket Auth](/ci/recipes/enterprise/on-premise/auth-bitbucket)
- [BitBucket Data Center Auth](/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center)
- [SAML Auth](/ci/recipes/enterprise/on-premise/auth-saml)
## Inviting users
Once that's done, you can either sign in with your admin user by using the form, or
directly via the configured third-party authentication providers by clicking the "_Sign In with configured third-party provider_" button:
![Main user login](/nx-cloud/enterprise/on-premise/images/main-user-login.webp)
You can then go to your organisation's settings and then to the members page and start inviting people based on their GitHub username.
When you invite someone, Nx Cloud will generate a unique invite URL, which you can send to that person directly.
## Migrating from an admin-only set up to auth via a configured provider
If you already have an admin user that manages an existing Nx Cloud workspace, you can still login by using the login form, even after you set up
GitHub auth.
## Finding usernames
To ensure only the members you trust can accept invitations to your workspace, you need to invite them via their
GitHub/GitLab/BitBucket username, and then they need to be logged in with that username to accept the invite. Usernames
can usually be found by clicking in the top-right corner.
GitLab:
![GitLab username location](/nx-cloud/enterprise/on-premise/images/gitlab-username.png)
GitHub:
![GitHub username location](/nx-cloud/enterprise/on-premise/images/github-username.png)
@@ -1,106 +0,0 @@
# Custom GitHub App
Before creating your container, you'll need to create a GitHub app for your organisation.
## Creating a GitHub OAuth app
From GitHub, click on your profile picture and chose "Settings":
![Step 1](/nx-cloud/enterprise/on-premise/images/github_auth_step_1.png)
Then "Developer settings" from the left-hand menu:
![Step 2](/nx-cloud/enterprise/on-premise/images/github_auth_step_2.png)
Then "GitHub Apps":
![Step 3](/nx-cloud/enterprise/on-premise/images/github_custom_app_step_3.avif)
And create a new GitHub app:
![Step 4](/nx-cloud/enterprise/on-premise/images/github_custom_app_step_5.avif)
Give it a name, and a homepage URL. The callback URL is the important bit. It needs to be in this form:
```
[your-nx-cloud-url]/callbacks/github-user
# for example
https://my.nx-enterprise.url:8080/callbacks/github-user
```
Once you create the app, keep a note of the Client ID and App ID:
![Step 6](/nx-cloud/enterprise/on-premise/images/github_custom_app_step_6.avif)
Then generate a new client secret, and save it somewhere secure (we'll use it in a bit):
![Step 7](/nx-cloud/enterprise/on-premise/images/github_auth_step_7.png)
## Configure Permissions for the GitHub App
The following permissions are required for Nx Cloud to work:
Repository permissions:
- `Contents: Read & Write`
- `Pull requests: Read & Write`
- `Checks: Read Only`
- `Commit Statuses: Read & Write`
- `Issues: Read & Write`
- `Metadata: Read Only`
Organization permissions:
- `Administration: Read Only`
- `Members: Read Only`
## Configure Nx Cloud Installation
### Using Helm:
```yaml
image:
tag: 'latest'
nxCloudAppURL: 'https://nx-cloud.myorg.com'
github:
auth:
enabled: true
secret:
name: 'cloudsecret'
githubAppClientId: 'NX_CLOUD_GITHUB_APP_CLIENT_ID'
githubAppClientSecret: 'NX_CLOUD_GITHUB_APP_CLIENT_SECRET'
githubAppId: 'NX_CLOUD_GITHUB_APP_APP_ID'
```
Note that the secret must contain `NX_CLOUD_GITHUB_APP_CLIENT_ID`, `NX_CLOUD_GITHUB_APP_APP_ID`, and `NX_CLOUD_GITHUB_APP_CLIENT_SECRET` (
see [Nx Cloud Helm Charts](https://github.com/nrwl/nx-cloud-helm) for more context).
### Not using Helm:
Provide the following env variables to the `nx-cloud-frontend` container:
- `NX_CLOUD_GITHUB_APP_CLIENT_ID`
- `NX_CLOUD_GITHUB_APP_CLIENT_SECRET`
- `NX_CLOUD_GITHUB_APP_APP_ID`
{% callout title="Helm Chart Environment Variables" %}
If you are using our Helm chart, you can find all the information you need about env variables in [the Helm chart repository](https://github.com/nrwl/nx-cloud-helm/blob/main/AUTH-GUIDE.md).
{% /callout %}
<!-- ## GitHub Enterprise
If you are running a self-hosted version of GitHub (Enterprise Server), you will need to configure one additional
environment variable:
`GITHUB_API_URL=https://custom-github-instance.com`
This will point all auth endpoints to your GitHub server (rather the public one).
{% callout type="check" title="Good to know!" %}
The above environment variable, also helps with setting up the GitHub app integration, so you can have Nx Cloud build
stats directly on your pull request. See full set up instructions [here](/ci/recipes/source-control-integration/github).
{% /callout %} -->
@@ -1,6 +1,6 @@
# BitBucket Data Center Auth
This page is for configuring auth via BitBucket Data Center (on-prem). If you are using BitBucket Cloud please refer to the docs [here](/ci/recipes/enterprise/on-premise/auth-bitbucket).
This page is for configuring auth via BitBucket Data Center (on-prem). If you are using BitBucket Cloud please refer to the docs [here](/ci/recipes/enterprise/single-tenant/auth-bitbucket).
Before creating your container, your Bitbucket Data Center admin will need to create an "Application Link".
@@ -8,16 +8,16 @@ Before creating your container, your Bitbucket Data Center admin will need to cr
Your BitBucket installation admin will need to navigate to their installation settings:
![Step 1](/nx-cloud/enterprise/on-premise/images/bitbucket_onprem_1.png)
![Step 1](/nx-cloud/enterprise/single-tenant/images/bitbucket_onprem_1.png)
Then "Application Links":
![Step 2](/nx-cloud/enterprise/on-premise/images/bitbucket_onprem_2.png)
![Step 2](/nx-cloud/enterprise/single-tenant/images/bitbucket_onprem_2.png)
And create a new link using the settings below (make sure the callback URL is pointed to your BitBucket installation):
![Step 3](/nx-cloud/enterprise/on-premise/images/bitbucket_onprem_3.png)
![Step 3](/nx-cloud/enterprise/single-tenant/images/bitbucket_onprem_3.png)
## Connect your Nx Cloud installation to your new app
## Connect Your Nx Cloud Installation to Your New App
It's now time to enable auth on NxCloud. Refer to the [auth guide](https://github.com/nrwl/nx-cloud-helm/blob/main/AUTH-GUIDE.md) here for instructions on configuring your Helm values file.
Contact your developer productivity engineer to connect your Nx Cloud instance to the newly created BitBucket data center app.
@@ -1,22 +1,22 @@
# BitBucket Cloud Auth
This page is only for BitBucket Cloud (bitbucket.org). If you have an on-premise version of BitBucket Data Center please refer to the docs [here](/ci/recipes/enterprise/on-premise/auth-bitbucket-data-center).
This page is only for BitBucket Cloud (bitbucket.org). If you have an on-premise version of BitBucket Data Center please refer to the docs [here](/ci/recipes/enterprise/single-tenant/auth-bitbucket-data-center).
First, you'll need to create a BitBucket "OAuth consumer" for your organisation.
## Creating a BitBucket OAuth consumer
## Creating a BitBucket OAuth Consumer
From BitBucket, click on your profile picture and select your workspace:
![Step 1](/nx-cloud/enterprise/on-premise/images/bitbucket_1.png)
![Step 1](/nx-cloud/enterprise/single-tenant/images/bitbucket_1.png)
Then "Settings":
![Step 2](/nx-cloud/enterprise/on-premise/images/bitbucket_2.png)
![Step 2](/nx-cloud/enterprise/single-tenant/images/bitbucket_2.png)
Then "OAuth consumers":
![Step 3](/nx-cloud/enterprise/on-premise/images/bitbucket_3.png)
![Step 3](/nx-cloud/enterprise/single-tenant/images/bitbucket_3.png)
And create a new consumer.
@@ -31,18 +31,18 @@ https://my.nx-enterprise.url:8080/auth-callback
**Important:** Ensure there is **no backslash at the end of the "Callback URL"** (i.e. it matches the above pattern)
![Step 4](/nx-cloud/enterprise/on-premise/images/bitbucket_4.png)
![Step 4](/nx-cloud/enterprise/single-tenant/images/bitbucket_4.png)
Ensure you grant it the `account:read` and `account:email` scopes:
![Step 5](/nx-cloud/enterprise/on-premise/images/bitbucket_5.png)
![Step 5](/nx-cloud/enterprise/single-tenant/images/bitbucket_5.png)
Save your changes.
Once you create, keep a note of the Key and the Secret:
![Step 6](/nx-cloud/enterprise/on-premise/images/bitbucket_6.png)
![Step 6](/nx-cloud/enterprise/single-tenant/images/bitbucket_6.png)
## Connect your Nx Cloud installation to your new app
## Connect Your Nx Cloud Installation to Your BitBucket OAuth Consumer
It's now time to enable auth on NxCloud. Refer to the [auth guide](https://github.com/nrwl/nx-cloud-helm/blob/main/AUTH-GUIDE.md) here for instructions on configuring your Helm values file.
Contact your developer productivity engineer to connect your Nx Cloud instance to the newly created BitBucket OAuth consumer.
@@ -0,0 +1,44 @@
# GitHub Auth
First, you'll need to create a GitHub OAuth app for your organisation.
## Creating a GitHub OAuth app
From GitHub, click on your profile picture and chose "Settings":
![Step 1](/nx-cloud/enterprise/single-tenant/images/github_auth_step_1.png)
Then "Developer settings" from the left-hand menu:
![Step 2](/nx-cloud/enterprise/single-tenant/images/github_auth_step_2.png)
Then "OAuth Apps":
![Step 3](/nx-cloud/enterprise/single-tenant/images/github_auth_step_3.png)
And create a new OAuth app:
![Step 4](/nx-cloud/enterprise/single-tenant/images/github_auth_step_4.png)
Give it a name, and a homepage URL. The authorization callback is the important bit. It needs to be in this form:
```
[your-nx-cloud-url]/auth-callback
# for example
https://my.nx-enterprise.url:8080/auth-callback
```
![Step 5](/nx-cloud/enterprise/single-tenant/images/github_auth_step_5.png)
Once you create, keep a note of the Client ID:
![Step 6](/nx-cloud/enterprise/single-tenant/images/github_auth_step_6.png)
And then generate a new client secret, and save it somewhere secure (we'll use it in a bit):
![Step 7](/nx-cloud/enterprise/single-tenant/images/github_auth_step_7.png)
## Configure Nx Cloud Installation
Contact your developer productivity engineer to connect your Nx Cloud instance to the newly created GitHub OAuth app.
@@ -6,11 +6,11 @@ Before creating your container, you'll need to create a GitLab app for your orga
From GitLab, click on your profile picture and chose "Preferences":
![Step 1](/nx-cloud/enterprise/on-premise/images/gitlab_step_1.png)
![Step 1](/nx-cloud/enterprise/single-tenant/images/gitlab_step_1.png)
Then "Applications" from the left-hand menu:
![Step 2](/nx-cloud/enterprise/on-premise/images/gitlab_step_2.png)
![Step 2](/nx-cloud/enterprise/single-tenant/images/gitlab_step_2.png)
Give the app a name. The authorization callback is the important bit. It needs to be in this form:
@@ -23,18 +23,18 @@ https://my.nx-enterprise.url:8080/auth-callback
**Important:** Ensure there is **no backslash at the end of the "Redirect URI"** (i.e. it matches the above pattern)
![Step 3](/nx-cloud/enterprise/on-premise/images/gitlab_step_3.png)
![Step 3](/nx-cloud/enterprise/single-tenant/images/gitlab_step_3.png)
Ensure you grant it the "`read_user`" scope:
![Step 4](/nx-cloud/enterprise/on-premise/images/gitlab_step_4.png)
![Step 4](/nx-cloud/enterprise/single-tenant/images/gitlab_step_4.png)
Click "Save application".
Once you create, keep a note of the Client ID and the Secret:
![Step 5](/nx-cloud/enterprise/on-premise/images/gitlab_step_5.png)
![Step 5](/nx-cloud/enterprise/single-tenant/images/gitlab_step_5.png)
## Connect your Nx Cloud installation to your new app
## Connect Your Nx Cloud Installation to Your New App
It's now time to enable auth on NxCloud. Refer to the [auth guide](https://github.com/nrwl/nx-cloud-helm/blob/main/AUTH-GUIDE.md) here for instructions on configuring your Helm values file.
Contact your developer productivity engineer to connect your Nx Cloud instance to the newly created GitLab app.
@@ -12,44 +12,44 @@ if you are interested.
1. Create a new enterprise app
![Step 1](/nx-cloud/enterprise/on-premise/images/saml/azure_1.png)
![Step 1](/nx-cloud/enterprise/single-tenant/images/saml/azure_1.png)
![Step 2](/nx-cloud/enterprise/on-premise/images/saml/azure_2.png)
![Step 2](/nx-cloud/enterprise/single-tenant/images/saml/azure_2.png)
2. Choose “Create your own”:
![Step 3](/nx-cloud/enterprise/on-premise/images/saml/azure_3.png)
![Step 3](/nx-cloud/enterprise/single-tenant/images/saml/azure_3.png)
3. Give it a name
![Step 4](/nx-cloud/enterprise/on-premise/images/saml/azure_4.png)
![Step 4](/nx-cloud/enterprise/single-tenant/images/saml/azure_4.png)
4. Assign your users and/or groups to it:
![Step 5](/nx-cloud/enterprise/on-premise/images/saml/azure_5.png)
![Step 5](/nx-cloud/enterprise/single-tenant/images/saml/azure_5.png)
5. Then set-up SSO
![Step 6](/nx-cloud/enterprise/on-premise/images/saml/azure_6.png)
![Step 6](/nx-cloud/enterprise/single-tenant/images/saml/azure_6.png)
6. And choose SAML:
![Step 7](/nx-cloud/enterprise/on-premise/images/saml/azure_7.png)
![Step 7](/nx-cloud/enterprise/single-tenant/images/saml/azure_7.png)
7. Add these configuration options
1. Configure the Identifier **exactly** as `nx-private-cloud`
2. For the **Reply URL**, it should point to your Private Cloud instance URL. Make sure it ends with `/auth-callback`
![Step 8](/nx-cloud/enterprise/on-premise/images/saml/azure_8.png)
![Step 8](/nx-cloud/enterprise/single-tenant/images/saml/azure_8.png)
8. Scroll down and manage claims:
![Step 9](/nx-cloud/enterprise/on-premise/images/saml/azure_9.png)
![Step 9](/nx-cloud/enterprise/single-tenant/images/saml/azure_9.png)
9. The first row should be the `email` claim, click to Edit it:
![Step 10](/nx-cloud/enterprise/on-premise/images/saml/azure_10.png)
![Step 10](/nx-cloud/enterprise/single-tenant/images/saml/azure_10.png)
10. Configure it as per below
@@ -57,32 +57,32 @@ if you are interested.
2. **“Name:”** needs to be “email”
3. See screenshot below. This is an important step, because Nx Cloud will expect the “email” property on each profile that logs in.
![Step 11](/nx-cloud/enterprise/on-premise/images/saml/azure_11.png)
![Step 11](/nx-cloud/enterprise/single-tenant/images/saml/azure_11.png)
Make sure your application user profile exposes the email address under `user.mail`. This can be configured in `Users and Groups` in the Azure portal. Alternatively, you can always configure the `email` claim to use a different property under the `user` object.
11. Under `SAML Certificates`, click the pencil icon to edit
![Step 12](/nx-cloud/enterprise/on-premise/images/saml/azure_12.png)
![Step 12](/nx-cloud/enterprise/single-tenant/images/saml/azure_12.png)
For **Signing Option**, select **Sign SAML response and assertion**
![Step 13](/nx-cloud/enterprise/on-premise/images/saml/azure_13.png)
![Step 13](/nx-cloud/enterprise/single-tenant/images/saml/azure_13.png)
Then click **Save** and close the popover.
12. Download the certificate in **Base64**:
![Step 14](/nx-cloud/enterprise/on-premise/images/saml/azure_14.png)
![Step 14](/nx-cloud/enterprise/single-tenant/images/saml/azure_14.png)
13. Extract the downloaded certificate value as a one-line string:
1. `awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' azure_cert_file.cer`
2. Well use this in a bit to initialize an environment variable
2. Well use this later
14. Copy the Login URL:
![Step 15](/nx-cloud/enterprise/on-premise/images/saml/azure_15.png)
![Step 15](/nx-cloud/enterprise/single-tenant/images/saml/azure_15.png)
15. Then add these two env vars to your Nx Cloud cluster secrets (see [Helm config](#helm-config) below):
15. Save the following information to send to your DPE:
1. `SAML_CERT=<your-cert-string-from-above>`
2. `SAML_ENTRY_POINT=<your-login-url-from-above>`
@@ -90,46 +90,46 @@ if you are interested.
1. Create a new Okta App Integration:
![Okta 1](/nx-cloud/enterprise/on-premise/images/saml/okta_1.png)
![Okta 1](/nx-cloud/enterprise/single-tenant/images/saml/okta_1.png)
![Okta 2](/nx-cloud/enterprise/on-premise/images/saml/okta_2.png)
![Okta 2](/nx-cloud/enterprise/single-tenant/images/saml/okta_2.png)
2. Give it a name:
![Okta 3](/nx-cloud/enterprise/on-premise/images/saml/okta_3.png)
![Okta 3](/nx-cloud/enterprise/single-tenant/images/saml/okta_3.png)
3. On the Next page, configure it as below:
1. The Single Sign On URL needs to point to your Nx Cloud instance URL and ends with `/auth-callback`
2. The Audience should be `nx-private-cloud`
![Okta 4](/nx-cloud/enterprise/on-premise/images/saml/okta_4.png)
![Okta 4](/nx-cloud/enterprise/single-tenant/images/saml/okta_4.png)
4. Scroll down to attribute statements and configure them as per below:
![Okta 5](/nx-cloud/enterprise/on-premise/images/saml/okta_5.png)
![Okta 5](/nx-cloud/enterprise/single-tenant/images/saml/okta_5.png)
5. Click “Next”, and select the first option on the next screen.
6. Go to the assignments tab and assign the users that can login to the Nx Cloud WebApp:
1. **Note:** This just gives them permission to use the Nx Cloud web app with their own workspace. Users will still need to be invited manually through the web app to your main workspace.
![Okta 6](/nx-cloud/enterprise/on-premise/images/saml/okta_6.png)
![Okta 6](/nx-cloud/enterprise/single-tenant/images/saml/okta_6.png)
7. Then in the Sign-On tab scroll down:
![Okta 7](/nx-cloud/enterprise/on-premise/images/saml/okta_7.png)
![Okta 7](/nx-cloud/enterprise/single-tenant/images/saml/okta_7.png)
8. Scroll down and from the list of certificates, download the one with the “Active” status:
![Okta 8](/nx-cloud/enterprise/on-premise/images/saml/okta_8.png)
![Okta 8](/nx-cloud/enterprise/single-tenant/images/saml/okta_8.png)
9. Extract the downloaded certificate value as a one-line string:
1. `awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' okta.cert`
2. We will use this in a bit to initialize and environment variable
2. We'll use this later
10. Then view the ldP metadata:
![Okta 9](/nx-cloud/enterprise/on-premise/images/saml/okta_9.png)
![Okta 9](/nx-cloud/enterprise/single-tenant/images/saml/okta_9.png)
11. Then find the row similar to the below, and copy the highlighted URL (see screenshot as well):
@@ -140,8 +140,8 @@ if you are interested.
/>
```
![Okta 10](/nx-cloud/enterprise/on-premise/images/saml/okta_10.png)
![Okta 10](/nx-cloud/enterprise/single-tenant/images/saml/okta_10.png)
## Helm config
## Connect Your Nx Cloud Installation to Your SAML Set Up
It's now time to enable auth on NxCloud. Refer to the [auth guide](https://github.com/nrwl/nx-cloud-helm/blob/main/AUTH-GUIDE.md) here for instructions on configuring your Helm values file.
Contact your developer productivity engineer to connect your Nx Cloud instance to the SAML configuration.
@@ -0,0 +1,83 @@
# Custom GitHub App
Before creating your container, you'll need to create a GitHub app for your organisation.
## Creating a GitHub app
From GitHub, click on your profile picture and chose "Settings":
![Step 1](/nx-cloud/enterprise/single-tenant/images/github_auth_step_1.png)
Then "Developer settings" from the left-hand menu:
![Step 2](/nx-cloud/enterprise/single-tenant/images/github_auth_step_2.png)
Then "GitHub Apps":
![Step 3](/nx-cloud/enterprise/single-tenant/images/github_custom_app_step_3.avif)
And create a new GitHub app:
![Step 4](/nx-cloud/enterprise/single-tenant/images/github_custom_app_step_5.avif)
Give it a name, and a homepage URL. The callback URL is the important bit. It needs to be in this form:
```
[your-nx-cloud-url]/callbacks/github-user
# for example
https://my.nx-enterprise.url:8080/callbacks/github-user
```
Configure a webhook and give it a secret:
(the URL needs to match `https://<your-NxCloud-instance-URL>/nx-cloud/github-webhook-handler`)
![Step 5](/nx-cloud/enterprise/single-tenant/images/webhook.png)
Once you create the app, keep a note of the Client ID and App ID:
![Step 6](/nx-cloud/enterprise/single-tenant/images/github_custom_app_step_6.avif)
Then generate a new client secret, and save it somewhere secure (we'll use it in a bit):
![Step 7](/nx-cloud/enterprise/single-tenant/images/github_auth_step_7.png)
Finally, scroll down and download a private key:
![Step 7](/nx-cloud/enterprise/single-tenant/images/private-key.png)
Then navigate to your download location locally and stringify the contents of the private key:
```bash
awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' your-key.pem # keep a note of the output
```
Save the output of the above, as we'll also use it in a bit.
## Configure Permissions for the GitHub App
The following permissions are required for Nx Cloud to work:
Repository permissions:
- `Contents: Read & Write`
- `Pull requests: Read & Write`
- `Checks: Read Only`
- `Commit Statuses: Read & Write`
- `Issues: Read & Write`
- `Metadata: Read Only`
Organization permissions:
- `Administration: Read Only`
- `Members: Read Only`
## Connect Your Nx Cloud Installation
Provide the following values to your developer productivity engineer so they can help connect Nx Cloud to your custom GitHub app:
- Github App Client ID
- Github App Client Secret
- Github App App ID
- Github App Private Key
- GitHub App Webhook Secret

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 249 KiB

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 198 KiB

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Some files were not shown because too many files have changed in this diff Show More