Compare commits
53 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 140b869093 | |||
| dcac42e26e | |||
| ee1b87d470 | |||
| 1e85c397b0 | |||
| b0ba6c75c3 | |||
| b4c4a11d7a | |||
| 335c21aed1 | |||
| 695844f134 | |||
| cc98deff13 | |||
| bf8a370dc1 | |||
| 8f77235eb2 | |||
| a28b8f6fee | |||
| b988ae5597 | |||
| d31b9b727f | |||
| ff5db3b415 | |||
| 1e4b7812f9 | |||
| 05567cc48a | |||
| 68db37eb25 | |||
| 9621716e22 | |||
| 9ecd080847 | |||
| 26cab6fb22 | |||
| 417ac746bd | |||
| 07f19ed19b | |||
| 87bb127451 | |||
| 6f6b04c58d | |||
| eb6d777935 | |||
| 9cee36b626 | |||
| 193b571e34 | |||
| 83b226fcf1 | |||
| d969ecfc17 | |||
| 86785ec9a7 | |||
| 007bbfa103 | |||
| c2504a1004 | |||
| c01a702940 | |||
| 2f08c81d44 | |||
| ef38a30f11 | |||
| f889da9b29 | |||
| 1072f4f84b | |||
| 8164f5b56a | |||
| 34c4582a0b | |||
| a0b6608be8 | |||
| f381dfc6e9 | |||
| ebae9d80f1 | |||
| 0c65e7f536 | |||
| 5864b00ce4 | |||
| df88880aa1 | |||
| f26badb8c3 | |||
| 57f2ba9f45 | |||
| 41e3a963af | |||
| 0f9fdc2f7e | |||
| 8b9310d5f9 | |||
| 535296d16f | |||
| 78976a3585 |
@@ -48,7 +48,7 @@ commands:
|
||||
- run:
|
||||
name: Install pnpm package manager (linux)
|
||||
command: |
|
||||
npm install --prefix=$HOME/.local -g @pnpm/exe@9.8.0
|
||||
npm install --prefix=$HOME/.local -g @pnpm/exe@8
|
||||
- when:
|
||||
condition:
|
||||
equal: [<< parameters.os >>, macos]
|
||||
@@ -56,7 +56,7 @@ commands:
|
||||
- run:
|
||||
name: Install pnpm package manager (macos)
|
||||
command: |
|
||||
npm install -g @pnpm/exe@9.8.0
|
||||
npm install -g @pnpm/exe@8
|
||||
- run:
|
||||
name: Install Dependencies
|
||||
command: |
|
||||
@@ -86,12 +86,11 @@ jobs:
|
||||
NX_E2E_RUN_E2E: 'true'
|
||||
NX_CI_EXECUTION_ENV: 'linux'
|
||||
NX_CLOUD_DTE_V2: 'true'
|
||||
NX_CLOUD_DTE_SUMMARY: 'true'
|
||||
steps:
|
||||
- checkout
|
||||
- nx/set-shas:
|
||||
main-branch-name: 'master'
|
||||
- run: npx nx-cloud@next start-ci-run --distribute-on="auto linux-medium" --stop-agents-after="e2e"
|
||||
- run: npx nx-cloud@next start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" --stop-agents-after="e2e"
|
||||
- run:
|
||||
command: |
|
||||
sudo apt-get update
|
||||
@@ -115,7 +114,8 @@ jobs:
|
||||
pnpm nx run-many -t check-imports check-commit check-lock-files check-codeowners documentation --parallel=1 --no-dte &
|
||||
pids+=($!)
|
||||
|
||||
pnpm nx affected --targets=lint,test,build,e2e,e2e-ci --base=$NX_BASE --head=$NX_HEAD --parallel=3 &
|
||||
(pnpm nx affected --targets=lint,test,build --base=$NX_BASE --head=$NX_HEAD --parallel=3 &&
|
||||
pnpm nx affected --targets=e2e,e2e-ci --base=$NX_BASE --head=$NX_HEAD --parallel=1) &
|
||||
pids+=($!)
|
||||
|
||||
for pid in "${pids[@]}"; do
|
||||
@@ -158,12 +158,7 @@ jobs:
|
||||
- run:
|
||||
name: Run E2E Tests for macOS
|
||||
command: |
|
||||
HAS_CHANGED=$(node ./scripts/check-react-native-changes.js $NX_BASE $NX_HEAD);
|
||||
if $HAS_CHANGED; then
|
||||
pnpm nx affected -t e2e-macos-local --parallel=1 --base=$NX_BASE --head=$NX_HEAD
|
||||
else
|
||||
echo "Skip E2E tests for macOS as there are no changes in React Native projects."
|
||||
fi
|
||||
pnpm nx affected -t e2e-macos-ci --parallel=1 --base=$NX_BASE --head=$NX_HEAD
|
||||
no_output_timeout: 45m
|
||||
|
||||
# -------------------------
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
FROM mcr.microsoft.com/devcontainers/typescript-node:20-bullseye
|
||||
|
||||
# Update the underlying (Debian) OS, to make sure we have the latest security patches and libraries like 'GLIBC'
|
||||
RUN sudo apt-get update && sudo apt-get -y upgrade
|
||||
|
||||
# Update pnpm
|
||||
RUN npm install -g pnpm@8.15.7
|
||||
@@ -3,46 +3,31 @@
|
||||
{
|
||||
"name": "NxDevContainer",
|
||||
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
||||
|
||||
// Starting from a base image that already contains GLIBC v2.33 or higher (required by Nx)
|
||||
// Try a more recent distribution, if your are having build issues related to GLIBC version
|
||||
// Here we use 'bookworm', which is based on `Debian-12`, which comes with `GLIBC v2.36`
|
||||
// (Nx tools currenlty requires `GLIBC v2.33` or higher)
|
||||
"image": "mcr.microsoft.com/devcontainers/typescript-node:20-bookworm",
|
||||
|
||||
"build": {
|
||||
// Path is relative to the devcontainer.json file.
|
||||
"dockerfile": "Dockerfile"
|
||||
},
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/rust:1": {}
|
||||
},
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// 4211 = nx graph port
|
||||
// 4873 = verdaccio (local npm registry) port
|
||||
"forwardPorts": [4211, 4873],
|
||||
|
||||
"forwardPorts": [4211],
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "./.devcontainer/postCreateCommand.sh",
|
||||
|
||||
// Configure tool-specific properties.
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"nrwl.angular-console",
|
||||
"firsttris.vscode-jest-runner",
|
||||
"eamodio.gitlens",
|
||||
"mhutchie.git-graph",
|
||||
"mutantdino.resourcemonitor" // to monitor cpu, memory usage from the dev container
|
||||
"eamodio.gitlens"
|
||||
],
|
||||
"settings": {
|
||||
"debug.javascript.autoAttachFilter": "disabled" // workaround for that issue: https://github.com/microsoft/vscode-js-debug/issues/374#issuecomment-622239998
|
||||
"debug.javascript.autoAttachFilter": "onlyWithFlag" // workaround for that issue: https://github.com/microsoft/vscode-js-debug/issues/374#issuecomment-622239998
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// To improve disk performances when installing node modules
|
||||
// See https://code.visualstudio.com/remote/advancedcontainers/improve-performance
|
||||
"mounts": [
|
||||
"source=${localWorkspaceFolderBasename}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume"
|
||||
],
|
||||
}
|
||||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||
"remoteUser": "root"
|
||||
// "remoteUser": "root"
|
||||
}
|
||||
|
||||
@@ -1,23 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Update the underlying (Debian) OS, to make sure we have the latest security patches and libraries like 'GLIBC'
|
||||
echo "⚙️ Updating the underlying OS..."
|
||||
sudo apt-get update && sudo apt-get -y upgrade
|
||||
|
||||
# Uninstall globally installed PNPM (required version will be reinstalled through corepack)
|
||||
echo "❌ Uninstalling globally installed PNPM..."
|
||||
npm uninstall -g pnpm
|
||||
|
||||
# Prevent corepack from prompting user before downloading PNPM
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
|
||||
# Enable corepack
|
||||
corepack enable
|
||||
|
||||
# Install the PNPM version defined in the root package.json
|
||||
echo "⚙️ Installing required PNPM version..."
|
||||
corepack prepare --activate
|
||||
|
||||
# Install NPM dependencies
|
||||
echo "⚙️ Installing NPM dependencies..."
|
||||
# Install dependencies
|
||||
pnpm install --frozen-lockfile
|
||||
|
||||
|
||||
@@ -61,8 +61,7 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"@nx/workspace/valid-command-object": "error"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -22,7 +22,7 @@ env:
|
||||
NX_RUN_GROUP: ${{ github.run_id }}-${{ github.run_attempt }}
|
||||
CYPRESS_INSTALL_BINARY: 0
|
||||
NODE_VERSION: 18
|
||||
PNPM_VERSION: 9.8.0 # Aligned with root package.json (pnpm/action-setup will helpfully error if out of sync)
|
||||
PNPM_VERSION: 8.15.7 # Aligned with root package.json (pnpm/action-setup will helpfully error if out of sync)
|
||||
|
||||
jobs:
|
||||
# We first need to determine the version we are releasing, and if we need a custom repo or ref to use for the git checkout in subsequent steps.
|
||||
@@ -115,7 +115,7 @@ jobs:
|
||||
fi
|
||||
|
||||
build:
|
||||
needs: [ resolve-required-data ]
|
||||
needs: [resolve-required-data]
|
||||
if: ${{ github.repository_owner == 'nrwl' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -138,7 +138,7 @@ jobs:
|
||||
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
|
||||
build: |-
|
||||
set -e &&
|
||||
npm i -g pnpm@9.8.0 --force &&
|
||||
npm i -g pnpm@8.15.7 --force &&
|
||||
pnpm --version &&
|
||||
pnpm install --frozen-lockfile &&
|
||||
pnpm nx run-many --verbose --target=build-native -- --target=x86_64-unknown-linux-gnu
|
||||
@@ -147,7 +147,7 @@ jobs:
|
||||
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
|
||||
build: |-
|
||||
set -e &&
|
||||
npm i -g pnpm@9.8.0 --force &&
|
||||
npm i -g pnpm@8.15.7 --force &&
|
||||
pnpm --version &&
|
||||
pnpm install --frozen-lockfile &&
|
||||
pnpm nx run-many --verbose --target=build-native -- --target=x86_64-unknown-linux-musl
|
||||
@@ -165,7 +165,7 @@ jobs:
|
||||
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
|
||||
build: |-
|
||||
set -e &&
|
||||
npm i -g pnpm@9.8.0 --force &&
|
||||
npm i -g pnpm@8.15.7 --force &&
|
||||
pnpm --version &&
|
||||
pnpm install --frozen-lockfile &&
|
||||
pnpm nx run-many --verbose --target=build-native -- --target=aarch64-unknown-linux-gnu
|
||||
@@ -191,7 +191,7 @@ jobs:
|
||||
build: |-
|
||||
set -e &&
|
||||
rustup target add aarch64-unknown-linux-musl &&
|
||||
npm i -g pnpm@9.8.0 --force &&
|
||||
npm i -g pnpm@8.15.7 --force &&
|
||||
pnpm --version &&
|
||||
pnpm install --frozen-lockfile &&
|
||||
pnpm nx run-many --verbose --target=build-native -- --target=aarch64-unknown-linux-musl
|
||||
@@ -287,9 +287,9 @@ jobs:
|
||||
if-no-files-found: error
|
||||
|
||||
build-freebsd:
|
||||
needs: [ resolve-required-data ]
|
||||
needs: [resolve-required-data]
|
||||
if: ${{ github.repository_owner == 'nrwl' }}
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: macos-13-large
|
||||
name: Build FreeBSD
|
||||
timeout-minutes: 45
|
||||
steps:
|
||||
@@ -302,7 +302,7 @@ jobs:
|
||||
- name: Build
|
||||
id: build
|
||||
if: ${{ github.event_name != 'schedule' && !github.event.inputs.pr }}
|
||||
uses: cross-platform-actions/action@v0.25.0
|
||||
uses: cross-platform-actions/action@v0.22.0
|
||||
env:
|
||||
DEBUG: napi:*
|
||||
RUSTUP_IO_THREADS: 1
|
||||
@@ -310,15 +310,15 @@ jobs:
|
||||
PLAYWRIGHT_BROWSERS_PATH: 0
|
||||
with:
|
||||
operating_system: freebsd
|
||||
version: '14.0'
|
||||
version: '13.2'
|
||||
architecture: x86-64
|
||||
environment_variables: DEBUG RUSTUP_IO_THREADS CI NX_PREFER_TS_NODE PLAYWRIGHT_BROWSERS_PATH
|
||||
shell: bash
|
||||
run: |
|
||||
env
|
||||
whoami
|
||||
sudo pkg install -y -f node libnghttp2 www/npm git
|
||||
sudo npm install --location=global --ignore-scripts pnpm@9.8.0
|
||||
sudo pkg install -y -f node libnghttp2 npm git
|
||||
sudo npm install --location=global --ignore-scripts pnpm@8.15.7
|
||||
curl https://sh.rustup.rs -sSf --output rustup.sh
|
||||
sh rustup.sh -y --profile minimal --default-toolchain stable
|
||||
source "$HOME/.cargo/env"
|
||||
@@ -333,6 +333,8 @@ jobs:
|
||||
whoami
|
||||
env
|
||||
freebsd-version
|
||||
mkdir -p /Users/runner/work/_temp/_github_workflow
|
||||
echo "{}" > /Users/runner/work/_temp/_github_workflow/event.json
|
||||
pnpm install --frozen-lockfile --ignore-scripts
|
||||
pnpm nx run-many --verbose --outputStyle stream --target=build-native -- --target=x86_64-unknown-freebsd
|
||||
pnpm nx reset
|
||||
@@ -397,10 +399,7 @@ jobs:
|
||||
run: ls -R artifacts
|
||||
shell: bash
|
||||
- name: Build Wasm
|
||||
run: |
|
||||
wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-23/wasi-sdk-23.0-x86_64-linux.tar.gz
|
||||
tar -xvf wasi-sdk-23.0-x86_64-linux.tar.gz
|
||||
pnpm build:wasm
|
||||
run: pnpm build:wasm
|
||||
- name: Publish
|
||||
env:
|
||||
VERSION: ${{ needs.resolve-required-data.outputs.version }}
|
||||
@@ -440,7 +439,7 @@ jobs:
|
||||
pr_failure_comment:
|
||||
# Run this job if it is a PR release, running on the nrwl origin, and any of the required jobs failed
|
||||
if: ${{ github.repository_owner == 'nrwl' && github.event.inputs.pr && always() && contains(needs.*.result, 'failure') }}
|
||||
needs: [ resolve-required-data, build, build-freebsd, publish ]
|
||||
needs: [resolve-required-data, build, build-freebsd, publish]
|
||||
name: (PR Release Failure Only) Create comment for failed PR release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
@@ -22,7 +22,6 @@ jest.debug.config.js
|
||||
/graph/client/src/assets/generated-source-maps
|
||||
/nx-dev/nx-dev/public/documentation
|
||||
/nx-dev/nx-dev/public/images/open-graph
|
||||
**/tests/temp-db
|
||||
|
||||
# Issues scraper creates these files, stored by github's cache
|
||||
/scripts/issues-scraper/cached
|
||||
@@ -59,4 +58,3 @@ out
|
||||
.rustup/
|
||||
target
|
||||
*.wasm
|
||||
/wasi-sdk*
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
NX_DB_CACHE=true
|
||||
@@ -1,7 +1,7 @@
|
||||
launch-templates:
|
||||
linux-medium:
|
||||
resource-class: 'docker_linux_amd64/medium+'
|
||||
image: 'ubuntu22.04-node20.11-v10'
|
||||
image: 'ubuntu22.04-node20.11-v3'
|
||||
env:
|
||||
GIT_AUTHOR_EMAIL: test@test.com
|
||||
GIT_AUTHOR_NAME: Test
|
||||
@@ -11,24 +11,24 @@ launch-templates:
|
||||
NPM_CONFIG_PREFIX: '/home/workflows/.npm-global'
|
||||
init-steps:
|
||||
- name: Checkout
|
||||
uses: 'nrwl/nx-cloud-workflows/v4/workflow-steps/checkout/main.yaml'
|
||||
uses: 'nrwl/nx-cloud-workflows/v3.6/workflow-steps/checkout/main.yaml'
|
||||
- name: Cache restore
|
||||
uses: 'nrwl/nx-cloud-workflows/v4/workflow-steps/cache/main.yaml'
|
||||
inputs:
|
||||
key: 'pnpm-lock.yaml'
|
||||
paths: |
|
||||
uses: 'nrwl/nx-cloud-workflows/v3.6/workflow-steps/cache/main.yaml'
|
||||
env:
|
||||
KEY: 'pnpm-lock.yaml'
|
||||
PATHS: |
|
||||
node_modules
|
||||
~/.cache/Cypress
|
||||
~/.cache/ms-playwright
|
||||
~/.pnpm-store
|
||||
base_branch: 'master'
|
||||
BASE_BRANCH: 'master'
|
||||
- name: Install e2e deps
|
||||
script: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ca-certificates lsof libvips-dev libglib2.0-dev libgirepository1.0-dev
|
||||
- name: Install Pnpm
|
||||
script: |
|
||||
npm install -g pnpm@9.8.0
|
||||
npm install -g pnpm@8
|
||||
|
||||
- name: Pnpm Install
|
||||
script: |
|
||||
|
||||
@@ -172,7 +172,6 @@ rust-toolchain @nrwl/nx-native-reviewers
|
||||
/CONTRIBUTING.md @FrozenPandaz @isaacplmann
|
||||
/CODE_OF_CONDUCT.md @FrozenPandaz @isaacplmann
|
||||
/CODEOWNERS @FrozenPandaz @AgentEnder
|
||||
/packages/nx/src/nx-cloud/utilities/url-shorten.ts @MaxKless
|
||||
|
||||
# Scripts
|
||||
/scripts/documentation @nrwl/nx-docs-reviewers
|
||||
|
||||
@@ -49,33 +49,15 @@ The repo comes with a preconfigured `devcontainer.json` file (located in `.devco
|
||||
|
||||
If you open the repo in [Github Codespace](https://github.com/features/codespaces), it will also leverage this config file, to setup the codespace, with the same required tools.
|
||||
|
||||
> 💡 **Troubleshooting**
|
||||
>
|
||||
> If you are having issues when running Nx commands like `build`, `test`... related to the version of `GLIBC`,
|
||||
> it probably means the version that is installed on the devcontainer, **is outdated** compare to the minimum version required by Nx tools.
|
||||
>
|
||||
> You can check currently installed version by running the following command, in a terminal within the container:
|
||||
>
|
||||
> `ldd --version`
|
||||
>
|
||||
> Then, try updating the base image used in [devcontainer.json](.devcontainer/devcontainer.json) and rebuild it, to see if it solved the issue.
|
||||
>
|
||||
> Current base image is `"mcr.microsoft.com/devcontainers/typescript-node:20-bookworm"` which is based on `Debian-12 (bookworm)`,
|
||||
> which comes with `GLIBC v2.36` pre-installed (Nx tools currenlty requires `GLIBC v2.33` or higher).
|
||||
|
||||
## Building the Project
|
||||
|
||||
> 💡 Nx uses `Rust` to build native bindings for Node. Please make sure that you have Rust installed via [rustup.rs](https://rustup.rs)
|
||||
> If you have `VSCode` + `Docker`, this can be automated for you, see [section](#development-workstation-setup) above
|
||||
> Nx uses Rust to build native bindings for Node. Please make sure that you have Rust installed via [rustup.rs](https://rustup.rs)
|
||||
> If you have VSCode + Docker, this can be automated for you, see [section](#development-workstation-setup) above
|
||||
|
||||
After cloning the project to your machine, to install the dependencies, run:
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
|
||||
// or prefer...
|
||||
|
||||
pnpm install --frozen-lockfile // if you haven't changed any dependency
|
||||
pnpm i
|
||||
```
|
||||
|
||||
To build all the packages, run:
|
||||
|
||||
@@ -65,21 +65,6 @@ version = "0.2.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
|
||||
|
||||
[[package]]
|
||||
name = "android-tzdata"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
||||
|
||||
[[package]]
|
||||
name = "android_system_properties"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anstyle"
|
||||
version = "1.0.6"
|
||||
@@ -141,9 +126,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.81"
|
||||
version = "0.1.80"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
|
||||
checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -186,29 +171,6 @@ dependencies = [
|
||||
"scoped-tls",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bindgen"
|
||||
version = "0.69.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"cexpr",
|
||||
"clang-sys",
|
||||
"itertools",
|
||||
"lazy_static",
|
||||
"lazycell",
|
||||
"log",
|
||||
"prettyplease",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"regex",
|
||||
"rustc-hash",
|
||||
"shlex",
|
||||
"syn 2.0.53",
|
||||
"which",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
@@ -217,9 +179,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.6.0"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
||||
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
|
||||
|
||||
[[package]]
|
||||
name = "bitvec"
|
||||
@@ -253,12 +215,6 @@ dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
||||
|
||||
[[package]]
|
||||
name = "bytecheck"
|
||||
version = "0.6.12"
|
||||
@@ -289,21 +245,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.1.16"
|
||||
version = "1.0.90"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b"
|
||||
dependencies = [
|
||||
"shlex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cexpr"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
|
||||
dependencies = [
|
||||
"nom",
|
||||
]
|
||||
checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
@@ -311,31 +255,6 @@ version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
|
||||
dependencies = [
|
||||
"android-tzdata",
|
||||
"iana-time-zone",
|
||||
"js-sys",
|
||||
"num-traits",
|
||||
"wasm-bindgen",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clang-sys"
|
||||
version = "1.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
|
||||
dependencies = [
|
||||
"glob",
|
||||
"libc",
|
||||
"libloading",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "colored"
|
||||
version = "2.1.0"
|
||||
@@ -367,12 +286,6 @@ dependencies = [
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.8.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-channel"
|
||||
version = "0.5.12"
|
||||
@@ -413,7 +326,7 @@ version = "0.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"crossterm_winapi",
|
||||
"libc",
|
||||
"mio",
|
||||
@@ -517,18 +430,6 @@ version = "2.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
|
||||
|
||||
[[package]]
|
||||
name = "fallible-iterator"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
|
||||
|
||||
[[package]]
|
||||
name = "fallible-streaming-iterator"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
|
||||
|
||||
[[package]]
|
||||
name = "faster-hex"
|
||||
version = "0.9.0"
|
||||
@@ -754,7 +655,7 @@ version = "0.14.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fbd06203b1a9b33a78c88252a625031b094d9e1b647260070c25b09910c0a804"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"bstr",
|
||||
"gix-path",
|
||||
"libc",
|
||||
@@ -802,7 +703,7 @@ version = "0.14.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5db19298c5eeea2961e5b3bf190767a2d1f09b8802aeb5f258e42276350aff19"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"bstr",
|
||||
"gix-features",
|
||||
"gix-path",
|
||||
@@ -850,9 +751,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gix-path"
|
||||
version = "0.10.9"
|
||||
version = "0.10.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8d23d5bbda31344d8abc8de7c075b3cf26e5873feba7c4a15d916bce67382bd9"
|
||||
checksum = "23623cf0f475691a6d943f898c4d0b89f5c1a2a64d0f92bce0e0322ee6528783"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"gix-trace",
|
||||
@@ -888,7 +789,7 @@ version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fddc27984a643b20dd03e97790555804f98cf07404e0e552c0ad8133266a79a1"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"gix-path",
|
||||
"libc",
|
||||
"windows-sys 0.52.0",
|
||||
@@ -933,12 +834,6 @@ dependencies = [
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glob"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||
|
||||
[[package]]
|
||||
name = "globset"
|
||||
version = "0.4.14"
|
||||
@@ -958,7 +853,7 @@ version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"ignore",
|
||||
"walkdir",
|
||||
]
|
||||
@@ -984,15 +879,6 @@ dependencies = [
|
||||
"rkyv",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashlink"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af"
|
||||
dependencies = [
|
||||
"hashbrown 0.14.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.3.9"
|
||||
@@ -1008,29 +894,6 @@ dependencies = [
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone"
|
||||
version = "0.1.60"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"core-foundation-sys",
|
||||
"iana-time-zone-haiku",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"windows-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone-haiku"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "0.5.0"
|
||||
@@ -1150,15 +1013,6 @@ version = "1.0.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.70"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
|
||||
dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "kqueue"
|
||||
version = "1.0.8"
|
||||
@@ -1185,17 +1039,11 @@ version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||
|
||||
[[package]]
|
||||
name = "lazycell"
|
||||
version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.155"
|
||||
version = "0.2.153"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
|
||||
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
@@ -1207,17 +1055,6 @@ dependencies = [
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libsqlite3-sys"
|
||||
version = "0.30.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.4.13"
|
||||
@@ -1240,18 +1077,6 @@ version = "0.4.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
|
||||
|
||||
[[package]]
|
||||
name = "machine-uid"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a842fb2a43d7a19fe4a6eab96456c417aea97a166f2de0e82410df5bfd7e0cbc"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"cc",
|
||||
"libc",
|
||||
"winreg 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "matchers"
|
||||
version = "0.1.0"
|
||||
@@ -1342,7 +1167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "54a63d0570e4c3e0daf7a8d380563610e159f538e20448d6c911337246f40e84"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"ctor",
|
||||
"napi-derive",
|
||||
"napi-sys",
|
||||
@@ -1352,9 +1177,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "napi-build"
|
||||
version = "2.1.3"
|
||||
version = "2.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a"
|
||||
checksum = "2f9130fccc5f763cf2069b34a089a18f0d0883c66aceb81f2fad541a3d823c43"
|
||||
|
||||
[[package]]
|
||||
name = "napi-derive"
|
||||
@@ -1429,7 +1254,7 @@ version = "0.27.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
]
|
||||
@@ -1456,7 +1281,7 @@ version = "6.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"crossbeam-channel",
|
||||
"filetime",
|
||||
"fsevent-sys",
|
||||
@@ -1540,7 +1365,6 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"assert_fs",
|
||||
"chrono",
|
||||
"colored",
|
||||
"crossbeam-channel",
|
||||
"crossterm",
|
||||
@@ -1552,7 +1376,6 @@ dependencies = [
|
||||
"ignore",
|
||||
"ignore-files 2.1.0",
|
||||
"itertools",
|
||||
"machine-uid",
|
||||
"mio",
|
||||
"napi",
|
||||
"napi-build",
|
||||
@@ -1564,7 +1387,6 @@ dependencies = [
|
||||
"rayon",
|
||||
"regex",
|
||||
"rkyv",
|
||||
"rusqlite",
|
||||
"swc_common",
|
||||
"swc_ecma_ast",
|
||||
"swc_ecma_dep_graph",
|
||||
@@ -1663,12 +1485,6 @@ version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
|
||||
|
||||
[[package]]
|
||||
name = "portable-pty"
|
||||
version = "0.8.1"
|
||||
@@ -1686,7 +1502,7 @@ dependencies = [
|
||||
"shared_library",
|
||||
"shell-words",
|
||||
"winapi",
|
||||
"winreg 0.10.1",
|
||||
"winreg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1734,16 +1550,6 @@ dependencies = [
|
||||
"termtree",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prettyplease"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"syn 2.0.53",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.79"
|
||||
@@ -1965,20 +1771,6 @@ dependencies = [
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rusqlite"
|
||||
version = "0.32.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"fallible-iterator",
|
||||
"fallible-streaming-iterator",
|
||||
"hashlink",
|
||||
"libsqlite3-sys",
|
||||
"smallvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.23"
|
||||
@@ -1997,7 +1789,7 @@ version = "0.38.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
@@ -2130,12 +1922,6 @@ version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
|
||||
|
||||
[[package]]
|
||||
name = "shlex"
|
||||
version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook"
|
||||
version = "0.3.17"
|
||||
@@ -2313,7 +2099,7 @@ version = "0.107.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6528f3dd33e11eae9d7fe9fee4a79d5bbd211c74426ab2eec64dc82bd2eb74d"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"bitflags 2.5.0",
|
||||
"is-macro",
|
||||
"num-bigint",
|
||||
"scoped-tls",
|
||||
@@ -2501,9 +2287,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.3.36"
|
||||
version = "0.3.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
|
||||
checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
|
||||
dependencies = [
|
||||
"deranged",
|
||||
"itoa",
|
||||
@@ -2524,9 +2310,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
|
||||
|
||||
[[package]]
|
||||
name = "time-macros"
|
||||
version = "0.2.18"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
|
||||
checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
|
||||
dependencies = [
|
||||
"num-conv",
|
||||
"time-core",
|
||||
@@ -2732,12 +2518,6 @@ version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
||||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.4"
|
||||
@@ -2760,61 +2540,6 @@ version = "0.11.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.93"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
"wasm-bindgen-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-backend"
|
||||
version = "0.2.93"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"log",
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.93"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.93"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.93"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
|
||||
|
||||
[[package]]
|
||||
name = "watchexec"
|
||||
version = "3.0.1"
|
||||
@@ -2894,18 +2619,6 @@ dependencies = [
|
||||
"watchexec-signals",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "which"
|
||||
version = "4.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
|
||||
dependencies = [
|
||||
"either",
|
||||
"home",
|
||||
"once_cell",
|
||||
"rustix",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
@@ -2937,15 +2650,6 @@ version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.48.0"
|
||||
@@ -3103,16 +2807,6 @@ dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winreg"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wyz"
|
||||
version = "0.5.1"
|
||||
|
||||
@@ -21,45 +21,26 @@
|
||||
|
||||
# Smart Monorepos · Fast CI
|
||||
|
||||
Nx is a build system, optimized for monorepos, with plugins for popular frameworks and tools and advanced CI capabilities including caching and distribution.
|
||||
Nx is a build system with built-in tooling and advanced CI capabilities. It helps you maintain and scale monorepos, both locally and on CI.
|
||||
|
||||
Create a new Nx workspace with
|
||||
A few links to help you get started:
|
||||
|
||||
```shell
|
||||
npx create-nx-workspace
|
||||
```
|
||||
- [Nx.Dev: Documentation, Guides, Interactive Tutorials](https://nx.dev)
|
||||
- [Nx.Dev: Core Tutorials](https://nx.dev/getting-started/intro)
|
||||
- [Recipe: Adding Nx to an Existing Monorepo](https://nx.dev/recipes/adopting-nx/adding-to-monorepo)
|
||||
- [Official Nx YouTube Channel](https://www.youtube.com/@NxDevtools)
|
||||
- [Blog Posts About Nx](https://blog.nrwl.io/nx/home)
|
||||
|
||||
...or run
|
||||
|
||||
```
|
||||
npx nx init
|
||||
```
|
||||
|
||||
to add Nx to your existing workspace to get faster task scheduling, caching and more. More [in the docs](https://nx.dev/getting-started/intro#try-nx-yourself).
|
||||
|
||||
## Learn about CI with Nx Cloud
|
||||
|
||||
[Nx Cloud](https://nx.dev/nx-cloud) connects directly to your existing CI setup, helping you scale your monorepos on CI by leveraging [remote caching](https://nx.dev/ci/features/remote-cache?utm_source=nxrepo&utm_medium=readme&utm_campaign=nxrepo), [task distribution across multiple machines](https://nx.dev/ci/features/distribute-task-execution?utm_source=nxrepo&utm_medium=readme&utm_campaign=nxrepo), [automated e2e test splitting](https://nx.dev/ci/features/split-e2e-tasks?utm_source=nxrepo&utm_medium=readme&utm_campaign=nxrepo) and [automated task flakiness detection](https://nx.dev/ci/features/flaky-tasks?utm_source=nxrepo&utm_medium=readme&utm_campaign=nxrepo)
|
||||
|
||||
Connect your existing Nx workspace with
|
||||
|
||||
```
|
||||
npx nx connect
|
||||
```
|
||||
|
||||
Learn more in the [Nx CI docs »](https://nx.dev/ci/intro?utm_source=nxrepo&utm_medium=readme&utm_campaign=nxrepo)
|
||||
|
||||
## Useful links
|
||||
|
||||
- [Our docs](https://nx.dev/docs)
|
||||
- [Our blog](https://nx.dev/blog)
|
||||
- [Our community discord, live stream,...](https://nx.dev/community)
|
||||
- [Our YouTube channel](https://www.youtube.com/@NxDevtools)
|
||||
- [Our Twitter/X](https://x.com/nxdevtools)
|
||||
|
||||
<p style="text-align: center;"><a href="https://www.youtube.com/@nxdevtools/videos" target="_blank" rel="noreferrer"><img src="./images/nx-courses-and-videos.svg"
|
||||
<p style="text-align: center;"><a href="https://nx.dev/#learning-materials" target="_blank" rel="noreferrer"><img src="./images/nx-courses-and-videos.svg"
|
||||
width="100%" alt="Nx - Smart Monorepos · Fast CI"></a></p>
|
||||
|
||||
# Engage with the Core Team and the Community
|
||||
|
||||
- [Nx.Dev Community Page: Community Discord Channel, Newsletter, etc.](https://nx.dev/community)
|
||||
- [The Nx Show Playlist on YouTube](https://www.youtube.com/playlist?list=PLakNactNC1dE8KLQ5zd3fQwu_yQHjTmR5). It's a
|
||||
regular YouTube stream where we talk all things Nx. Join the stream, ask questions, etc.
|
||||
- [Follow Nx on Twitter](https://twitter.com/NxDevTools)
|
||||
|
||||
## Want to help?
|
||||
|
||||
If you want to file a bug or submit a PR, read up on
|
||||
|
||||
@@ -379,11 +379,6 @@
|
||||
"description": "Nx plugin that applies betterer standards on a per-project basis.",
|
||||
"url": "https://github.com/spaceribs/spaceribs/tree/main/packages/nx-betterer"
|
||||
},
|
||||
{
|
||||
"name": "@nx-extensions/helm",
|
||||
"description": "Nx plugin providing comprehensive support for Helm charts, including generation, packaging, and publishing capabilities.",
|
||||
"url": "https://github.com/marcolongol/nx-extensions/tree/main/packages/helm"
|
||||
},
|
||||
{
|
||||
"name": "@nx-tools/nx-container",
|
||||
"description": "Nx plugin to build OCI containers with Docker, Podman or Kaniko.",
|
||||
@@ -457,7 +452,7 @@
|
||||
{
|
||||
"name": "@naxodev/nx-cloudflare",
|
||||
"description": "Nx plugin for Cloudflare, in particular Cloudflare workers. It allows to generate build and run Cloudflare workers in your Nx workspace.",
|
||||
"url": "https://github.com/naxodev/oss/tree/main/packages/nx-cloudflare"
|
||||
"url": "https://github.com/naxodev/oss/tree/main/packages/plugins/nx-cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "@ziacik/azure-func",
|
||||
@@ -493,10 +488,5 @@
|
||||
"name": "@huge-nx/conventions",
|
||||
"description": "Plugin to generate and manage Nx workspaces by adhering to established workspace conventions.",
|
||||
"url": "https://github.com/jogelin/huge-nx"
|
||||
},
|
||||
{
|
||||
"name": "nx-github-pages",
|
||||
"description": "A small Nx plugin to make deploying static projects to GitHub Pages easy.",
|
||||
"url": "https://github.com/agentender/nx-github-pages"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -94,14 +94,14 @@ Your content goes here.
|
||||
{% /callout %}
|
||||
```
|
||||
|
||||
#### Deep Dives
|
||||
#### Disclosure
|
||||
|
||||
These are special callouts that are collapsed with the intention of containing more deep-dive information about the topic which isn't required to understand right away.
|
||||
A disclosure can be used for less important information that is initially collapsed.
|
||||
|
||||
```markdown
|
||||
{% callout type="deepdive" title="string" %}
|
||||
Your deep-dive content goes here.
|
||||
{% /callout %}
|
||||
{% disclosure title="string" %}
|
||||
Your content goes here.
|
||||
{% /disclosure %}
|
||||
```
|
||||
|
||||
#### Cards
|
||||
@@ -183,14 +183,6 @@ To display a terminal command, use:
|
||||
```
|
||||
````
|
||||
|
||||
You can also add a title to the shell as follows:
|
||||
|
||||
````
|
||||
```shell {% title="Build the app" %}
|
||||
npx nx build
|
||||
```
|
||||
````
|
||||
|
||||
#### Terminal Output
|
||||
|
||||
You can display your terminal output with a dedicated component the same way you would show code.
|
||||
|
||||
@@ -90,7 +90,7 @@ Learn more at [enterprise](/enterprise).
|
||||
|
||||
Nx Cloud has evolved a lot since we first released it in 2020, and is changing even more in 2023. To better adapt to Nx Cloud being a critical CI tool, we changed our pricing model to be more consistent and predictable for CI workloads.
|
||||
|
||||
Nx Cloud’s previous pricing was based on time savings from Nx Cloud, which made sense when Nx Cloud was strictly a distributed caching service. The [new pricing model](/pricing) is based entirely on the number of CI pipeline executions per calendar month. We believe this is a simpler and more transparent model that should help you predict your costs far more easily.
|
||||
Nx Cloud’s previous pricing was based on time savings from Nx Cloud, which made sense when Nx Cloud was strictly a distributed caching service. The [new pricing model](https://nx.app/pricing) is based entirely on the number of CI pipeline executions per calendar month. We believe this is a simpler and more transparent model that should help you predict your costs far more easily.
|
||||
|
||||

|
||||
|
||||
@@ -100,7 +100,7 @@ Finally, the **Enterprise plan** is for companies that want full control over wh
|
||||
|
||||
All these changes should allow developers to choose the plan that best suits their needs and budget more easily, ensuring a seamless and transparent experience regarding pricing and subscription management.
|
||||
|
||||
Learn more at [https://nx.dev/pricing](/pricing).
|
||||
Learn more at [https://nx.app/pricing](https://nx.app/pricing).
|
||||
|
||||
## Coming Next
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ We’ve been working hard at reducing and simplifying all the configuration requ
|
||||
|
||||
At Nx Conf in New York City, we unveiled the next big step for Nx: **Nx Workflows**.
|
||||
|
||||
If you missed it, Simon Critchley walks you through in his [Nx Conf](/blog/nx-conf-2023-recap) talk:
|
||||
If you missed it, Simon Critchley walks you through in his [Nx Conf](https://dev.to/nx/nx-conf-2023-recap-53ep) talk:
|
||||
|
||||
{% youtube src="https://www.youtube.com/embed/JG1FWfZFByM?si=7_NzxJP8nA7RbFhl" /%}
|
||||
|
||||
@@ -231,7 +231,7 @@ In Nx 17, we removed any remaining traces of `tslint` from our linter package, s
|
||||
|
||||
As we solidify this command, we intend to bring robust support for various versioning and publishing strategies, as well as built-in support for publishing packages or modules to a variety of languages, registries, and platforms.
|
||||
|
||||
For more [checkout our API docs](/nx-api/nx/documents/release), and be sure to catch James Henry’s announcement of this new command at [Nx Conf](/blog/nx-conf-2023-recap):
|
||||
For more [checkout our API docs](/nx-api/nx/documents/release), and be sure to catch James Henry’s announcement of this new command at [Nx Conf](https://dev.to/nx/nx-conf-2023-recap-53ep):
|
||||
|
||||
{% youtube src="https://www.youtube.com/embed/p5qW5-2nKqI?si=FzpGMJwPVINc1hgL" /%}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ Nx Console has evolved from an experimental side project of the Nx team to a cor
|
||||
|
||||

|
||||
|
||||
This year we not only added a lot of new features to Nx Console, but also rewrote its [internals](/blog/nx-console-gets-lit) which paved the way to expand Nx Console to other code editors: **JetBrains IDEs.**
|
||||
This year we not only added a lot of new features to Nx Console, but also rewrote its [internals](https://blog.nrwl.io/nx-console-gets-lit-ca339743ff4f) which paved the way to expand Nx Console to other code editors: **JetBrains IDEs.**
|
||||
|
||||
Yes, this means you can now use the latest Nx Console directly in your [Webstorm IDE](https://www.jetbrains.com/webstorm/). Read the [announcement blog post](https://blog.nrwl.io/expanding-nx-console-to-jetbrains-ides-8a5b80fff2d7) for all the details or go ahead and install Nx Console if you didn’t already:
|
||||
|
||||
@@ -329,7 +329,7 @@ You can also browse them in the [nx-recipes](https://github.com/nrwl/nx-recipes)
|
||||
|
||||
{% tweet url="https://twitter.com/juristr/status/1726977598218199302" /%}
|
||||
|
||||
And obviously, we jumped on the AI train as well. A couple of months ago, we added the [Nx Assistant](/ai-chat). A ChatGPT-powered interface trained on our docs. [Katerina](https://twitter.com/psybercity) wrote about it [on our blog](/blog/nx-docs-ai-assistant). The AI chat allows to interactively ask questions about Nx and will give you relevant answers from our docs (including linking to the sources).
|
||||
And obviously, we jumped on the AI train as well. A couple of months ago, we added the [Nx Assistant](/ai-chat). A ChatGPT-powered interface trained on our docs. [Katerina](https://twitter.com/psybercity) wrote about it [on our blog](https://blog.nrwl.io/nx-docs-ai-assistant-433d238e45d4). The AI chat allows to interactively ask questions about Nx and will give you relevant answers from our docs (including linking to the sources).
|
||||
|
||||
## New Tagline: Smart Monorepos — Fast CI
|
||||
|
||||
@@ -349,7 +349,7 @@ We did it again! The second in-person Nx Conf was a resounding success, this tim
|
||||
|
||||

|
||||
|
||||
There’s not much to say. Check out some of the amazing talks. I did a [Nx Conf 2023 recap blog post](/blog/nx-conf-2023-recap).
|
||||
There’s not much to say. Check out some of the amazing talks. I did a [Nx Conf 2023 recap blog post](https://dev.to/nx/nx-conf-2023-recap-53ep).
|
||||
|
||||
## Looking ahead — 2024
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: Monorepos - Why Speed Matters
|
||||
slug: 'monorepos-why-speed-matters'
|
||||
authors: ['Katerina Skroumpelou', 'Jeff Cross']
|
||||
tags: [nx, nxdevtools, speed, ci]
|
||||
tags: nx, nxdevtools, speed, ci
|
||||
cover_image: '/blog/images/2024-03-20/featured_img.png'
|
||||
---
|
||||
|
||||
@@ -54,7 +54,7 @@ With Nx Replay, you can see significant speed improvements in your CI pipelines
|
||||
|
||||
[Nx Agents](/ci/features/distribute-task-execution) represent the pinnacle of task distribution optimization, ensuring that tasks are executed as efficiently as possible based on the specific requirements of each change. Some features that make up this effort are:
|
||||
|
||||
- [Easy integration with existing providers](/ci/recipes/set-up)
|
||||
- [Easy integration with existing providers](/ci/features/distribute-task-execution#cicd-guides)
|
||||
- Distribution is handled on the Nx Cloud infrastructure and all you need is a single line. What’s more, all results are played back to your original CI provider script which triggers the Nx Cloud distribution, so that you can make use of the resulting artifacts
|
||||
- [Efficient task distribution](/ci/features/dynamic-agents)
|
||||
- Save compute resources and reduce costs, minimizing idle time and compute waste
|
||||
|
||||
@@ -4,7 +4,6 @@ slug: 'reliable-ci-a-new-execution-model-fixing-both-flakiness-and-slowness'
|
||||
authors: [Victor Savkin]
|
||||
cover_image: '/blog/images/2024-03-21/featured_img.png'
|
||||
tags: [nx, nx-cloud, releases]
|
||||
pinned: true
|
||||
---
|
||||
|
||||
The proverbial slow and flaky CI isn’t the failure of the developers or even the testing tools. It’s the failure of the CI execution model we relied on for the last 20 years.
|
||||
@@ -104,7 +103,7 @@ Nx Cloud introduces an entirely different model. Instead of the graph of VMs, th
|
||||
By adding the following line…
|
||||
|
||||
```shell
|
||||
npx nx-cloud start-ci-run --distribute-on="3 linux-medium-js"
|
||||
npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js"
|
||||
```
|
||||
|
||||
... you are telling Nx Cloud to create five Nx Agents to execute all the tasks from all the commands that will follow.
|
||||
|
||||
@@ -82,7 +82,7 @@ Notice how all tasks are now appropriately grouped in the `E2E (CI)` group!
|
||||
|
||||
You can also find the same enhancements in Nx Cloud. Below is a view of all tasks in the [CI pipeline](https://staging.nx.app/runs/ctbAZfiLy3):
|
||||
|
||||
{% video-player src="/documentation/blog/media/2024-05-08/nx-cloud-atomizer-groupings.mp4" alt="Showing the Atomizer in Nx Cloud" link="https://staging.nx.app/runs/ctbAZfiLy3" /%}
|
||||
[](https://staging.nx.app/runs/ctbAZfiLy3)
|
||||
|
||||
Notice how all e2e groups are collapsed by default to give a concise view, while allowing you to expand to see how each individual task is progressing!
|
||||
|
||||
@@ -160,7 +160,7 @@ Since Nx 18 release, we also started using Project Crystal inside of the Nx repo
|
||||
|
||||
You can find a full list of fixes and features applied in this major release [here](https://github.com/nrwl/nx/releases/tag/19.0.0).
|
||||
|
||||
{% video-player src="/documentation/blog/media/2024-05-08/fixes.mp4" alt="A display listing the Github changelog" /%}
|
||||
[](https://github.com/nrwl/nx/releases/tag/19.0.0)
|
||||
|
||||
With Project Crystal landed now, we're also adjusting our priorities to place a higher importance on stability. You should see this reflected in Nx 19.
|
||||
|
||||
@@ -182,7 +182,7 @@ In February, we launched two big enhancements to Nx Cloud: the [Atomizer](/ci/fe
|
||||
|
||||
Since then, the Atomizer has received a nice UI update (as we had seen earlier):
|
||||
|
||||
{% video-player src="/documentation/blog/media/2024-05-08/nx-cloud-atomizer-groupings.mp4" alt="Showing the Atomizer in Nx Cloud" link="https://staging.nx.app/runs/ctbAZfiLy3" /%}
|
||||
[](https://staging.nx.app/runs/ctbAZfiLy3)
|
||||
|
||||
Since February, we also revamped our task distribution algorithms. This has resulted in a 5-20% (depending on the repo) increase in both speed and cost efficiency for our users.
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
---
|
||||
title: 'Nx Enterprise Podcast Episode 1: Hicham El Hammouchi'
|
||||
slug: 'hicham-el-hammouchi-podcast-1'
|
||||
authors: ['Zack DeRose']
|
||||
tags: [podcast]
|
||||
cover_image: /blog/images/2024-06-18/ep-1-hicham.png
|
||||
podcastYoutubeId: 8iiLB_2djZ8
|
||||
podcastSpotifyId: 24yagCNpu9EGj0fCwSDQkj
|
||||
podcastAmazonUrl: https://music.amazon.com/podcasts/a221fdad-36fd-4695-a5b4-038d7b99d284/episodes/899a2e4c-2e56-4dfa-a3e3-e69eb216f2b0/the-enterprise-software-podcast-by-nx-the-enterprise-software-podcast-by-nx-1-hicham-el-hamouchi
|
||||
podcastAppleUrl: https://podcasters.spotify.com/pod/show/enterprise-software/episodes/The-Enterprise-Software-Podcast-By-Nx-1--Hicham-El-Hamouchi-e2l0302
|
||||
podcastIHeartUrl: https://www.iheart.com/podcast/269-the-enterprise-software-po-186891508/episode/the-enterprise-software-podcast-by-nx-186891511/
|
||||
---
|
||||
|
||||
In this episode, Zack DeRose from Nx chats with Hicham El Hammouchi, a veteran in enterprise software. Hicham dives into his background, sharing his career journey and the wealth of experience he's gathered along the way.
|
||||
|
||||
They tackle the tough challenges that companies face in software development. Hicham offers practical insights and real-life examples from his own career, making complex issues easier to understand. He also shares some tried-and-true strategies for overcoming these hurdles, emphasizing the importance of teamwork and effective project management.
|
||||
|
||||
As the chat continues, Zack and Hicham explore the latest tech trends and innovations that are shaking up the industry. Hicham's forward-thinking views provide a sneak peek into the future of enterprise software. They also discuss detailed case studies of successful projects, highlighting the importance of staying focused on customer needs and feedback.
|
||||
@@ -1,18 +0,0 @@
|
||||
---
|
||||
title: 'Nx Enterprise Podcast Episode 2: Tine Kondo'
|
||||
slug: 'tine-kondo-podcast-2'
|
||||
authors: ['Zack DeRose']
|
||||
tags: [podcast]
|
||||
cover_image: /blog/images/2024-07-19/ep-2-tine.png
|
||||
podcastYoutubeId: Nzf3BmymfEo
|
||||
podcastSpotifyId: 0CCQaWCln7rvwkkVvsyxsk
|
||||
podcastAmazonUrl: https://music.amazon.com/podcasts/a221fdad-36fd-4695-a5b4-038d7b99d284/episodes/53934cd9-c521-441e-8523-8b947ed207ca/the-enterprise-software-podcast-by-nx-the-enterprise-software-podcast-by-nx-2-tine-kondo
|
||||
podcastAppleUrl: https://podcasts.apple.com/us/podcast/the-enterprise-software-podcast-by-nx-2-tine-kondo/id1752704996?i=1000662764990
|
||||
podcastIHeartUrl: https://www.iheart.com/podcast/269-the-enterprise-software-po-186891508/episode/the-enterprise-software-podcast-by-nx-197335640/
|
||||
---
|
||||
|
||||
In this episode, welcome Nx Champion and Nx Expert, Tine Kondo. Our discussion highlights how Nx is poised to make an impact in the Java space.
|
||||
|
||||
We touch on the difficulties larger organizations face when merging PRs in a timely manner, emphasizing how a monorepo alleviates the headache of coordinating multiple PRs across various repositories, and share firsthand experiences and frustrations with traditional multi-repo setups, underscoring the benefits of a unified approach.
|
||||
|
||||
In particular, Nx's new plugin: [@nx/gradle](/nx-api/gradle) is of interest, and Tine provides some valuable insight on the impact this plugin can make, as well as the importance for Maven support.
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
title: Introducing Explain with AI
|
||||
slug: 'explain-with-ai'
|
||||
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)**.
|
||||
|
||||
## Your ticket to fast error debugging
|
||||
|
||||
"[Explain with AI](/ci/features/explain-with-ai)" is a new feature for all Nx Cloud Pro users that is going to help you troubleshoot those pesky failing tasks. Whenever you get an error message on CI, look for the "Explain with AI" button on the upper right-hand corner:
|
||||
|
||||

|
||||
|
||||
Once you hit that button, we collect the terminal output and other Nx task information and sprinkle some AI on top of it to give you a suggested fix. That should help you quickly get to the bottom of the issue and get back to work quickly.
|
||||
|
||||

|
||||
|
||||
No more switching back and forth between a dozen tabs with different solutions. No more providing the right context for your masterfully written chat prompt. **Get your suggested fix and get back to work.**
|
||||
|
||||
Also make sure [to check out our docs](/ci/features/explain-with-ai) for more information.
|
||||
|
||||
## How can I start using this today?
|
||||
|
||||

|
||||
|
||||
Here's how you get started:
|
||||
|
||||
- **Step 1:** Go to your [Nx Cloud](https://cloud.nx.app/) organization settings
|
||||
- **Step 2:** Enable AI features
|
||||
- **Step 3:** Accept the Nx Cloud AI terms and conditions.
|
||||
- **Step 4:** You're all set ✨
|
||||
|
||||
Note that you'll need to be an organization admin for your Nx Cloud workspace to enable AI features.
|
||||
|
||||
{% call-to-action title="Log in to Nx Cloud" url="https://cloud.nx.app" icon="nxcloud" description="Enable AI features in your organization settings" %}
|
||||
Log in to Nx Cloud
|
||||
{% /call-to-action %}
|
||||
|
||||
### I want to try this, but I'm on the Hobby plan 🤔
|
||||
|
||||
If you're currently on the Hobby plan, you can start a free Pro plan trial for 14 days to try it out on your own workspace. No, we don't ask for credit cards to start a trial, so feel free to experiment!
|
||||
|
||||
## More to come!
|
||||
|
||||
This is just the first of a series of AI-powered features that we're going to be rolling out to your workspaces. We've got some cool features in the works already, which we're going to **announce publicly during the [Monorepo World](https://monorepo.world) conference in October**! So stay tuned!
|
||||
|
||||
## Learn more
|
||||
|
||||
- [Nx Docs](/getting-started/intro)
|
||||
- [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,295 +0,0 @@
|
||||
---
|
||||
title: 'Nx 19.5 is here! Stackblitz, Bun, Incremental Builds for Vite, Gradle Test Atomizer'
|
||||
slug: 'nx-19-5-adds-stackblitz-new-features-and-more'
|
||||
authors: ['Zack DeRose']
|
||||
cover_image: '/blog/images/2024-08-01/nx-19-5-thumbnail.png'
|
||||
tags: [nx, release]
|
||||
pinned: true
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
In this blog post:
|
||||
|
||||
- [Video Summary](#video-summary)
|
||||
- [Announcing Nx Cloud Hobby Tier](#announcing-nx-cloud-hobby-tier)
|
||||
- [StackBlitz Support](#stackblitz-support)
|
||||
- [Bun and Pnpm v9 Support](#bun-and-pnpm-v9-support)
|
||||
- [Local Flaky Task Detection](#local-flaky-task-detection)
|
||||
- [Project Detail View Enhancements](#project-detail-view-enhancements)
|
||||
- [Pattern Support for `targetDefaults`](#pattern-support-for-targetdefaults)
|
||||
- [Individual Targets Can Now Opt Out of Parallelism](#individual-targets-can-now-opt-out-of-parallelism)
|
||||
- [Support For Incremental Builds For Vite](#support-for-incremental-builds-for-vite)
|
||||
- [Project Crystal Conversion Generators](#project-crystal-conversion-generators)
|
||||
- [Gradle Composite Builds Support](#gradle-composite-builds-support)
|
||||
- [Experimental: Gradle Test Atomization](#experimental-gradle-test-atomization)
|
||||
- [Experimental: Nx Release Adds File Based Versioning Support](#experimental-nx-release-adds-file-based-versioning-support)
|
||||
- [Support for React 19 (rc) and Angular 18.1](#support-for-react-19-rc-and-angular-181)
|
||||
- [Automatically Update Nx](#automatically-update-nx)
|
||||
- [Monorepo World Conference Speakers Announced!!](#monorepo-world-conference-speakers-announced)
|
||||
- [Learn more](#learn-more)
|
||||
|
||||
## Video Summary
|
||||
|
||||
{% youtube
|
||||
src="https://youtu.be/ER-6sKbb9ck"
|
||||
title="Nx 19.5 is here! Stackblitz, Bun, AND MORE!"
|
||||
width="100%" /%}
|
||||
|
||||
## Announcing Nx Cloud Hobby Tier
|
||||
|
||||
We just added a new [Hobby Tier](/pricing#plan-details) to Nx Cloud! Why is this exciting? It is completely free and contains all major features, which includes the ability to [distribute your tasks with Nx Agents](/ci/features/distribute-task-execution).
|
||||
|
||||
This gives you plenty of opportunities to experiment with Nx Cloud on your workspace and see its impact on your teams productivity.
|
||||
|
||||
[](/pricing#plan-details)
|
||||
|
||||
Checkout the [plan details page](/pricing#plan-details) for more info, and see how Nx Cloud can help you! And in case you missed it, check out our latest blog on the latest Nx Cloud feature: [Explain with AI](/blog/explain-with-ai)!
|
||||
|
||||
## StackBlitz Support
|
||||
|
||||
Nx now has support for [Stackblitz](https://stackblitz.com/) (again). For a while it was not possible to use Nx on Stackblitz because we implemented some perf critical parts of Nx as native components with Rust. Huge shoutout to [LongYinan](https://github.com/Brooooooklyn) for [their amazing work of pushing napi-rs](https://napi.rs/) forward and helping us [add WebAssembly support to Nx](https://github.com/nrwl/nx/pull/22870) as well as the StackBlitz team who helped debug issues.
|
||||
|
||||
This means we are back and you can create a StackBlitz with a whole Nx Workspace inside it and run all Nx capabilities from their embedded terminal.
|
||||
|
||||
[](https://stackblitz.com/edit/stackblitz-webcontainer-api-starter-cwruaw?file=apps%2Freact-app%2Fsrc%2Fapp%2Fapp.tsx)
|
||||
|
||||
[Check out the example](https://stackblitz.com/edit/stackblitz-webcontainer-api-starter-cwruaw?file=apps%2Freact-app%2Fsrc%2Fapp%2Fapp.tsx) above. You can use the standard Nx commands in the Stackblitz terminal, like
|
||||
|
||||
```shell
|
||||
nx serve react-app
|
||||
```
|
||||
|
||||
We're excited about this as it opens up many interesting use cases, including easier ways of sharing examples, better opportunities for reproducing issues or bugs, and the potential for us to use embedded examples in our documentation in the future.
|
||||
|
||||
Again, special shout out to community contributor [LongYinan](https://github.com/Brooooooklyn) and [their napi-rs project](https://napi.rs/).
|
||||
|
||||
## Bun and Pnpm v9 Support
|
||||
|
||||
We've been monitoring [Bun](https://bun.sh/) for a while both as a runtime and as a package manager, and we've decided to take the first step in Bun support now by supporting [Bun as a package manager](https://bun.sh/docs/cli/install)! This means that you can now use Bun like you would use npm, pnpm, or yarn to install and manage your dependencies, and Nx will be able to correctly understand those dependencies as `externalNodes` in the Nx dependency graph.
|
||||
|
||||
Sending a big thank you to community contributor [Jordan Hall](https://github.com/Jordan-Hall) for completing [this work](https://github.com/nrwl/nx/pull/22602).
|
||||
|
||||
In addition to supporting Bun, Nx now supports the latest format of [`pnpm`](https://pnpm.io/) lockfiles which was introduced in version 9.
|
||||
|
||||
## Local Flaky Task Detection
|
||||
|
||||
Nx Cloud has long offered [flaky task detection](/ci/features/flaky-tasks) on CI, and now this capability is available **even when running them locally**.
|
||||
|
||||

|
||||
|
||||
If a task is detected as flaky during local execution, you’ll receive a warning. Nx identifies flaky tasks by tracking the outcomes of your tasks in relation to your source code and external dependencies. When the same code produces different results, Nx flags the task as flaky and triggers the warning.
|
||||
|
||||
Detecting flaky tasks in the local environment empowers developers to address issues early in the development cycle—before they affect your CI pipelines.
|
||||
|
||||
## Project Detail View Enhancements
|
||||
|
||||
As part of [project Crystal](/concepts/inferred-tasks) we've added the ability to our plugins to automatically infer tasks based on the tools and configuration files available in your workspace. As part of that we created the "project detail view", allowing you to visualize such dynamically created tasks. You can launch it by using the [Nx Console IDE plugin](/getting-started/editor-setup) or by running the command:
|
||||
|
||||
```shell
|
||||
nx show project [projectName]
|
||||
```
|
||||
|
||||
In this iteration we've added several enhancements to the project detail view. For one, we've added more instructions on how to discover options for the underlying tools, and included examples on how to adjust these options via your `project.json` file.
|
||||
|
||||

|
||||
|
||||
In addition, we've added a callout for tasks that [leverage the `Nx Atomizer`](/ci/features/split-e2e-tasks). Since atomizer tasks are designed to be used with [Nx Agents](/ci/features/distribute-task-execution#distribute-task-execution-nx-agents), this callout will appear in yellow to warn if your project is not yet configured to run them on CI, and you can click on this callout for an easy way to complete that setup:
|
||||
|
||||

|
||||
|
||||
Clicking this button will launch the [Nx Cloud onboarding](https://cloud.nx.app) process, which will generate a PR in your repository to complete the setup.
|
||||
|
||||

|
||||
|
||||
Note that the new, free [hobby tier for Nx Cloud](#new-nx-cloud-hobby-tier) includes the ability to run [Nx Agents](/ci/features/distribute-task-execution) without the need to immediately jump onto a paid plan.
|
||||
|
||||
## Pattern Support for `targetDefaults`
|
||||
|
||||
When using the [Atomizer features](/ci/features/split-e2e-tasks) of plugins like [`@nx/playwright`](/nx-api/playwright) and [`@nx/cypress`](/nx-api/cypress), you end up creating tasks with dynamic but predictable names.
|
||||
|
||||

|
||||
|
||||
Notice how the `e2e-ci--src/example.spec.ts` and `e2e-ci--src/test.spec.ts` tasks here are created by the `@nx/playwright` plugin dynamically based on the playwright spec files present in your workspace.
|
||||
|
||||
We've now **added pattern matching** to `targetDefaults` task names as a way to target these dynamic tasks.
|
||||
|
||||
In the past it was difficult to customize this dynamic set of targets. But with the new support for specifying a pattern to a target name, you can now customize this set of dynamic targets all at once.
|
||||
|
||||
The following will set all such tasks to depend on their `build` task:
|
||||
|
||||
```json
|
||||
{
|
||||
"targetDefaults": {
|
||||
"e2e-ci--**/*": {
|
||||
"dependsOn": ["build"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Note that our plugins will set sensible configurations here out of the box when creating new workspaces using our generators.
|
||||
|
||||
Read more about [reducing configuration with `targetDefaults`](/recipes/running-tasks/reduce-repetitive-configuration#reduce-configuration-with-targetdefaults) and [how you can define task pipelines with `targetDefaults`](/features/run-tasks#defining-a-task-pipeline).
|
||||
|
||||
## Individual Targets Can Now Opt Out of Parallelism
|
||||
|
||||
One of our goals in transforming the CI landscape is to **make CI more declarative** by focusing on defining the "what" rather than the "how."
|
||||
|
||||
To accommodate port collisions in end-to-end tests, we've long adjusted our generated CI script to look like this:
|
||||
|
||||
```yml
|
||||
- run: npx nx affected -t lint test build
|
||||
- run: npx nx affected --parallel 1 -t e2e-ci
|
||||
```
|
||||
|
||||
Unfortunately, this approach is more imperative, as it instructs how to run and order your CI rather than defining what should be run. Additionally, these instructions cause `lint`, `test`, and `build` targets to run first and wait until they all complete before running `e2e-ci`, leading to inefficiencies.
|
||||
|
||||
To address this, all tasks now support a [`parallelism` property](/reference/project-configuration#parallelism). By setting this property to `false`, you can instruct the Nx task runner not to run a specific task in parallel. This allows us to define parallelism as a task property, making our CI configuration more declarative.
|
||||
|
||||
Both our `@nx/playwright` and `@nx/cypress` plugins will now automatically set `targetDefaults` for atomized tests to disable parallelism:
|
||||
|
||||
```json {% fileName="nx.json" %}
|
||||
{
|
||||
// ...
|
||||
"targetDefaults": {
|
||||
"e2e-**/*": {
|
||||
// ...
|
||||
"parallelism": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This way we can simply run the command:
|
||||
|
||||
```shell
|
||||
nx affected --targets=lint,test,build,e2e-ci
|
||||
```
|
||||
|
||||
In CI, Nx Agents will allow all tasks to run in parallel on the same machine, except for the atomized end-to-end tasks, which will only run in isolation.
|
||||
|
||||
Learn more about how you can [Parallelize Tasks Across Multiple Machines Using Nx Agents](/ci/intro/tutorials/github-actions#parallelize-tasks-across-multiple-machines-using-nx-agents):
|
||||
|
||||
{% youtube
|
||||
src="https://youtu.be/0YxcxIR7QU0"
|
||||
title="Faster e2e Tests!"
|
||||
width="100%" /%}
|
||||
|
||||
## Support For Incremental Builds For Vite
|
||||
|
||||
Nx now supports incremental builds with our [`vite` plugin](/nx-api/vite). Incremental builds in Nx workspaces allow you to build any package in your workspace individually, and will then automatically use that built artifact when then building any project or application that consumes the package. This way you can speed up your build and CI times through optimizations like [only building packages that were affected](/nx-api/nx/documents/affected), using [Nx Replay](/ci/features/remote-cache) to effortlessly cache and share your built artifacts, and allowing you to run builds of your various packages in parallel using [Nx Agents](/ci/features/distribute-task-execution).
|
||||
|
||||
Read more about [buildable libraries and incremental builds](/concepts/buildable-and-publishable-libraries).
|
||||
|
||||
## Project Crystal Conversion Generators
|
||||
|
||||
Since launching [Nx Project Crystal](/concepts/inferred-tasks) in Nx version 18, we've adjusted our generators to leverage these features when creating new workspaces and projects. We've now added the `convert-to-inferred` generator to give you an automated way to opt into project crystal.
|
||||
|
||||
To run the generator, you can run the command:
|
||||
|
||||
```shell
|
||||
npx nx g convert-to-inferred
|
||||
```
|
||||
|
||||
The important thing to note here is that while this generator will make adjustments to the `project.json` file of the projects you convert, the behavior of your tasks should remain the same. You can see project details via the [Nx Console](/getting-started/editor-setup) plugin of your IDE, or in a browser by running the command: `nx show project [projectName]`.
|
||||
|
||||
In Nx 19, we were focused on adding `convert-to-inferred` to our [Playwright](/nx-api/playwright), [Cypress](/nx-api/cypress), and [ESLint](/nx-api/eslint) plugins - where bringing the [Nx Atomizer](/ci/features/split-e2e-tasks) provided the greatest value. Since then, we've added this generator to most other plugins. Currently, our React native plugins (react native, expo, detox) are the only plugins that are outstanding, and we'll be providing `convert-to-inferred` generators here in the near future.
|
||||
|
||||
## Gradle Composite Builds Support
|
||||
|
||||
In [Nx 19.0](/blog/nx-19-release), we introduced support for Gradle through our [Gradle plugin](/nx-api/gradle). With the latest update, this plugin now also supports [Gradle Composite builds](https://docs.gradle.org/current/userguide/composite_builds.html), in addition to multi-project builds.
|
||||
|
||||
Gradle Composite builds are commonly used in larger workspaces to manage dependencies across multiple projects. With this new support, Nx can now leverage composite builds to enhance the Nx Task Graph. For example, consider the following `settings.gradle.kts` file:
|
||||
|
||||
```kotlin
|
||||
rootProject.name = "app"
|
||||
|
||||
includeBuild("number-utils")
|
||||
includeBuild("string-utils")
|
||||
```
|
||||
|
||||
Nx will now be able to automatically determine the dependencies between the `app` project and the `number-utils` and `string-utils` workspaces:
|
||||
|
||||

|
||||
|
||||
You can read more on composite builds in the [Gradle documentation](https://docs.gradle.org/current/userguide/composite_builds.html).
|
||||
|
||||
## Experimental: Gradle Test Atomization
|
||||
|
||||
The new [`@nx/gradle` plugin](/nx-api/gradle) now includes experimental support for [Test Atomization](/ci/features/split-e2e-tasks).
|
||||
|
||||

|
||||
|
||||
With Test Atomization, as you add tests to your Gradle projects, Nx will automatically create a separate task for each test class. This allows you to distribute the execution of these tasks across multiple machines on CI, similar to the functionality provided by our `@nx/playwright` and `@nx/cypress` plugins.
|
||||
|
||||
## Experimental: Nx Release Adds File Based Versioning Support
|
||||
|
||||
Currently with [Nx release](/nx-api/nx/documents/release), you already have two different ways of figuring out the how to modify the current version of a package to get its updated version:
|
||||
|
||||
- Imperatively via the CLI/prompt by telling it your desired relative (semver keyword) or absolute (e.g. `1.2.3`) version.
|
||||
- Declaratively by letting Nx inspect your git history and determine the semver bump to apply based on the conventional commits specification.
|
||||
|
||||
Nx release now supports an experimental third way of deriving the version bump that we call "version plans".
|
||||
|
||||
The idea behind version plans is that you want to track your intended version bumps alongside your changes, just like you would do with conventional commits, but you want to make this tracking independent from your actual commit data. This might be because you do not want to/cannot use the conventional commits standard in your workspace, or it could just be that you find it a cleaner approach to versioning.
|
||||
|
||||
Version plan files use frontmatter enhanced markdown for their contents, and can be created by hand or by leveraging the new `nx release plan` subcommand. This will guide you through creating a git-tracked file within `.nx/version-plans` that will be committed alongside your normal changes.
|
||||
|
||||

|
||||
|
||||
When your team is ready to release, you can now simply run the CLI command `nx release` (or use the [powerful programmatic API](/features/manage-releases#using-the-programmatic-api-for-nx-release)) and nx will ingest all the outstanding version plan files and use the combined information to determine the resulting version for all referenced projects and/or release groups as part of the versioning, changelog generation, and publishing steps. (You can also run the command `nx release version` if all you want to do is update the version!)
|
||||
|
||||

|
||||
|
||||
Anyone who has used the tools "Changesets" or "Beachball" will be familiar with the concept of file based versioning, but with Nx release you get the power to combine one or more of the above mentioned versioning strategies all within the same workspace for different release groups, and we are really excited to keep building out this feature set and mark it as non-experimental (by fully documenting it) very soon. To learn more about the other features of [Nx Release in the meantime, check out our docs](/features/manage-releases).
|
||||
|
||||
## Support for React 19 (rc) and Angular 18.1
|
||||
|
||||
Nx 19.5 adds support for the React 19 release candidate and updated our Angular package to support the latest Angular minor version: 18.1.
|
||||
|
||||
When using our `@nx/angular` package, we'll automatically update you to the latest angular version when you run our migration. Using the `--interactive` flag you can choose to opt in or out of the latest Angular version:
|
||||
|
||||
```shell
|
||||
nx migrate latest --interactive
|
||||
✔ Do you want to update to TypeScript v5.5? (Y/n) · true
|
||||
✔ Do you want to update the Angular version to v18.1? (Y/n) · true
|
||||
Fetching @angular/core@18.1.2
|
||||
|
||||
NX The migrate command has run successfully.
|
||||
```
|
||||
|
||||
Our `@nx/react` package will now create new React applications using version 18.3, and we now support the new experimental `reactCompiler`. Users can install the [`babel-plugin-react-compiler` package](https://www.npmjs.com/package/babel-plugin-react-compiler) and you can follow [this guide for how to enable it with Nx](/recipes/react/react-compiler#react-compiler-with-nx).
|
||||
|
||||
Note that due to the extent of breaking changes coming with React 19, we will not be providing a automated migration to React 19 via [`nx migrate`](/nx-api/nx/documents/migrate).
|
||||
|
||||
## Automatically Update Nx
|
||||
|
||||
As always - updating Nx and its plugins is easy as we ship an [automated migration command](/features/automate-updating-dependencies).
|
||||
|
||||
```shell
|
||||
npx nx migrate latest
|
||||
```
|
||||
|
||||
After updating your dependencies, run any necessary migrations.
|
||||
|
||||
```shell
|
||||
npx nx migrate --run-migrations
|
||||
```
|
||||
|
||||
## Monorepo World Conference Speakers Announced!!
|
||||
|
||||
[](https://monorepo.world)
|
||||
|
||||
The [Monorepo World conference](https://monorepo.world) is coming up soon on October 7, 2024 at the Computer History museum in Mountain View, California.
|
||||
|
||||
[Get your tickets now](https://ti.to/nx-conf/monorepoworld2024), consider [requesting access to the invite-only Enterprise Summit on October 8](https://ti.to/nx-conf/monorepoworld2024), and be sure to check out our [list of speakers](https://monorepo.world/#speakers-title) that was just published!
|
||||
|
||||
## Learn more
|
||||
|
||||
- [Nx Docs](/getting-started/intro)
|
||||
- [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,16 +0,0 @@
|
||||
---
|
||||
title: 'Nx Enterprise Podcast Episode 3: Ahmed Elsakaan'
|
||||
slug: 'ahmed-elsakaan-podcast-3'
|
||||
authors: ['Zack DeRose']
|
||||
tags: [podcast]
|
||||
cover_image: /blog/images/2024-08-14/ep-3-ahmed.png
|
||||
podcastYoutubeId: l_b6EOXqYRg
|
||||
podcastSpotifyId: 4d4oE8B3y9BmECZ3P4uvDP
|
||||
podcastAmazonUrl: https://music.amazon.com/podcasts/a221fdad-36fd-4695-a5b4-038d7b99d284/episodes/28209cf9-1b88-48b5-a798-7b24c843e9b1/the-enterprise-software-podcast-by-nx-the-enterprise-software-podcast-by-nx-3-ahmed-elsakaan
|
||||
podcastAppleUrl: https://podcasts.apple.com/us/podcast/the-enterprise-software-podcast-by-nx-3-ahmed-elsakaan/id1752704996?i=1000665363260
|
||||
podcastIHeartUrl: https://www.iheart.com/podcast/269-the-enterprise-software-po-186891508/episode/the-enterprise-software-podcast-by-nx-205664230/
|
||||
---
|
||||
|
||||
In this episode we welcome Nx Champion and creator of [noodle](https://noodle.run) and [OrbitKit](https://orbitkit.dev/): Ahmed Elsakaan.
|
||||
|
||||
As a monorepo enthusiast, we explore Ahmed's thoughts on monorepos and how these tools can add value to developers - both in the space of setting up your monorepo (like Nx does) and in the space of creating reusable customizable modules (like OrbitKit is attempting).
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
title: 'Nx Enterprise Podcast Episode 4: Cvent Platform Architecture Panel'
|
||||
slug: 'cvent-podcast-3'
|
||||
authors: ['Zack DeRose']
|
||||
tags: [podcast]
|
||||
cover_image: /blog/images/2024-08-21/ep-4-cvent.png
|
||||
podcastYoutubeId: _7uK1V_xu9k
|
||||
podcastSpotifyId: 1zWuMFxcnGy90AN41gkodx
|
||||
podcastAmazonUrl: https://music.amazon.com/podcasts/a221fdad-36fd-4695-a5b4-038d7b99d284/episodes/7e19eb25-76f9-4d1e-89c0-c2fd1f585f9b/the-enterprise-software-podcast-by-nx-the-enterprise-software-podcast-by-nx-4-cvent-platform-architect-panel
|
||||
podcastAppleUrl: https://podcasts.apple.com/us/podcast/the-enterprise-software-podcast-by-nx-4-cvent/id1752704996?i=1000666133320
|
||||
podcastIHeartUrl: https://www.iheart.com/podcast/269-the-enterprise-software-po-186891508/episode/the-enterprise-software-podcast-by-nx-207751657/
|
||||
---
|
||||
|
||||
In this edition of the Nx Enterprise Podcast, Zack sits down with a panel of Platform Architects from the event platform company, [Cvent](https://www.cvent.com/).
|
||||
|
||||
The panel, featuring Youssef Taghlabi, Kevin O'Brien, Josh Lartz, and Ladi Kobiti, dives into their approach to platform engineering—focusing on how they empower teams across their organization and the critical role Nx plays in achieving those goals.
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
title: New Table Log View on CI with Nx Cloud
|
||||
slug: improved-ci-log-with-nx-cloud
|
||||
authors: ['Juri Strumpflohner']
|
||||
tags: [nx-cloud, release]
|
||||
cover_image: /blog/images/2024-08/nx-cloud-table-log-output-thumb.jpg
|
||||
youtubeUrl: https://youtu.be/aacrw0H0m4Q
|
||||
---
|
||||
|
||||
Whenever we talk about Nx Cloud, speed is often a major focus—and for good reason. However, Nx Cloud isn't just about speed. Similar to Nx itself, it's about making work within monorepos more pleasant and efficient. A key part of that is continuously **optimizing developer ergonomics**.
|
||||
|
||||
Structuring your log output is one example. In a polyrepo setup, this isn't a big deal since you typically run tasks for a single project. However, in a monorepo setup, you might be running hundreds of tasks in parallel across multiple projects. **Quickly finding a failed task in this context can be challenging.**
|
||||
|
||||
## New Table Log View
|
||||
|
||||
Today, we released an update that improves how logs are displayed on your CI provider when using Nx Cloud. Instead of streaming all logs directly into your CI provider's pipeline, **we now render a structured table view**. This table shows all tasks, their status (success or failure), timing, and whether they had a cache hit or miss.
|
||||
|
||||

|
||||
|
||||
At the end of the log output, you'll also see aggregated stats about executed tasks, cache hits, and a link to the Nx Cloud dashboard with full details of the run.
|
||||
|
||||

|
||||
|
||||
## Revert to the Old Behavior
|
||||
|
||||
If you prefer the previous log view in your CI, you can opt-out of the new table view. Simply go to your Nx Cloud workspace settings and enable the "Display live terminal outputs in CI pipeline log" option.
|
||||
|
||||

|
||||
|
||||
## Not Using Nx Cloud Yet?
|
||||
|
||||
If you're not on Nx Cloud yet, you can **connect your Nx workspace** by running:
|
||||
|
||||
```shell
|
||||
npx nx connect
|
||||
```
|
||||
|
||||
This command will guide you through the setup. We recently introduced a [new Hobby plan](/pricing), which lets you experiment with all the Nx Cloud features for free. This is a great way to see if it's a good fit for your team.
|
||||
|
||||
## Learn More
|
||||
|
||||
- [Nx on CI](/ci)
|
||||
- [Task Distribution with Nx Agents](/ci/features/distribute-task-execution)
|
||||
- [Automated e2e Test Splitting](/ci/features/split-e2e-tasks)
|
||||
- [X/Twitter](https://twitter.com/nxdevtools) -- [LinkedIn](https://www.linkedin.com/company/nrwl/)
|
||||
- [Nx Official Discord Server](https://go.nx.dev/community)
|
||||
- [Nx Youtube Channel](https://www.youtube.com/@nxdevtools)
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
title: How to Fast-Track Your PRs with Trunk.io | Nx Live
|
||||
slug: nx-live-trunk-io
|
||||
authors: ['Zack DeRose']
|
||||
tags: [livestream]
|
||||
cover_image: /blog/images/2024-08-29/nx-live-trunk.png
|
||||
youtubeUrl: https://youtube.com/live/E8Gh-Vkxok0
|
||||
---
|
||||
|
||||
In this episode of Nx Live, Zack sits down with David from [Trunk.io](https://trunk.io) to explore hands-on examples of how to fast-track your PRs using Nx and Trunk Merge Queues. They also discuss the latest [first-class support for Nx](https://docs.trunk.io/merge-queue/parallel-queues/nx) recently added to Trunk, demonstrating how these tools can streamline your development workflow.
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
title: Announcing your Monorepo World Speakers
|
||||
slug: announcing-your-monorepo-world-speakers
|
||||
authors: ['Mike Hartington']
|
||||
tags: [monorepo-world]
|
||||
cover_image: /blog/images/2024-08-30/mw-blog-post.avif
|
||||
---
|
||||
|
||||
[Monorepo World](https://monorepo.world) is our two-track conference bringing together experts in developer tooling and of course, monorepos. We’re thrilled to share some of this year's speakers, including folks from Zephyr Cloud, Atlassian, GitHub, and HeroDevs. Without further ado, let’s meet your first round of speakers!
|
||||
|
||||
### Hacking Bundlers in Nx
|
||||
|
||||
[Lois Zhao](https://x.com/zmzlois), Zephyr Cloud
|
||||
|
||||
Want to know how builders work and how they can impact your projects? Let’s look at various bundlers and see how they affect the build time and output while also potentially saving organizations millions of dollars.
|
||||
|
||||
### What's In Your Dependency Graph
|
||||
|
||||
[Josh VanAllen](https://x.com/JVAsays), HeroDevs
|
||||
|
||||
Ever ask yourself “why is this build taking so long?” You’re not alone. With monorepos, managing your workspace’s dependency graph can make the difference between spending countless hours waiting to see if your simple changes fixes your apps. Learn how to find the hidden bottlenecks in your dependency graphs and make them efficient!
|
||||
|
||||
### How To Use Git - The Right Way - For Monorepos
|
||||
|
||||
[Scott Arbeit](https://x.com/ScottArbeit), GitHub
|
||||
|
||||
We all use git in our day to day, and it’s great! Until you have to clone a large repository, like potentially a monorepo. Thankfully, there are some tips and tricks you can use to work with large repositories and git that can greatly improve your user experience.
|
||||
|
||||
### Atlassian Frontend's Journey To The Monorepo
|
||||
|
||||
Manoraj K & Sourav Shaw, Atlassian
|
||||
|
||||
Adopting a monorepo for an organization can be a transformative experience. Learn from the folks at Atlassian to hear how they migrated to a monorepo and what strategies they employ to merge multiple repositories into one unified structure.
|
||||
|
||||
## Get Your Tickets Today
|
||||
|
||||
We hope you’re excited to see these amazing sessions! We’ll have more to share soon about what other speakers you can expect to see at Monorepo world! Don’t forget to register and get your ticket before prices go up September 6th 😱!
|
||||
|
||||
[Get your tickets today!](https://bit.ly/3YZcb5r)
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
title: Introduction to Nx! | Nx Live
|
||||
slug: nx-live-intro-to-nx
|
||||
authors: ['Zack DeRose', 'Mike Hartington']
|
||||
tags: [livestream]
|
||||
cover_image: /blog/images/2024-09-05/thumbnail.png
|
||||
youtubeUrl: https://youtube.com/live/dgtZ6GHZ-tA
|
||||
---
|
||||
|
||||
In this episode of Nx Live, Zack introduces new Nx team member Mike Hartington to the value of Nx. Together, Zack and Mike build out a full-stack application in their workspace - complete with linting, testing, and end-to-end tests using Nx's generators, and they look at the capabilities that Nx offers in terms of defining their workspace, and how Nx can leverage that information for task-running - especially in CI!
|
||||
@@ -1,94 +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-10/personal-access-tokens-header.avif
|
||||
youtubeUrl: https://youtu.be/i51LPtagb2s
|
||||
---
|
||||
|
||||
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, rather than the workspace. This token authenticates the user with Nx Cloud when running tasks, so that we can validate their access to the distributed cache for a workspace. As soon as a user loses access to an Nx Cloud organization, they will no longer be able to access the cache for any of the organization's workspaces. The user's token belongs to them and will still allow access to their remaining organizations.
|
||||
|
||||
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 your Nx Cloud organization is removed, and their access to the cache for any of the organization's workspaces is removed.
|
||||
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
|
||||
|
||||

|
||||
|
||||
By default, a workspace that opts in to personal access tokens will allow anonymous users (users without a personal
|
||||
access token defined) read-write access. This can be changed to disallow access to the cache for anonymous users
|
||||
in your workspace settings.
|
||||
|
||||
Users with personal access tokens will also have read-write access to the cache. This can be changed to enable read-only
|
||||
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 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. **_Recommended_ Disable anonymous access** - By default, anyone without a personal access token will have read-write
|
||||
access
|
||||
to your cached artifacts. 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,487 +0,0 @@
|
||||
---
|
||||
title: Next-Gen Module Federation Deployments with Nx and Zephyr Cloud
|
||||
slug: next-gen-module-federation-deployment
|
||||
authors: ['Colum Ferry']
|
||||
tags: [nx, module federation, rspack, zephyr cloud]
|
||||
cover_image: /blog/images/2024-09-12/next-gen-module-federation-deployments.png
|
||||
published: true
|
||||
---
|
||||
|
||||
Nx has supported Module Federation for a long time now and its popularity is seeing year-on-year increase. It has proven
|
||||
to be the defacto solution for modern Micro Frontends and Nx has embraced this and helped developers scaffold projects
|
||||
that use Module Federation; offering the most scalable and the most developer friendly experience to do so.
|
||||
However, we have always taken a step back when it came to the final piece of the puzzle: **Deployment**.
|
||||
|
||||
Micro Frontends are, by their very nature, more complex to deploy. You are no longer deploying one build artifact but
|
||||
rather, many build artifacts that could even be on different release cadences from each other. And yet, we still expect
|
||||
the final application that our users interact with to be stable.
|
||||
|
||||
There are so many approaches to deployments - think Kubernetes, Storage Buckets with DNS, EC2 instances etc - that it
|
||||
has always been difficult for us to recommend a solution. That was until [Zephyr Cloud](https://www.zephyr-cloud.io/)
|
||||
entered the game.
|
||||
|
||||
Zephyr Cloud is a "bring your own cloud" deployment platform with best-in-class support for module federation projects
|
||||
that integrates right into your application build, providing seamless deployments without having to learn any new
|
||||
commands.
|
||||
With features such as:
|
||||
|
||||
- Auto-deployment on build
|
||||
- Live Preview link generation
|
||||
- Version rollback and roll-forward
|
||||
- Micro Frontend dependency management
|
||||
- A Chrome Extension to manage environments
|
||||
- Support for a wide range of Cloud Platforms (such as [Cloudflare](https://www.cloudflare.com/en-gb/)
|
||||
and [Netlify](https://www.netlify.com/))
|
||||
- A beautiful UI to visualize your deployments
|
||||
|
||||
And so much more, Zephyr Cloud really is one of the best deployment solutions available.
|
||||
|
||||
{% callout type="note" title="Zephyr Cloud Features" %}
|
||||
You can learn more about the full feature set that Zephyr Cloud
|
||||
offers [here](https://docs.zephyr-cloud.io/#main-features).
|
||||
{% /callout %}
|
||||
|
||||
I myself, Colum Ferry, after having been allowed to experiment with it in its infancy back in February 2024 said
|
||||
|
||||
> Zephyr Cloud is the Micro Frontend orchestration tool you never knew you needed.
|
||||
> What they have built will change the deployments for the better.
|
||||
> Think of the disruption k8s caused. Zephyr Cloud will do the same for the Micro Frontend world.
|
||||
>
|
||||
> _Reference: [Linkedin](https://www.linkedin.com/posts/colum-ferry-3a36a9169_zephyr-cloud-is-the-micro-frontend-orchestration-activity-7183207192991289344-6mSR)_
|
||||
|
||||
And I stand by that statement.
|
||||
|
||||
Therefore, in this article I'll show you how to set up React Module Federation with Nx and Rspack and how to integrate
|
||||
it with Zephyr Cloud for deployment.
|
||||
|
||||
## Step 1: Set Up the Nx Workspace
|
||||
|
||||
We'll start by creating an empty Nx workspace:
|
||||
|
||||
```{% command="npx create-nx-workspace myorg" path="~" %}
|
||||
NX Let's create a new workspace [https://nx.dev/getting-started/intro]
|
||||
|
||||
✔ Which stack do you want to use? · none
|
||||
✔ Package-based monorepo, integrated monorepo, or standalone project? · integrated
|
||||
✔ Which CI provider would you like to use? · github
|
||||
|
||||
NX Creating your v19.7.0 workspace.
|
||||
|
||||
✔ Installing dependencies with npm
|
||||
✔ Successfully created the workspace: myorg.
|
||||
✔ Nx Cloud has been set up successfully
|
||||
✔ CI workflow has been generated successfully
|
||||
|
||||
```
|
||||
|
||||
Next, we'll want to navigate into our new workspace:
|
||||
|
||||
```shell
|
||||
cd myorg
|
||||
```
|
||||
|
||||
And finally, we'll add the [`@nx/react`](/nx-api/react) plugin to our workspace.
|
||||
|
||||
```shell
|
||||
npx nx add @nx/react
|
||||
```
|
||||
|
||||
## Step 2: Scaffold the Module Federation Projects
|
||||
|
||||
Now that we have the `@nx/react` package installed, we have access to all the generators it offers. We'll use the `host`
|
||||
generator now to scaffold out Module Federation projects.
|
||||
|
||||
{% callout type="note" title="Generating host applications" %}
|
||||
If you'd like a more indepth recipe for scaffolding `host` and `remote` generators you can take a look through
|
||||
our [Module Federation Recipes](/recipes/module-federation).
|
||||
{% /callout %}
|
||||
|
||||
```{% command="npx nx g @nx/react:host shell --remotes=remote1 --bundler=rspack" path="~/myorg" %}
|
||||
NX Generating @nx/react:host
|
||||
|
||||
✔ Which stylesheet format would you like to use? · css
|
||||
✔ Which E2E test runner would you like to use? · playwright
|
||||
Fetching prettier...
|
||||
Fetching @nx/rspack...
|
||||
Fetching @nx/playwright...
|
||||
Fetching @nx/jest...
|
||||
|
||||
// REMOVED FOR BREVITY
|
||||
|
||||
NX 👀 View Details of shell
|
||||
|
||||
Run "nx show project shell" to view details about this project.
|
||||
|
||||
NX 👀 View Details of remote1
|
||||
Run "nx show project remote1" to view details about this project.
|
||||
```
|
||||
|
||||
With that, two applications will be added to our workspace `shell` and `remote` as well as their counterpart e2e
|
||||
projects.
|
||||
|
||||
{% callout type="note" title="Running tasks" %}
|
||||
These projects contain all the usual tasks you would expect to see with a Nx project such as `build`, `serve`, `test`,
|
||||
`lint`.
|
||||
You can learn more about Running Tasks in Nx [here](/features/run-tasks).
|
||||
{% /callout %}
|
||||
|
||||
We specified `--bundler=rspack` indicating that the applications should be built with [Rspack](https://rspack.dev/).
|
||||
_This support has been newly added to Nx since Nx 19.7.0._
|
||||
|
||||
You'll note the `shell/rspack.config.ts` file. It's contents should match the following:
|
||||
|
||||
```ts {% fileName="shell/rspack.config.ts" %}
|
||||
import { composePlugins, withNx, withReact } from '@nx/rspack';
|
||||
import {
|
||||
withModuleFederation,
|
||||
ModuleFederationConfig,
|
||||
} from '@nx/rspack/module-federation';
|
||||
|
||||
import baseConfig from './module-federation.config';
|
||||
|
||||
const config: ModuleFederationConfig = {
|
||||
...baseConfig,
|
||||
};
|
||||
|
||||
// Nx plugins for rspack to build config object from Nx options and context.
|
||||
/**
|
||||
* DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support for Module Federation
|
||||
* The DTS Plugin can be enabled by setting dts: true
|
||||
* Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
|
||||
*/
|
||||
export default composePlugins(
|
||||
withNx(),
|
||||
withReact(),
|
||||
withModuleFederation(config, { dts: false })
|
||||
);
|
||||
```
|
||||
|
||||
If you have experience with our `webpack` Module Federation support, you'll note that this file is very similar to the
|
||||
`webpack.config.ts` files we would have generated. The only real difference is that the imports point to `@nx/rspack`.
|
||||
|
||||
{% callout type="note" title="Module Federation 2.0" %}
|
||||
Module Federation is still under active development, however, all new development is being included in Rspack as well as
|
||||
the `@module-federation/enhanced` package.
|
||||
|
||||
Module Federation 2.0 brings new features such
|
||||
as [Federation Runtime](https://module-federation.io/guide/basic/runtime.html)
|
||||
and [Runtime Plugins](https://module-federation.io/plugin/dev/index.html).
|
||||
These are significant advancements which offer a vast range of capabilities to Module Federation projects.
|
||||
|
||||
Nx itself has employed this strategy to solve a long-standing issue with shared workspace libraries wherein there was
|
||||
the possibility that a shared library would be served from a static remote. This in turn would prevent HMR updates to
|
||||
the library from being reflected in the locally served application.
|
||||
You can learn more about the
|
||||
`NxRuntimeLibraryControlPlugin` [here](/concepts/module-federation/nx-module-federation-technical-overview).
|
||||
{% /callout %}
|
||||
|
||||
## Step 4: Building and Serving
|
||||
|
||||
To build all the applications in the workspace, run the following:
|
||||
|
||||
```{% command="npx nx run-many -t build" path="~/myorg" %}
|
||||
|
||||
✔ nx run remote1:build:production (2s)
|
||||
✔ nx run shell:build:production (526ms)
|
||||
|
||||
———————————————————————————————————————————————————————————————————————————————————————
|
||||
|
||||
NX Successfully ran target build for 2 projects (3s)
|
||||
```
|
||||
|
||||
This will build the applications with Rspack. You can observe the build artifacts in the `dist/` folder.
|
||||
|
||||
To serve the Module Federation setup, we recommend only serving the `host` application.
|
||||
|
||||
{% callout type="note" title="Serving all Module Federation Projects" %}
|
||||
|
||||
Nx purpose-built a `serve` executor for Module Federation Projects. This executor will find all the `remote`
|
||||
applications that the `host` depends on and serves them, either statically or with HMR/Live Reloading.
|
||||
|
||||
Serving statically means that we can reuse the build artifacts for the `remotes` for a faster dev-server startup time
|
||||
that is scalable. Combined with Nx caching, this works well to ensure a great developer experience.
|
||||
|
||||
You can learn more about how this works in
|
||||
our [Nx Module Federation Technical Overview](/concepts/module-federation/nx-module-federation-technical-overview#what-happens-when-you-serve-your-host)
|
||||
document.
|
||||
|
||||
{% /callout %}
|
||||
|
||||
Run the following command to serve the `host` application with the `remote` served statically:
|
||||
|
||||
```{% command="npx nx serve shell" path="~/myorg" %}
|
||||
> nx run shell:serve
|
||||
|
||||
|
||||
NX Starting module federation dev-server for shell with 1 remotes
|
||||
|
||||
|
||||
NX Building 1 static remotes...
|
||||
|
||||
|
||||
NX Built 1 static remotes
|
||||
|
||||
|
||||
NX Starting static remotes proxies...
|
||||
|
||||
|
||||
NX Static remotes proxies started successfully
|
||||
|
||||
[ Module Federation Manifest Plugin ]: Manifest will use absolute path resolution via its host at runtime, reason: publicPath='auto'
|
||||
<i> [webpack-dev-server] Project is running at:
|
||||
<i> [webpack-dev-server] Loopback: http://localhost:4200/, http://[::1]:4200/
|
||||
<i> [webpack-dev-server] 404s will fallback to '/index.html'
|
||||
● ━━━━━━━━━━━━━━━━━━━━━━━━━ (70%) sealing after module optimization [ Module Federation Manifest Plugin ] Manifest Link: {auto}/mf-manifest.json
|
||||
● ━━━━━━━━━━━━━━━━━━━━━━━━━ (98%) emitting emit Starting up http-server, serving dist
|
||||
|
||||
http-server version: 14.1.1
|
||||
|
||||
http-server settings:
|
||||
CORS: true
|
||||
Cache: -1 seconds
|
||||
Connection Timeout: 120 seconds
|
||||
Directory Listings: visible
|
||||
AutoIndex: visible
|
||||
Serve GZIP Files: false
|
||||
Serve Brotli Files: false
|
||||
Default File Extension: none
|
||||
|
||||
Available on:
|
||||
http://localhost:4202
|
||||
Hit CTRL-C to stop the server
|
||||
|
||||
|
||||
NX Server ready at http://localhost:4200
|
||||
```
|
||||
|
||||
If you navigate to `http://localhost:4200` your application will render and you'll be able to navigate between the
|
||||
`host` and the `remote`.
|
||||
|
||||
## Step 4: Deployment
|
||||
|
||||
Granted what we have currently is not something you'd likely see in a production application, we'll use it as is to
|
||||
demonstrate deployment with Zephyr Cloud.
|
||||
|
||||
{% callout type="note" title="Zephyr Cloud Nx Recipe" %}
|
||||
|
||||
Zephyr Cloud also has a recipe that you can follow to set up Nx React Module Federation with Zephyr
|
||||
Cloud [here](https://docs.zephyr-cloud.io/recipes/react-rspack-nx).
|
||||
|
||||
{% /callout %}
|
||||
|
||||
I'll break this section into sub-steps to make it easier to follow.
|
||||
|
||||
### Step 1: Add `package.json` and First Commit
|
||||
|
||||
First, we need to add `package.json` files to our `shell` and `remote1` projects. This is used by Zephyr Cloud to
|
||||
determine the name and version of the projects for deployment.
|
||||
|
||||
Create the following files:
|
||||
|
||||
{% tabs %}
|
||||
{% tab label="shell/package.json" %}
|
||||
|
||||
```json {% fileName="shell/package.json" %}
|
||||
{
|
||||
"name": "shell",
|
||||
"version": "0.0.0"
|
||||
}
|
||||
```
|
||||
|
||||
{% /tab %}
|
||||
{% tab label="remote1/package.json" %}
|
||||
|
||||
```json {% fileName="remote1/package.json" %}
|
||||
{
|
||||
"name": "remote1",
|
||||
"version": "0.0.0"
|
||||
}
|
||||
```
|
||||
|
||||
{% /tab %}
|
||||
{% /tabs %}
|
||||
|
||||
Once this is done, add all staged files and create a git commit.
|
||||
|
||||
```shell
|
||||
git add .
|
||||
git commit -m "initial commit"
|
||||
```
|
||||
|
||||
### Step 2: Create a GitHub Repository
|
||||
|
||||
Next, we need to add a GitHub repository. It can be public or private, it will not affect the deployments by Zephyr
|
||||
Cloud.
|
||||
|
||||
{% callout type="note" title="Why is this needed?" %}
|
||||
Behind the scene, Zephyr Cloud will map your git configuration (remote origin url, organization or username, repository
|
||||
name and branch) to deploy your application. Without this step the deployment will fail.
|
||||
{% /callout %}
|
||||
|
||||
If you don't already have the [GitHub CLI](https://cli.github.com/) installed, I would highly recommend it.
|
||||
|
||||
You can then run the following to create your GitHub Repository from your terminal:
|
||||
|
||||
```{% command="gh repo create" path="~/myorg" %}
|
||||
? What would you like to do? Push an existing local repository to GitHub
|
||||
? Path to local repository .
|
||||
? Repository name nx-zephyr-cloud-example
|
||||
? Repository owner Coly010
|
||||
? Description Example of Nx React Rspack Module Federation with Zephyr Cloud
|
||||
? Visibility Private
|
||||
✓ Created repository Coly010/nx-zephyr-cloud-example on GitHub
|
||||
https://github.com/Coly010/nx-zephyr-cloud-example
|
||||
? Add a remote? Yes
|
||||
? What should the new remote be called? origin
|
||||
✓ Added remote https://github.com/Coly010/nx-zephyr-cloud-example.git
|
||||
? Would you like to push commits from the current branch to "origin"? Yes
|
||||
```
|
||||
|
||||
### Step 3: Add Zephyr Cloud
|
||||
|
||||
To add Zephyr Cloud itself, we need to install their `zephyr-webpack-plugin`.
|
||||
|
||||
{% callout type="note" title="Rspack and Webpack Interop" %}
|
||||
The plugin is indeed written for Webpack, however, one of the big advantages of Rspack is the interoperability it offers
|
||||
for the Webpack Ecosystem.
|
||||
You can learn more about this compatability [here](https://rspack.dev/guide/compatibility/plugin).
|
||||
{% /callout %}
|
||||
|
||||
Run the following to install the plugin:
|
||||
|
||||
```shell
|
||||
npm install zephyr-webpack-plugin
|
||||
```
|
||||
|
||||
Now that the plugin has been installed in our workspace, we need to update the `rspack.config.ts` files to use it.
|
||||
This is a very simple two line change:
|
||||
|
||||
```ts
|
||||
import { withZephyr } from 'zephyr-webpack-plugin';
|
||||
|
||||
export default composePlugins(
|
||||
...,
|
||||
withZephyr()
|
||||
)
|
||||
```
|
||||
|
||||
You'll need to make these updates to the following files:
|
||||
|
||||
- `shell/rspack.config.ts`
|
||||
- `shell/rspack.config.prod.ts`
|
||||
- `remote1/rspack.config.ts`
|
||||
|
||||
For example, your `shell/rspack.config.ts` file should now match the following:
|
||||
|
||||
```ts {% fileName="shell/rspack.config.ts" %}
|
||||
import { composePlugins, withNx, withReact } from '@nx/rspack';
|
||||
import {
|
||||
withModuleFederation,
|
||||
ModuleFederationConfig,
|
||||
} from '@nx/rspack/module-federation';
|
||||
import { withZephyr } from 'zephyr-webpack-plugin';
|
||||
|
||||
import baseConfig from './module-federation.config';
|
||||
|
||||
const config: ModuleFederationConfig = {
|
||||
...baseConfig,
|
||||
};
|
||||
|
||||
// Nx plugins for rspack to build config object from Nx options and context.
|
||||
/**
|
||||
* DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support for Module Federation
|
||||
* The DTS Plugin can be enabled by setting dts: true
|
||||
* Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
|
||||
*/
|
||||
export default composePlugins(
|
||||
withNx(),
|
||||
withReact(),
|
||||
withModuleFederation(config, { dts: false }),
|
||||
withZephyr()
|
||||
);
|
||||
```
|
||||
|
||||
### Step 4: First Deployment
|
||||
|
||||
With all the `rspack.config.ts` files updated, getting your first deployment is as simple as running:
|
||||
|
||||
```{% command="npx nx run-many -t build --verbose" path="~/myorg" %}
|
||||
> nx run remote1:build:production
|
||||
...
|
||||
|
||||
ZEPHYR Opening browser for authentication...
|
||||
ZEPHYR Hi colum_nrwl_io!
|
||||
ZEPHYR remote1.nx-zephyr-cloud-example.coly010#6
|
||||
ZEPHYR
|
||||
ZEPHYR Uploaded local snapshot in 152ms
|
||||
ZEPHYR (12/12 assets uploaded in 235ms, 332.55kb)
|
||||
ZEPHYR Deployed to Zephyr's edge in 352ms.
|
||||
ZEPHYR
|
||||
ZEPHYR https://colum_nrwl_io_6-remote1-nx-zephyr-cloud-example-c-e7ab3d770-ze.zephyrcloud.app
|
||||
|
||||
...
|
||||
Rspack 1.0.4 compiled with 1 warning in 3.91 s
|
||||
|
||||
> nx run shell:build:production
|
||||
...
|
||||
|
||||
ZEPHYR Hi colum_nrwl_io!
|
||||
ZEPHYR shell.nx-zephyr-cloud-example.coly010#7
|
||||
ZEPHYR
|
||||
ZEPHYR Uploaded local snapshot in 165ms
|
||||
ZEPHYR (10/10 assets uploaded in 202ms, 326.42kb)
|
||||
ZEPHYR Deployed to Zephyr's edge in 248ms.
|
||||
ZEPHYR
|
||||
ZEPHYR https://colum_nrwl_io_7-shell-nx-zephyr-cloud-example-col-04ccb4027-ze.zephyrcloud.app
|
||||
|
||||
...
|
||||
Rspack 1.0.4 compiled with 1 warning in 1.29 s
|
||||
```
|
||||
|
||||
At this point, a page will likely be opened in your browser where you can create your Zephyr Cloud account and
|
||||
authenticate the CLI to allow it to deploy the applications to your account.
|
||||
|
||||
You'll note that the output from this is not the same as the output we received earlier when we ran
|
||||
`npx nx run-many -t build`.
|
||||
In particular, the most recent set of logs contains the URLs of the deployed application (_Note: your URL should be
|
||||
different_):
|
||||
|
||||
```{% command="npx nx run-many -t build --verbose" path="~/myorg" %}
|
||||
> nx run remote1:build:production
|
||||
...
|
||||
ZEPHYR https://colum_nrwl_io_6-remote1-nx-zephyr-cloud-example-c-e7ab3d770-ze.zephyrcloud.app
|
||||
|
||||
|
||||
> nx run shell:build:production
|
||||
...
|
||||
ZEPHYR https://colum_nrwl_io_7-shell-nx-zephyr-cloud-example-col-04ccb4027-ze.zephyrcloud.app
|
||||
```
|
||||
|
||||
Zephyr Cloud deployed our applications _during_ the build process!
|
||||
|
||||
With Zephyr Cloud, it really is _that_ easy to deploy your Module Federation Projects.
|
||||
|
||||
You can then visit the [Zephyr Cloud Dashboard](https://app.zephyr-cloud.io/) where you can get a more visual insight
|
||||
into your deployed projects.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Deploying Micro Frontend applications has always been a complex task, especially when it comes to managing multiple
|
||||
build artifacts and maintaining stability. However, with Nx's continued support for Module Federation and the
|
||||
integration of Zephyr Cloud, developers now have access to a streamlined, scalable solution that simplifies the
|
||||
deployment process significantly.
|
||||
Zephyr Cloud's unique features, such as auto-deployment, live preview links, and seamless rollback capabilities, make it
|
||||
an invaluable tool for Micro Frontend orchestration. By following the steps outlined in this guide, you can effortlessly
|
||||
set up your Nx workspace, scaffold Module Federation projects, and leverage Zephyr Cloud for quick, hassle-free
|
||||
deployments.
|
||||
|
||||
For more information about Zephyr Cloud I highly recommend checking out their [docs](https://docs.zephyr-cloud.io/).
|
||||
|
||||
## Learn More
|
||||
|
||||
- [Nx on CI](/ci)
|
||||
- [Task Distribution with Nx Agents](/ci/features/distribute-task-execution)
|
||||
- [Automated e2e Test Splitting](/ci/features/split-e2e-tasks)
|
||||
- [X/Twitter](https://twitter.com/nxdevtools) -- [LinkedIn](https://www.linkedin.com/company/nrwl/)
|
||||
- [Nx Official Discord Server](https://go.nx.dev/community)
|
||||
- [Nx Youtube Channel](https://www.youtube.com/@nxdevtools)
|
||||
@@ -52,17 +52,5 @@
|
||||
"image": "/blog/images/Jeff Cross.jpeg",
|
||||
"twitter": "jeffbcross",
|
||||
"github": "jeffbcross"
|
||||
},
|
||||
{
|
||||
"name": "Philip Fulcher",
|
||||
"image": "/blog/images/Philip Fulcher.jpeg",
|
||||
"twitter": "philipjfulcher",
|
||||
"github": "philipjfulcher"
|
||||
},
|
||||
{
|
||||
"name": "Mike Hartington",
|
||||
"image": "/blog/images/Mike Hartington.png",
|
||||
"twitter": "mhartington",
|
||||
"github": "mhartington"
|
||||
}
|
||||
]
|
||||
|
||||
|
After Width: | Height: | Size: 35 MiB |
|
After Width: | Height: | Size: 17 MiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 427 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 754 KiB |
|
Before Width: | Height: | Size: 921 KiB |
|
Before Width: | Height: | Size: 519 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 980 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 478 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 709 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 774 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 212 KiB |
@@ -2,10 +2,10 @@
|
||||
|
||||
We were so excited about the features in Nx 18 that we created a whole [Launch Nx Week](/launch-nx) to share our excitement with you. During the launch week, we made the following announcements:
|
||||
|
||||
- [Project Crystal](/blog/what-if-nx-plugins-were-more-like-vscode-extensions) allows you to use inferred tasks
|
||||
- A new [`@nx/nuxt`](/blog/introducing-nx-nuxt-enhanced-nuxt-js-support-in-nx) plugin is available
|
||||
- [Nx Agents](/blog/fast-effortless-ci) are publicly available
|
||||
- [`nx release`](/blog/versioning-and-releasing-packages-in-a-monorepo) is out of beta
|
||||
- [Project Crystal](https://blog.nrwl.io/what-if-nx-plugins-were-more-like-vscode-extensions-dcdad140ae09?source=friends_link&sk=ade76fe8d50d44aafb4d4d89ab882e24&__hstc=221401095.5d21139e33f975ecef01c1783a7523db.1673975383152.1708023233215.1708026196201.468&__hssc=221401095.2.1708026196201&__hsfp=589919331) allows you to use inferred tasks
|
||||
- A new [`@nx/nuxt`](https://blog.nrwl.io/introducing-nx-nuxt-enhanced-nuxt-js-support-in-nx-01eac78034fc?source=friends_link&sk=91582cdbd0719dc23375338ad92afa9b&__hstc=221401095.5d21139e33f975ecef01c1783a7523db.1673975383152.1708023233215.1708026196201.468&__hssc=221401095.2.1708026196201&__hsfp=589919331) plugin is available
|
||||
- [Nx Agents](https://blog.nrwl.io/fast-effortless-ci-67812514ffb4?source=friends_link&sk=89e1b5c0388dda077e64a2eab5495d95&__hstc=221401095.5d21139e33f975ecef01c1783a7523db.1673975383152.1708023233215.1708026196201.468&__hssc=221401095.2.1708026196201&__hsfp=589919331) are publicly available
|
||||
- [`nx release`](https://blog.nrwl.io/versioning-and-releasing-packages-in-a-monorepo-45ee194378d1?source=friends_link&sk=934e4c5321774c8a9f88433e0dea578b&__hstc=221401095.5d21139e33f975ecef01c1783a7523db.1673975383152.1708023233215.1708026196201.468&__hssc=221401095.2.1708026196201&__hsfp=589919331) is out of beta
|
||||
|
||||
{% youtube
|
||||
src="https://youtu.be/Ed1ZCNqWF1Q"
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
# Nx 19.5 Adds StackBlitz, New Features, And More!!
|
||||
|
||||
[](/blog/nx-19-5-adds-stackblitz-new-features-and-more)
|
||||
|
||||
Read the [blogpost](/blog/nx-19-5-adds-stackblitz-new-features-and-more) for full details.
|
||||
|
||||
## Features
|
||||
|
||||
{% cards cols="2" %}
|
||||
{% card title="Announcing Nx Cloud Hobby Tier" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#announcing-nx-cloud-hobby-tier" /%}
|
||||
{% card title="StackBlitz Support" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#stackblitz-support" /%}
|
||||
{% card title="Bun and Pnpm v9 Support" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#bun-and-pnpm-v9-support" /%}
|
||||
{% card title="Local Flaky Task Detection" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#local-flaky-task-detection" /%}
|
||||
{% card title="Project Detail View Enhancements" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#project-detail-view-enhancements" /%}
|
||||
{% card title="Pattern Support for `targetDefaults`" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#pattern-support-for-targetdefaults" /%}
|
||||
{% card title="Individual Targets Can Now Opt Out of Parallelism" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#individual-targets-can-now-opt-out-of-parallelism" /%}
|
||||
{% card title="Support For Incremental Builds For Vite" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#support-for-incremental-builds-for-vite" /%}
|
||||
{% card title="Project Crystal Conversion Generators" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#project-crystal-conversion-generators" /%}
|
||||
{% card title="Gradle Composite Builds Support" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#gradle-composite-builds-support" /%}
|
||||
{% card title="Experimental: Gradle Test Atomization" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#experimental-gradle-test-atomization" /%}
|
||||
{% card title="Experimental: Nx Release Adds Version Plans Support" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#experimental-nx-release-adds-version-plans-support" /%}
|
||||
{% card title="Support for React 19 (rc) and Angular 18.1" type="document" url="/blog/nx-19-5-adds-stackblitz-new-features-and-more#support-for-react-19-rc-and-angular-181" /%}
|
||||
|
||||
{% /cards %}
|
||||
@@ -1,15 +0,0 @@
|
||||
# Nx 19.6
|
||||
|
||||
## Features
|
||||
|
||||
{% cards cols="2" %}
|
||||
{% card title="Explain with AI" type="document" url="/ci/features/explain-with-ai" /%}
|
||||
{% card title="File-Based Versioning for Nx Release (Version Plans)" type="document" url="/recipes/nx-release/file-based-versioning-version-plans" /%}
|
||||
{% card title="Migrate to Inferred Tasks (Project Crystal)" type="document" url="/recipes/running-tasks/convert-to-inferred" /%}
|
||||
{% card title="Angular 18.2.0 Support" type="document" url="https://github.com/nrwl/nx/pull/27379" /%}
|
||||
{% card title="Storybook 8 Support" type="document" url="https://github.com/nrwl/nx/pull/27214" /%}
|
||||
{% /cards %}
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
We updated `webpack-dev-server` to v5 in `@nx/webpack`, which comes with some breaking changes. See their [migration guide](https://github.com/webpack/webpack-dev-server/blob/master/migration-v5.md) for more details.
|
||||
@@ -1,21 +0,0 @@
|
||||
# Nx 19.7
|
||||
|
||||
## Features
|
||||
|
||||
### Personal Access Tokens
|
||||
|
||||
Two new top-level commands: [`nx login`](/nx-api/nx/documents/login) (an alias for [`nx-cloud login`](/ci/reference/nx-cloud-cli#npx-nxcloud-login))and [`nx logout`](/nx-api/nx/documents/login) (an alias for [`nx-cloud logout`](/ci/reference/nx-cloud-cli#npx-nxcloud-logout)) to support Personal Access Tokens for Nx Cloud. [Checkout the Full Blog Post](/blog/personal-access-tokens)
|
||||
|
||||
{% youtube
|
||||
src="https://youtu.be/i51LPtagb2s"
|
||||
title="NEW: Personal Access Tokens for Nx Cloud"
|
||||
/%}
|
||||
|
||||
### [rspack](/nx-api/rspack) as the Default Bundler for Module Federation
|
||||
|
||||
We've moved to [rspack](/nx-api/rspack) as the default bundler when setting up Module Federation with Nx! Checkout [Colum's thread](https://x.com/FerryColum/status/1833097821496455321) and catch our upcoming Nx Live broadcast for more:
|
||||
|
||||
{% youtube
|
||||
src="https://youtube.com/live/_c4zjYm0pYE"
|
||||
title="Module Federation w/ rspack | Nx Live"
|
||||
/%}
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
title: 'activate-powerpack - CLI command'
|
||||
description: 'Activate a Nx Powerpack license.'
|
||||
---
|
||||
|
||||
# activate-powerpack
|
||||
|
||||
Activate a Nx Powerpack license.
|
||||
|
||||
## Usage
|
||||
|
||||
```shell
|
||||
nx activate-powerpack <license>
|
||||
```
|
||||
|
||||
Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`, `yarn nx`, or `pnpm nx`.
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------- | ------- | ---------------------------------------------------------------------- |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--license` | string | License Key. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
@@ -37,10 +37,32 @@ Install version `17.0.0` of the `@nx/react` package and run its `@nx/react:init`
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--packageSpecifier` | string | The package name and optional version (e.g. `@nx/react` or `@nx/react@latest`) to install and initialize. If the version is not specified it will install the same version as the `nx` package for Nx core plugins or the latest version for other packages. |
|
||||
| `--updatePackageScripts` | boolean | Update `package.json` scripts with inferred targets. Defaults to `true` when the package is a core Nx plugin. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### packageSpecifier
|
||||
|
||||
Type: `string`
|
||||
|
||||
The package name and optional version (e.g. `@nx/react` or `@nx/react@latest`) to install and initialize. If the version is not specified it will install the same version as the `nx` package for Nx core plugins or the latest version for other packages
|
||||
|
||||
### updatePackageScripts
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Update `package.json` scripts with inferred targets. Defaults to `true` when the package is a core Nx plugin
|
||||
|
||||
### verbose
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Prints additional information about the commands (e.g., stack traces)
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: 'affected - CLI command'
|
||||
description: 'Run target for affected projects.'
|
||||
description: 'Run target for affected projects'
|
||||
---
|
||||
|
||||
# affected
|
||||
|
||||
Run target for affected projects.
|
||||
Run target for affected projects
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -85,29 +85,139 @@ Print the task graph to the console:
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------- | ------- | ----------------------------------------- |
|
||||
| ~~`--all`~~ | boolean | **Deprecated:** Use `nx run-many` instead |
|
||||
### ~~all~~
|
||||
|
||||
|
|
||||
Type: `boolean`
|
||||
|
||||
| `--base` | string | Base of the current branch (usually main). |
|
||||
| `--batch` | boolean | Run task(s) in batches for executors which support batches. (Default: `false`) |
|
||||
| `--configuration` | string | This is the configuration to use when performing tasks on projects. |
|
||||
| `--exclude` | string | Exclude certain projects from being processed. |
|
||||
| `--excludeTaskDependencies` | boolean | Skips running dependent tasks first. (Default: `false`) |
|
||||
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
|
||||
| `--graph` | string | Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal. |
|
||||
| `--head` | string | Latest commit of the current branch (usually HEAD). |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--nxBail` | boolean | Stop command execution after the first failed task. (Default: `false`) |
|
||||
| `--nxIgnoreCycles` | boolean | Ignore cycles in the task graph. (Default: `false`) |
|
||||
| `--output-style` | `dynamic`, `static`, `stream`, `stream-without-prefixes` | Defines how Nx emits outputs tasks logs. **dynamic**: use dynamic output life cycle, previous content is overwritten or modified as new outputs are added, display minimal logs by default, always show errors. This output format is recommended on your local development environments. **static**: uses static output life cycle, no previous content is rewritten or modified as new outputs are added. This output format is recommened for CI environments. **stream**: nx by default logs output to an internal output stream, enable this option to stream logs to stdout / stderr. **stream-without-prefixes**: nx prefixes the project name the target is running on, use this option remove the project name prefix from output. |
|
||||
| `--parallel` | string | Max number of parallel processes [default is 3]. |
|
||||
| `--runner` | string | This is the name of the tasks runner configured in nx.json. |
|
||||
| `--skipNxCache` | boolean | Rerun the tasks even when the results are available in the cache. (Default: `false`) |
|
||||
| `--targets` | string | Tasks to run for affected projects. |
|
||||
| `--uncommitted` | boolean | Uncommitted changes. |
|
||||
| `--untracked` | boolean | Untracked changes. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
**Deprecated:** Use `nx run-many` instead
|
||||
|
||||
### base
|
||||
|
||||
Type: `string`
|
||||
|
||||
Base of the current branch (usually main)
|
||||
|
||||
### batch
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Run task(s) in batches for executors which support batches
|
||||
|
||||
### configuration
|
||||
|
||||
Type: `string`
|
||||
|
||||
This is the configuration to use when performing tasks on projects
|
||||
|
||||
### exclude
|
||||
|
||||
Type: `string`
|
||||
|
||||
Exclude certain projects from being processed
|
||||
|
||||
### files
|
||||
|
||||
Type: `string`
|
||||
|
||||
Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces
|
||||
|
||||
### graph
|
||||
|
||||
Type: `string`
|
||||
|
||||
Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal.
|
||||
|
||||
### head
|
||||
|
||||
Type: `string`
|
||||
|
||||
Latest commit of the current branch (usually HEAD)
|
||||
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### nxBail
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Stop command execution after the first failed task
|
||||
|
||||
### nxIgnoreCycles
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Ignore cycles in the task graph
|
||||
|
||||
### output-style
|
||||
|
||||
Type: `string`
|
||||
|
||||
Choices: [dynamic, static, stream, stream-without-prefixes]
|
||||
|
||||
Defines how Nx emits outputs tasks logs
|
||||
|
||||
| option | description |
|
||||
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| dynamic | use dynamic output life cycle, previous content is overwritten or modified as new outputs are added, display minimal logs by default, always show errors. This output format is recommended on your local development environments. |
|
||||
| static | uses static output life cycle, no previous content is rewritten or modified as new outputs are added. This output format is recommened for CI environments. |
|
||||
| stream | nx by default logs output to an internal output stream, enable this option to stream logs to stdout / stderr |
|
||||
| stream-without-prefixes | nx prefixes the project name the target is running on, use this option remove the project name prefix from output |
|
||||
|
||||
### parallel
|
||||
|
||||
Type: `string`
|
||||
|
||||
Max number of parallel processes [default is 3]
|
||||
|
||||
### runner
|
||||
|
||||
Type: `string`
|
||||
|
||||
This is the name of the tasks runner configured in nx.json
|
||||
|
||||
### skipNxCache
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Rerun the tasks even when the results are available in the cache
|
||||
|
||||
### targets
|
||||
|
||||
Type: `string`
|
||||
|
||||
Tasks to run for affected projects
|
||||
|
||||
### uncommitted
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Uncommitted changes
|
||||
|
||||
### untracked
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Untracked changes
|
||||
|
||||
### verbose
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Prints additional information about the commands (e.g., stack traces)
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: 'connect - CLI command'
|
||||
description: 'Connect workspace to Nx Cloud.'
|
||||
description: 'Connect workspace to Nx Cloud'
|
||||
---
|
||||
|
||||
# connect
|
||||
|
||||
Connect workspace to Nx Cloud.
|
||||
Connect workspace to Nx Cloud
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -17,9 +17,14 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------------- | ------- | ----------------------------------------------------------------------------------------- |
|
||||
| `--generateToken` | boolean | Explicitly asks for a token to be created, do not override existing tokens from Nx Cloud. |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -17,63 +17,190 @@ Install `create-nx-workspace` globally to invoke the command directly, or use `n
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ------------------ | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--allPrompts` | boolean | Show all prompts. (Default: `false`) |
|
||||
| `--appName` | string | The name of the app when using a monorepo with certain stacks. |
|
||||
| `--bundler` | string | Bundler to be used to build the app. |
|
||||
| `--commit.email` | string | E-mail of the committer. |
|
||||
| `--commit.message` | string | Commit message. (Default: `Initial commit`) |
|
||||
| `--commit.name` | string | Name of the committer. |
|
||||
| `--defaultBase` | string | Default base to use for new projects. (Default: `main`) |
|
||||
| `--docker` | boolean | Generate a Dockerfile for the Node API. |
|
||||
| `--e2eTestRunner` | `playwright`, `cypress`, `none` | Test runner to use for end to end (E2E) tests. |
|
||||
| `--framework` | string | Framework option to be used with certain stacks. |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--interactive` | boolean | Enable interactive mode with presets. (Default: `true`) |
|
||||
| `--name` | string | Workspace name (e.g. org name). |
|
||||
| `--nextAppDir` | boolean | Enable the App Router for Next.js. |
|
||||
| `--nextSrcDir` | boolean | Generate a 'src/' directory for Next.js. |
|
||||
| `--nxCloud` | `github`, `gitlab`, `azure`, `bitbucket-pipelines`, `circleci`, `skip`, `yes` | Which CI provider would you like to use? |
|
||||
| `--packageManager` | `bun`, `npm`, `pnpm`, `yarn` | Package manager to use. (Default: `npm`) |
|
||||
| `--prefix` | string | Prefix to use for Angular component and directive selectors. |
|
||||
| `--preset` | string | Customizes the initial content of your workspace. Default presets include: ["apps", "npm", "ts", "web-components", "angular-monorepo", "angular-standalone", "react-monorepo", "react-standalone", "vue-monorepo", "vue-standalone", "nuxt", "nuxt-standalone", "next", "nextjs-standalone", "remix-monorepo", "remix-standalone", "react-native", "expo", "nest", "express", "react", "vue", "angular", "node-standalone", "node-monorepo", "ts-standalone"]. To build your own see https://nx.dev/extending-nx/recipes/create-preset. |
|
||||
| `--routing` | boolean | Add a routing setup for an Angular app. (Default: `true`) |
|
||||
| `--skipGit` | boolean | Skip initializing a git repository. (Default: `false`) |
|
||||
| `--ssr` | boolean | Enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) for the Angular application. |
|
||||
| `--standaloneApi` | boolean | Use Standalone Components if generating an Angular app. (Default: `true`) |
|
||||
| `--style` | string | Stylesheet type to be used with certain stacks. |
|
||||
| `--useGitHub` | boolean | Will you be using GitHub as your git hosting provider? (Default: `false`) |
|
||||
| `--version` | boolean | Show version number. |
|
||||
| `--workspaceType` | `integrated`, `package-based`, `standalone` | The type of workspace to create. |
|
||||
### allPrompts
|
||||
|
||||
## Presets
|
||||
Type: `boolean`
|
||||
|
||||
| Preset | Description |
|
||||
| ------------------ | --------------------------------------------------------------------------------------- |
|
||||
| angular | Allows you to choose between the angular-standalone or angular-monorepo presets |
|
||||
| angular-monorepo | An Angular monorepo |
|
||||
| angular-standalone | A single Angular application |
|
||||
| apps | A basic integrated style repository starting with no projects |
|
||||
| expo | A monorepo with an Expo application |
|
||||
| express | A monorepo with an Express application |
|
||||
| nest | A monorepo with a Nest application |
|
||||
| next | A Next monorepo |
|
||||
| nextjs-standalone | A single Next application |
|
||||
| node-monorepo | A Node monorepo |
|
||||
| node-standalone | A single Node application |
|
||||
| npm | A repository configured with NPM Workspaces using a package-based style. |
|
||||
| nuxt | A Nuxt monorepo |
|
||||
| nuxt-standalone | A single Nuxt application |
|
||||
| react | Allows you to choose between the react-standalone or react-monorepo presets |
|
||||
| react-monorepo | A React monorepo |
|
||||
| react-native | A monorepo with a React Native application |
|
||||
| react-standalone | A single React application |
|
||||
| remix-monorepo | A Remix monorepo |
|
||||
| remix-standalone | A single Remix application |
|
||||
| ts | A basic integrated style repository starting with TypeScript configured but no projects |
|
||||
| ts-standalone | A single TypeScript application |
|
||||
| vue | Allows you to choose between the vue-standalone or vue-monorepo presets |
|
||||
| vue-monorepo | A Vue monorepo |
|
||||
| vue-standalone | A single Vue application |
|
||||
| web-components | An integrated style repository with an application configured to use web components |
|
||||
Default: `false`
|
||||
|
||||
Show all prompts
|
||||
|
||||
### appName
|
||||
|
||||
Type: `string`
|
||||
|
||||
The name of the app when using a monorepo with certain stacks
|
||||
|
||||
### bundler
|
||||
|
||||
Type: `string`
|
||||
|
||||
Bundler to be used to build the app
|
||||
|
||||
### commit.email
|
||||
|
||||
Type: `string`
|
||||
|
||||
E-mail of the committer
|
||||
|
||||
### commit.message
|
||||
|
||||
Type: `string`
|
||||
|
||||
Default: `Initial commit`
|
||||
|
||||
Commit message
|
||||
|
||||
### commit.name
|
||||
|
||||
Type: `string`
|
||||
|
||||
Name of the committer
|
||||
|
||||
### defaultBase
|
||||
|
||||
Type: `string`
|
||||
|
||||
Default: `main`
|
||||
|
||||
Default base to use for new projects
|
||||
|
||||
### docker
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Generate a Dockerfile for the Node API
|
||||
|
||||
### e2eTestRunner
|
||||
|
||||
Type: `string`
|
||||
|
||||
Choices: [playwright, cypress, none]
|
||||
|
||||
Test runner to use for end to end (E2E) tests.
|
||||
|
||||
### framework
|
||||
|
||||
Type: `string`
|
||||
|
||||
Framework option to be used with certain stacks
|
||||
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### interactive
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `true`
|
||||
|
||||
Enable interactive mode with presets
|
||||
|
||||
### name
|
||||
|
||||
Type: `string`
|
||||
|
||||
Workspace name (e.g. org name)
|
||||
|
||||
### nextAppDir
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Enable the App Router for Next.js
|
||||
|
||||
### nextSrcDir
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Generate a 'src/' directory for Next.js
|
||||
|
||||
### nxCloud
|
||||
|
||||
Type: `string`
|
||||
|
||||
Choices: [yes, github, circleci, skip]
|
||||
|
||||
Do you want Nx Cloud to make your CI fast?
|
||||
|
||||
### packageManager
|
||||
|
||||
Type: `string`
|
||||
|
||||
Choices: [bun, npm, pnpm, yarn]
|
||||
|
||||
Default: `npm`
|
||||
|
||||
Package manager to use
|
||||
|
||||
### prefix
|
||||
|
||||
Type: `string`
|
||||
|
||||
Prefix to use for Angular component and directive selectors.
|
||||
|
||||
### preset
|
||||
|
||||
Type: `string`
|
||||
|
||||
Customizes the initial content of your workspace. Default presets include: ["apps", "npm", "ts", "web-components", "angular-monorepo", "angular-standalone", "react-monorepo", "react-standalone", "vue-monorepo", "vue-standalone", "nuxt", "nuxt-standalone", "next", "nextjs-standalone", "remix-monorepo", "remix-standalone", "react-native", "expo", "nest", "express", "react", "vue", "angular", "node-standalone", "node-monorepo", "ts-standalone"]. To build your own see https://nx.dev/extending-nx/recipes/create-preset
|
||||
|
||||
### routing
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `true`
|
||||
|
||||
Add a routing setup for an Angular app
|
||||
|
||||
### skipGit
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Skip initializing a git repository
|
||||
|
||||
### ssr
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) for the Angular application
|
||||
|
||||
### standaloneApi
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `true`
|
||||
|
||||
Use Standalone Components if generating an Angular app
|
||||
|
||||
### style
|
||||
|
||||
Type: `string`
|
||||
|
||||
Stylesheet type to be used with certain stacks
|
||||
|
||||
### useGitHub
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Will you be using GitHub as your git hosting provider?
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
### workspaceType
|
||||
|
||||
Type: `string`
|
||||
|
||||
Choices: [integrated, package-based, standalone]
|
||||
|
||||
The type of workspace to create
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: 'daemon - CLI command'
|
||||
description: 'Prints information about the Nx Daemon process or starts a daemon process.'
|
||||
description: 'Prints information about the Nx Daemon process or starts a daemon process'
|
||||
---
|
||||
|
||||
# daemon
|
||||
|
||||
Prints information about the Nx Daemon process or starts a daemon process.
|
||||
Prints information about the Nx Daemon process or starts a daemon process
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -17,9 +17,26 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------- | ------- | -------------------- |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--start` | boolean | (Default: `false`) |
|
||||
| `--stop` | boolean | (Default: `false`) |
|
||||
| `--version` | boolean | Show version number. |
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### start
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
### stop
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: 'format:check - CLI command'
|
||||
description: 'Check for un-formatted files.'
|
||||
description: 'Check for un-formatted files'
|
||||
---
|
||||
|
||||
# format:check
|
||||
|
||||
Check for un-formatted files.
|
||||
Check for un-formatted files
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -17,16 +17,68 @@ 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. |
|
||||
### all
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Format all projects
|
||||
|
||||
### base
|
||||
|
||||
Type: `string`
|
||||
|
||||
Base of the current branch (usually main)
|
||||
|
||||
### exclude
|
||||
|
||||
Type: `string`
|
||||
|
||||
Exclude certain projects from being processed
|
||||
|
||||
### files
|
||||
|
||||
Type: `string`
|
||||
|
||||
Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces
|
||||
|
||||
### head
|
||||
|
||||
Type: `string`
|
||||
|
||||
Latest commit of the current branch (usually HEAD)
|
||||
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### libs-and-apps
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Format only libraries and applications files.
|
||||
|
||||
### projects
|
||||
|
||||
Type: `string`
|
||||
|
||||
Projects to format (comma/space delimited)
|
||||
|
||||
### uncommitted
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Uncommitted changes
|
||||
|
||||
### untracked
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Untracked changes
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: 'format:write - CLI command'
|
||||
description: 'Overwrite un-formatted files.'
|
||||
description: 'Overwrite un-formatted files'
|
||||
---
|
||||
|
||||
# format:write
|
||||
|
||||
Overwrite un-formatted files.
|
||||
Overwrite un-formatted files
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -17,16 +17,68 @@ 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. |
|
||||
### all
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Format all projects
|
||||
|
||||
### base
|
||||
|
||||
Type: `string`
|
||||
|
||||
Base of the current branch (usually main)
|
||||
|
||||
### exclude
|
||||
|
||||
Type: `string`
|
||||
|
||||
Exclude certain projects from being processed
|
||||
|
||||
### files
|
||||
|
||||
Type: `string`
|
||||
|
||||
Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces
|
||||
|
||||
### head
|
||||
|
||||
Type: `string`
|
||||
|
||||
Latest commit of the current branch (usually HEAD)
|
||||
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### libs-and-apps
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Format only libraries and applications files.
|
||||
|
||||
### projects
|
||||
|
||||
Type: `string`
|
||||
|
||||
Projects to format (comma/space delimited)
|
||||
|
||||
### uncommitted
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Uncommitted changes
|
||||
|
||||
### untracked
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Untracked changes
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: 'graph - CLI command'
|
||||
description: 'Graph dependencies within workspace.'
|
||||
description: 'Graph dependencies within workspace'
|
||||
---
|
||||
|
||||
# graph
|
||||
|
||||
Graph dependencies within workspace.
|
||||
Graph dependencies within workspace
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -73,25 +73,130 @@ Watch for changes to project graph and update in-browser:
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--affected` | boolean | Highlight affected projects. |
|
||||
| `--base` | string | Base of the current branch (usually main). |
|
||||
| `--exclude` | string | Exclude certain projects from being processed. |
|
||||
| `--file` | string | Output file (e.g. --file=output.json or --file=dep-graph.html). |
|
||||
| `--files` | string | Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces. |
|
||||
| `--focus` | string | Use to show the project graph for a particular project and every node that is either an ancestor or a descendant. |
|
||||
| `--groupByFolder` | boolean | Group projects by folder in the project graph. |
|
||||
| `--head` | string | Latest commit of the current branch (usually HEAD). |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--host` | string | Bind the project graph server to a specific ip address. |
|
||||
| `--open` | boolean | Open the project graph in the browser. (Default: `true`) |
|
||||
| `--port` | number | Bind the project graph server to a specific port. |
|
||||
| `--print` | boolean | Print the project graph to stdout in the terminal. |
|
||||
| `--targets` | string | The target to show tasks for in the task graph. |
|
||||
| `--uncommitted` | boolean | Uncommitted changes. |
|
||||
| `--untracked` | boolean | Untracked changes. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
| `--view` | `projects`, `tasks` | Choose whether to view the projects or task graph. (Default: `projects`) |
|
||||
| `--watch` | boolean | Watch for changes to project graph and update in-browser. (Default: `true`) |
|
||||
### affected
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Highlight affected projects
|
||||
|
||||
### base
|
||||
|
||||
Type: `string`
|
||||
|
||||
Base of the current branch (usually main)
|
||||
|
||||
### exclude
|
||||
|
||||
Type: `string`
|
||||
|
||||
Exclude certain projects from being processed
|
||||
|
||||
### file
|
||||
|
||||
Type: `string`
|
||||
|
||||
Output file (e.g. --file=output.json or --file=dep-graph.html).
|
||||
|
||||
### files
|
||||
|
||||
Type: `string`
|
||||
|
||||
Change the way Nx is calculating the affected command by providing directly changed files, list of files delimited by commas or spaces
|
||||
|
||||
### focus
|
||||
|
||||
Type: `string`
|
||||
|
||||
Use to show the project graph for a particular project and every node that is either an ancestor or a descendant.
|
||||
|
||||
### groupByFolder
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Group projects by folder in the project graph
|
||||
|
||||
### head
|
||||
|
||||
Type: `string`
|
||||
|
||||
Latest commit of the current branch (usually HEAD)
|
||||
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### host
|
||||
|
||||
Type: `string`
|
||||
|
||||
Bind the project graph server to a specific ip address.
|
||||
|
||||
### open
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `true`
|
||||
|
||||
Open the project graph in the browser.
|
||||
|
||||
### port
|
||||
|
||||
Type: `number`
|
||||
|
||||
Bind the project graph server to a specific port.
|
||||
|
||||
### print
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Print the project graph to stdout in the terminal.
|
||||
|
||||
### targets
|
||||
|
||||
Type: `string`
|
||||
|
||||
The target to show tasks for in the task graph
|
||||
|
||||
### uncommitted
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Uncommitted changes
|
||||
|
||||
### untracked
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Untracked changes
|
||||
|
||||
### verbose
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Prints additional information about the commands (e.g., stack traces)
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
### view
|
||||
|
||||
Type: `string`
|
||||
|
||||
Choices: [projects, tasks]
|
||||
|
||||
Default: `projects`
|
||||
|
||||
Choose whether to view the projects or task graph
|
||||
|
||||
### watch
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `true`
|
||||
|
||||
Watch for changes to project graph and update in-browser
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
title: 'import - CLI command'
|
||||
description: 'Import code and git history from another repository into this repository.'
|
||||
---
|
||||
|
||||
# import
|
||||
|
||||
Import code and git history from another repository into this repository.
|
||||
|
||||
## Usage
|
||||
|
||||
```shell
|
||||
nx import [sourceRepository] [destinationDirectory]
|
||||
```
|
||||
|
||||
Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`, `yarn nx`, or `pnpm nx`.
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ------------------------ | ------- | --------------------------------------------------------------------------- |
|
||||
| `--depth` | number | The depth to clone the source repository (limit this for faster git clone). |
|
||||
| `--destinationDirectory` | string | The directory in the current workspace to import into. |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--interactive` | boolean | Interactive mode. (Default: `true`) |
|
||||
| `--ref` | string | The branch from the source repository to import. |
|
||||
| `--sourceDirectory` | string | The directory in the source repository to import from. |
|
||||
| `--sourceRepository` | string | The remote URL of the source to import. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
@@ -17,10 +17,36 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ------------------------ | ------- | --------------------------------------------------------------------------------------------------- |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--interactive` | boolean | When false disables interactive input prompts for options. (Default: `true`) |
|
||||
| `--nxCloud` | boolean | Set up distributed caching with Nx Cloud. |
|
||||
| `--useDotNxInstallation` | boolean | Initialize an Nx workspace setup in the .nx directory of the current repository. (Default: `false`) |
|
||||
| `--version` | boolean | Show version number. |
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### interactive
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `true`
|
||||
|
||||
When false disables interactive input prompts for options.
|
||||
|
||||
### nxCloud
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Set up distributed caching with Nx Cloud.
|
||||
|
||||
### useDotNxInstallation
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Initialize an Nx workspace setup in the .nx directory of the current repository.
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -31,8 +31,20 @@ List the generators and executors available in the `@nx/web` plugin if it is ins
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------- | ------- | ----------------------------------------- |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--plugin` | string | The name of an installed plugin to query. |
|
||||
| `--version` | boolean | Show version number. |
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### plugin
|
||||
|
||||
Type: `string`
|
||||
|
||||
The name of an installed plugin to query
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
title: 'login - CLI command'
|
||||
description: 'Login to Nx Cloud. This command is an alias for [`nx-cloud login`](/ci/reference/nx-cloud-cli#npx-nxcloud-login).'
|
||||
---
|
||||
|
||||
# login
|
||||
|
||||
Login to Nx Cloud. This command is an alias for [`nx-cloud login`](/ci/reference/nx-cloud-cli#npx-nxcloud-login).
|
||||
|
||||
## Usage
|
||||
|
||||
```shell
|
||||
nx login [nxCloudUrl]
|
||||
```
|
||||
|
||||
Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`, `yarn nx`, or `pnpm nx`.
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| -------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--nxCloudUrl` | string | The Nx Cloud URL of the instance you are trying to connect to. If no positional argument is provided, this command will connect to https://cloud.nx.app. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
title: 'logout - CLI command'
|
||||
description: 'Logout from Nx Cloud. This command is an alias for [`nx-cloud logout`](/ci/reference/nx-cloud-cli#npx-nxcloud-logout).'
|
||||
---
|
||||
|
||||
# logout
|
||||
|
||||
Logout from Nx Cloud. This command is an alias for [`nx-cloud logout`](/ci/reference/nx-cloud-cli#npx-nxcloud-logout).
|
||||
|
||||
## Usage
|
||||
|
||||
```shell
|
||||
nx logout
|
||||
```
|
||||
|
||||
Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`, `yarn nx`, or `pnpm nx`.
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------- | ------- | ---------------------------------------------------------------------- |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
@@ -79,17 +79,78 @@ Create a dedicated commit for each successfully completed migration. You can cus
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--commitPrefix` | string | Commit prefix to apply to the commit for each migration, when --create-commits is enabled. (Default: `chore: [nx migration] `) |
|
||||
| `--createCommits` | boolean | Automatically create a git commit after each migration runs. (Default: `false`) |
|
||||
| `--excludeAppliedMigrations` | boolean | Exclude migrations that should have been applied on previous updates. To be used with --from. (Default: `false`) |
|
||||
| `--from` | string | Use the provided versions for packages instead of the ones installed in node_modules (e.g., --from="@nx/react@16.0.0,@nx/js@16.0.0"). |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--ifExists` | boolean | Run migrations only if the migrations file exists, if not continues successfully. (Default: `false`) |
|
||||
| `--interactive` | boolean | Enable prompts to confirm whether to collect optional package updates and migrations. (Default: `false`) |
|
||||
| `--packageAndVersion` | string | The target package and version (e.g, @nx/workspace@16.0.0). |
|
||||
| `--runMigrations` | string | Execute migrations from a file (when the file isn't provided, execute migrations from migrations.json). |
|
||||
| `--to` | string | Use the provided versions for packages instead of the ones calculated by the migrator (e.g., --to="@nx/react@16.0.0,@nx/js@16.0.0"). |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
### commitPrefix
|
||||
|
||||
Type: `string`
|
||||
|
||||
Default: `chore: [nx migration] `
|
||||
|
||||
Commit prefix to apply to the commit for each migration, when --create-commits is enabled
|
||||
|
||||
### createCommits
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Automatically create a git commit after each migration runs
|
||||
|
||||
### excludeAppliedMigrations
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Exclude migrations that should have been applied on previous updates. To be used with --from
|
||||
|
||||
### from
|
||||
|
||||
Type: `string`
|
||||
|
||||
Use the provided versions for packages instead of the ones installed in node_modules (e.g., --from="@nx/react@16.0.0,@nx/js@16.0.0")
|
||||
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### ifExists
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Run migrations only if the migrations file exists, if not continues successfully
|
||||
|
||||
### interactive
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Enable prompts to confirm whether to collect optional package updates and migrations
|
||||
|
||||
### packageAndVersion
|
||||
|
||||
Type: `string`
|
||||
|
||||
The target package and version (e.g, @nx/workspace@16.0.0)
|
||||
|
||||
### runMigrations
|
||||
|
||||
Type: `string`
|
||||
|
||||
Execute migrations from a file (when the file isn't provided, execute migrations from migrations.json)
|
||||
|
||||
### to
|
||||
|
||||
Type: `string`
|
||||
|
||||
Use the provided versions for packages instead of the ones calculated by the migrator (e.g., --to="@nx/react@16.0.0,@nx/js@16.0.0")
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: 'release - CLI command'
|
||||
description: 'Orchestrate versioning and publishing of applications and libraries.'
|
||||
description: 'Orchestrate versioning and publishing of applications and libraries'
|
||||
---
|
||||
|
||||
# release
|
||||
|
||||
Orchestrate versioning and publishing of applications and libraries.
|
||||
Orchestrate versioning and publishing of applications and libraries
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -15,164 +15,401 @@ nx release
|
||||
|
||||
Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`, `yarn nx`, or `pnpm nx`.
|
||||
|
||||
## Options
|
||||
## Shared Options
|
||||
|
||||
| Shared Option | Type | Description |
|
||||
| --------------- | ------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| `--dry-run` | boolean | Preview the changes without updating files/creating releases. (Default: `false`) |
|
||||
| `--groups` | string | One or more release groups to target with the current command. |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--printConfig` | string | Print the resolved nx release configuration that would be used for the current command and then exit. |
|
||||
| `--projects` | string | Projects to run. (comma/space delimited project names and/or patterns). |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
### dry-run
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Preview the changes without updating files/creating releases
|
||||
|
||||
### groups
|
||||
|
||||
Type: `string`
|
||||
|
||||
One or more release groups to target with the current command.
|
||||
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### projects
|
||||
|
||||
Type: `string`
|
||||
|
||||
Projects to run. (comma/space delimited project names and/or patterns)
|
||||
|
||||
### verbose
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Prints additional information about the commands (e.g., stack traces)
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
## Subcommands
|
||||
|
||||
### Base Command Options
|
||||
|
||||
Create a version and release for the workspace, generate a changelog, and optionally publish the packages.
|
||||
Create a version and release for the workspace, generate a changelog, and optionally publish the packages
|
||||
|
||||
```shell
|
||||
nx release [specifier]
|
||||
```
|
||||
|
||||
## Options
|
||||
#### Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--first-release` | boolean | Indicates that this is the first release for the selected release group. If the current version cannot be determined as usual, the version on disk will be used as a fallback. This is useful when using git or the registry to determine the current version of packages, since those sources are only available after the first release. Also indicates that changelog generation should not assume a previous git tag exists and that publishing should not check for the existence of the package before running. |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--skip-publish` | boolean | Skip publishing by automatically answering no to the confirmation prompt for publishing. |
|
||||
| `--specifier` | string | Exact version or semver keyword to apply to the selected release group. |
|
||||
| `--version` | boolean | Show version number. |
|
||||
| `--yes` | boolean | Automatically answer yes to the confirmation prompt for publishing. |
|
||||
##### first-release
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Indicates that this is the first release for the selected release group. If the current version cannot be determined as usual, the version on disk will be used as a fallback. This is useful when using git or the registry to determine the current version of packages, since those sources are only available after the first release. Also indicates that changelog generation should not assume a previous git tag exists and that publishing should not check for the existence of the package before running.
|
||||
|
||||
##### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
##### skip-publish
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Skip publishing by automatically answering no to the confirmation prompt for publishing
|
||||
|
||||
##### specifier
|
||||
|
||||
Type: `string`
|
||||
|
||||
Exact version or semver keyword to apply to the selected release group.
|
||||
|
||||
##### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
##### yes
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Automatically answer yes to the confirmation prompt for publishing
|
||||
|
||||
### version
|
||||
|
||||
Create a version and release for one or more applications and libraries.
|
||||
Create a version and release for one or more applications and libraries
|
||||
|
||||
```shell
|
||||
nx release version [specifier]
|
||||
```
|
||||
|
||||
## Options
|
||||
#### Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ---------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--first-release` | boolean | Indicates that this is the first release for the selected release group. If the current version cannot be determined as usual, the version on disk will be used as a fallback. This is useful when using git or the registry to determine the current version of packages, since those sources are only available after the first release. Also indicates that changelog generation should not assume a previous git tag exists and that publishing should not check for the existence of the package before running. |
|
||||
| `--git-commit` | boolean | Whether or not to automatically commit the changes made by this command. |
|
||||
| `--git-commit-args` | string | Additional arguments (added after the --message argument, which may or may not be customized with --git-commit-message) to pass to the `git commit` command invoked behind the scenes. |
|
||||
| `--git-commit-message` | string | Custom git commit message to use when committing the changes made by this command. {version} will be dynamically interpolated when performing fixed releases, interpolated tags will be appended to the commit body when performing independent releases. |
|
||||
| `--git-tag` | boolean | Whether or not to automatically tag the changes made by this command. |
|
||||
| `--git-tag-args` | string | Additional arguments to pass to the `git tag` command invoked behind the scenes. |
|
||||
| `--git-tag-message` | string | Custom git tag message to use when tagging the changes made by this command. This defaults to be the same value as the tag itself. |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--preid` | string | The optional prerelease identifier to apply to the version. This will only be applied in the case that the specifier argument has been set to `prerelease` OR when conventional commits are enabled, in which case it will modify the resolved specifier from conventional commits to be its prerelease equivalent. E.g. minor -> preminor. (Default: ``) |
|
||||
| `--specifier` | string | Exact version or semver keyword to apply to the selected release group. |
|
||||
| `--stage-changes` | boolean | Whether or not to stage the changes made by this command. Always treated as true if git-commit is true. |
|
||||
| `--version` | boolean | Show version number. |
|
||||
##### first-release
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Indicates that this is the first release for the selected release group. If the current version cannot be determined as usual, the version on disk will be used as a fallback. This is useful when using git or the registry to determine the current version of packages, since those sources are only available after the first release. Also indicates that changelog generation should not assume a previous git tag exists and that publishing should not check for the existence of the package before running.
|
||||
|
||||
##### git-commit
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Whether or not to automatically commit the changes made by this command
|
||||
|
||||
##### git-commit-args
|
||||
|
||||
Type: `string`
|
||||
|
||||
Additional arguments (added after the --message argument, which may or may not be customized with --git-commit-message) to pass to the `git commit` command invoked behind the scenes
|
||||
|
||||
##### git-commit-message
|
||||
|
||||
Type: `string`
|
||||
|
||||
Custom git commit message to use when committing the changes made by this command. {version} will be dynamically interpolated when performing fixed releases, interpolated tags will be appended to the commit body when performing independent releases.
|
||||
|
||||
##### git-tag
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Whether or not to automatically tag the changes made by this command
|
||||
|
||||
##### git-tag-args
|
||||
|
||||
Type: `string`
|
||||
|
||||
Additional arguments to pass to the `git tag` command invoked behind the scenes
|
||||
|
||||
##### git-tag-message
|
||||
|
||||
Type: `string`
|
||||
|
||||
Custom git tag message to use when tagging the changes made by this command. This defaults to be the same value as the tag itself.
|
||||
|
||||
##### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
##### preid
|
||||
|
||||
Type: `string`
|
||||
|
||||
The optional prerelease identifier to apply to the version. This will only be applied in the case that the specifier argument has been set to `prerelease` OR when conventional commits are enabled, in which case it will modify the resolved specifier from conventional commits to be its prerelease equivalent. E.g. minor -> preminor
|
||||
|
||||
##### specifier
|
||||
|
||||
Type: `string`
|
||||
|
||||
Exact version or semver keyword to apply to the selected release group.
|
||||
|
||||
##### stage-changes
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Whether or not to stage the changes made by this command. Always treated as true if git-commit is true.
|
||||
|
||||
##### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
### changelog
|
||||
|
||||
Generate a changelog for one or more projects, and optionally push to Github.
|
||||
Generate a changelog for one or more projects, and optionally push to Github
|
||||
|
||||
```shell
|
||||
nx release changelog [version]
|
||||
```
|
||||
|
||||
## Options
|
||||
#### Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ---------------------- | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--first-release` | boolean | Indicates that this is the first release for the selected release group. If the current version cannot be determined as usual, the version on disk will be used as a fallback. This is useful when using git or the registry to determine the current version of packages, since those sources are only available after the first release. Also indicates that changelog generation should not assume a previous git tag exists and that publishing should not check for the existence of the package before running. |
|
||||
| `--from` | string | The git reference to use as the start of the changelog. If not set it will attempt to resolve the latest tag and use that. |
|
||||
| `--git-commit` | boolean | Whether or not to automatically commit the changes made by this command. |
|
||||
| `--git-commit-args` | string | Additional arguments (added after the --message argument, which may or may not be customized with --git-commit-message) to pass to the `git commit` command invoked behind the scenes. |
|
||||
| `--git-commit-message` | string | Custom git commit message to use when committing the changes made by this command. {version} will be dynamically interpolated when performing fixed releases, interpolated tags will be appended to the commit body when performing independent releases. |
|
||||
| `--git-remote` | string | Alternate git remote in the form {user}/{repo} on which to create the Github release (useful for testing). (Default: `origin`) |
|
||||
| `--git-tag` | boolean | Whether or not to automatically tag the changes made by this command. |
|
||||
| `--git-tag-args` | string | Additional arguments to pass to the `git tag` command invoked behind the scenes. |
|
||||
| `--git-tag-message` | string | Custom git tag message to use when tagging the changes made by this command. This defaults to be the same value as the tag itself. |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--interactive` | `all`, `workspace`, `projects` | Interactively modify changelog markdown contents in your code editor before applying the changes. You can set it to be interactive for all changelogs, or only the workspace level, or only the project level. |
|
||||
| `--stage-changes` | boolean | Whether or not to stage the changes made by this command. Always treated as true if git-commit is true. |
|
||||
| `--to` | string | The git reference to use as the end of the changelog. (Default: `HEAD`) |
|
||||
| `--version` | string | The version to create a Github release and changelog for. |
|
||||
##### first-release
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Indicates that this is the first release for the selected release group. If the current version cannot be determined as usual, the version on disk will be used as a fallback. This is useful when using git or the registry to determine the current version of packages, since those sources are only available after the first release. Also indicates that changelog generation should not assume a previous git tag exists and that publishing should not check for the existence of the package before running.
|
||||
|
||||
##### from
|
||||
|
||||
Type: `string`
|
||||
|
||||
The git reference to use as the start of the changelog. If not set it will attempt to resolve the latest tag and use that
|
||||
|
||||
##### git-commit
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Whether or not to automatically commit the changes made by this command
|
||||
|
||||
##### git-commit-args
|
||||
|
||||
Type: `string`
|
||||
|
||||
Additional arguments (added after the --message argument, which may or may not be customized with --git-commit-message) to pass to the `git commit` command invoked behind the scenes
|
||||
|
||||
##### git-commit-message
|
||||
|
||||
Type: `string`
|
||||
|
||||
Custom git commit message to use when committing the changes made by this command. {version} will be dynamically interpolated when performing fixed releases, interpolated tags will be appended to the commit body when performing independent releases.
|
||||
|
||||
##### git-remote
|
||||
|
||||
Type: `string`
|
||||
|
||||
Default: `origin`
|
||||
|
||||
Alternate git remote in the form {user}/{repo} on which to create the Github release (useful for testing)
|
||||
|
||||
##### git-tag
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Whether or not to automatically tag the changes made by this command
|
||||
|
||||
##### git-tag-args
|
||||
|
||||
Type: `string`
|
||||
|
||||
Additional arguments to pass to the `git tag` command invoked behind the scenes
|
||||
|
||||
##### git-tag-message
|
||||
|
||||
Type: `string`
|
||||
|
||||
Custom git tag message to use when tagging the changes made by this command. This defaults to be the same value as the tag itself.
|
||||
|
||||
##### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
##### interactive
|
||||
|
||||
Type: `string`
|
||||
|
||||
Choices: [all, workspace, projects]
|
||||
|
||||
Interactively modify changelog markdown contents in your code editor before applying the changes. You can set it to be interactive for all changelogs, or only the workspace level, or only the project level
|
||||
|
||||
##### stage-changes
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Whether or not to stage the changes made by this command. Always treated as true if git-commit is true.
|
||||
|
||||
##### to
|
||||
|
||||
Type: `string`
|
||||
|
||||
Default: `HEAD`
|
||||
|
||||
The git reference to use as the end of the changelog
|
||||
|
||||
##### version
|
||||
|
||||
Type: `string`
|
||||
|
||||
The version to create a Github release and changelog for
|
||||
|
||||
### publish
|
||||
|
||||
Publish a versioned project to a registry.
|
||||
Publish a versioned project to a registry
|
||||
|
||||
```shell
|
||||
nx release publish
|
||||
```
|
||||
|
||||
## Options
|
||||
#### Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| --------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--access` | `public`, `restricted` | Overrides the access level of the published package. Unscoped packages cannot be set to restricted. See the npm publish documentation for more information. |
|
||||
| `--all` | boolean | [deprecated] `run-many` runs all targets on all projects in the workspace if no projects are provided. This option is no longer required. (Default: `true`) |
|
||||
| `--exclude` | string | Exclude certain projects from being processed. |
|
||||
| `--excludeTaskDependencies` | boolean | Skips running dependent tasks first. (Default: `false`) |
|
||||
| `--first-release` | boolean | Indicates that this is the first release for the selected release group. If the current version cannot be determined as usual, the version on disk will be used as a fallback. This is useful when using git or the registry to determine the current version of packages, since those sources are only available after the first release. Also indicates that changelog generation should not assume a previous git tag exists and that publishing should not check for the existence of the package before running. |
|
||||
| `--graph` | string | Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal. |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--nxBail` | boolean | Stop command execution after the first failed task. (Default: `false`) |
|
||||
| `--nxIgnoreCycles` | boolean | Ignore cycles in the task graph. (Default: `false`) |
|
||||
| `--otp` | number | A one-time password for publishing to a registry that requires 2FA. |
|
||||
| `--output-style` | `dynamic`, `static`, `stream`, `stream-without-prefixes` | Defines how Nx emits outputs tasks logs. **dynamic**: use dynamic output life cycle, previous content is overwritten or modified as new outputs are added, display minimal logs by default, always show errors. This output format is recommended on your local development environments. **static**: uses static output life cycle, no previous content is rewritten or modified as new outputs are added. This output format is recommened for CI environments. **stream**: nx by default logs output to an internal output stream, enable this option to stream logs to stdout / stderr. **stream-without-prefixes**: nx prefixes the project name the target is running on, use this option remove the project name prefix from output. |
|
||||
| `--parallel` | string | Max number of parallel processes [default is 3]. |
|
||||
| `--projects` | string | Projects to run. (comma/space delimited project names and/or patterns). |
|
||||
| `--registry` | string | The registry to publish to. |
|
||||
| `--runner` | string | This is the name of the tasks runner configured in nx.json. |
|
||||
| `--skipNxCache` | boolean | Rerun the tasks even when the results are available in the cache. (Default: `false`) |
|
||||
| `--tag` | string | The distribution tag to apply to the published package. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
##### all
|
||||
|
||||
### plan
|
||||
Type: `boolean`
|
||||
|
||||
Create a version plan file to specify the desired semver bump for one or more projects or groups, as well as the relevant changelog entry.
|
||||
Default: `true`
|
||||
|
||||
```shell
|
||||
nx release plan [bump]
|
||||
```
|
||||
[deprecated] `run-many` runs all targets on all projects in the workspace if no projects are provided. This option is no longer required.
|
||||
|
||||
## Options
|
||||
##### exclude
|
||||
|
||||
| Option | Type | Description |
|
||||
| --------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--base` | string | Base of the current branch (usually main). |
|
||||
| `--bump` | `major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, `prerelease` | Semver keyword to use for the selected release group. |
|
||||
| `--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. |
|
||||
| `--message` | string | Custom message to use for the changelog entry. |
|
||||
| `--onlyTouched` | boolean | Only include projects that have been affected by the current changes. (Default: `true`) |
|
||||
| `--uncommitted` | boolean | Uncommitted changes. |
|
||||
| `--untracked` | boolean | Untracked changes. |
|
||||
| `--version` | boolean | Show version number. |
|
||||
Type: `string`
|
||||
|
||||
### plan:check
|
||||
Exclude certain projects from being processed
|
||||
|
||||
Ensure that all touched projects have an applicable version plan created for them.
|
||||
##### first-release
|
||||
|
||||
```shell
|
||||
nx release plan:check
|
||||
```
|
||||
Type: `boolean`
|
||||
|
||||
## Options
|
||||
Indicates that this is the first release for the selected release group. If the current version cannot be determined as usual, the version on disk will be used as a fallback. This is useful when using git or the registry to determine the current version of packages, since those sources are only available after the first release. Also indicates that changelog generation should not assume a previous git tag exists and that publishing should not check for the existence of the package before running.
|
||||
|
||||
| Option | Type | Description |
|
||||
| --------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--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. |
|
||||
| `--uncommitted` | boolean | Uncommitted changes. |
|
||||
| `--untracked` | boolean | Untracked changes. |
|
||||
| `--version` | boolean | Show version number. |
|
||||
##### graph
|
||||
|
||||
Type: `string`
|
||||
|
||||
Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal.
|
||||
|
||||
##### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
##### nxBail
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Stop command execution after the first failed task
|
||||
|
||||
##### nxIgnoreCycles
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Ignore cycles in the task graph
|
||||
|
||||
##### otp
|
||||
|
||||
Type: `number`
|
||||
|
||||
A one-time password for publishing to a registry that requires 2FA
|
||||
|
||||
##### output-style
|
||||
|
||||
Type: `string`
|
||||
|
||||
Choices: [dynamic, static, stream, stream-without-prefixes]
|
||||
|
||||
Defines how Nx emits outputs tasks logs
|
||||
|
||||
| option | description |
|
||||
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| dynamic | use dynamic output life cycle, previous content is overwritten or modified as new outputs are added, display minimal logs by default, always show errors. This output format is recommended on your local development environments. |
|
||||
| static | uses static output life cycle, no previous content is rewritten or modified as new outputs are added. This output format is recommened for CI environments. |
|
||||
| stream | nx by default logs output to an internal output stream, enable this option to stream logs to stdout / stderr |
|
||||
| stream-without-prefixes | nx prefixes the project name the target is running on, use this option remove the project name prefix from output |
|
||||
|
||||
##### parallel
|
||||
|
||||
Type: `string`
|
||||
|
||||
Max number of parallel processes [default is 3]
|
||||
|
||||
##### projects
|
||||
|
||||
Type: `string`
|
||||
|
||||
Projects to run. (comma/space delimited project names and/or patterns)
|
||||
|
||||
##### registry
|
||||
|
||||
Type: `string`
|
||||
|
||||
The registry to publish to
|
||||
|
||||
##### runner
|
||||
|
||||
Type: `string`
|
||||
|
||||
This is the name of the tasks runner configured in nx.json
|
||||
|
||||
##### skipNxCache
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Default: `false`
|
||||
|
||||
Rerun the tasks even when the results are available in the cache
|
||||
|
||||
##### tag
|
||||
|
||||
Type: `string`
|
||||
|
||||
The distribution tag to apply to the published package
|
||||
|
||||
##### verbose
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Prints additional information about the commands (e.g., stack traces)
|
||||
|
||||
##### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||
@@ -34,8 +34,20 @@ Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Description |
|
||||
| ----------- | ------- | ---------------------------------------------------------------------- |
|
||||
| `--help` | boolean | Show help. |
|
||||
| `--verbose` | boolean | Prints additional information about the commands (e.g., stack traces). |
|
||||
| `--version` | boolean | Show version number. |
|
||||
### help
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show help
|
||||
|
||||
### verbose
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Prints additional information about the commands (e.g., stack traces)
|
||||
|
||||
### version
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Show version number
|
||||
|
||||