Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
a33d28b
chore(core): nx package builds to local dist
Coly010 Jan 13, 2026
8d024cc
chore(core): wire up testing support
Coly010 Jan 14, 2026
c2ea423
chore(core): verbose logging
Coly010 Jan 15, 2026
b4e07b9
chore(core): temporarily disable conformance
Coly010 Jan 21, 2026
e02d2d3
chore(core): handle package.json version require
Coly010 Jan 21, 2026
9a6d37b
chore(core): apply jest resolver only to nx-package
Coly010 Jan 21, 2026
8245126
chore(core): set swc/jest as transformer globally
Coly010 Jan 21, 2026
62fa864
chore(core): fix unit tests
Coly010 Jan 22, 2026
1b45abb
chore(core): add chalk mock
Coly010 Jan 22, 2026
c70df5d
chore(misc): fix unit tests
Coly010 Jan 23, 2026
0cead9b
chore(core): fix lint
Coly010 Feb 5, 2026
1543f38
chore(core): ensure native binary copied in correct order
Coly010 Feb 5, 2026
fa25974
fix(core): add nx:copy-local-native to legacy-post-build dependsOn
Coly010 Feb 5, 2026
d4764e2
chore(core): ensure dotnet and maven depend on nx copy-local-native
Coly010 Feb 5, 2026
848aa35
chore(core): ensure graph-ui passes tsc
Coly010 Feb 5, 2026
f6c81ec
chore(core): typecheck
Coly010 Feb 5, 2026
9b513e9
chore(core): fix typechecks
Coly010 Feb 5, 2026
7c214d1
chore(core): fix import
Coly010 Feb 5, 2026
8798688
chore(core): fix nodenext module imports in create-nx-workspace and g…
nx-cloud[bot] Feb 6, 2026
d47cdc1
chore(core): ensure .d.ts files are hashed correctly
Coly010 Feb 6, 2026
9f2d80a
chore(core): update .npmignore
Coly010 Feb 9, 2026
f4b7c22
chore(core): fix formatting
Coly010 Feb 9, 2026
105a2d6
chore(core): fix after rebase
Coly010 Feb 9, 2026
f32fec1
chore(core): export path to bin/nx
Coly010 Feb 9, 2026
9c5e462
chore(core): ensure prettier mock is working as expected
Coly010 Feb 11, 2026
7a0a518
chore(core): update nx-release script
Coly010 Feb 11, 2026
37b3aeb
chore(core): update cnw to import chalk
Coly010 Feb 12, 2026
58905cc
chore(core): ensure .d.ts files in sub dirs are hashed
Coly010 Feb 12, 2026
bfa8162
chore(core): ensure default imports
Coly010 Feb 12, 2026
218868f
fix(core): ensure legacy-post-build waits for upstream build-base
nx-cloud[bot] Feb 12, 2026
32de3f3
chore(core): ensure bin nx is exported correctly
Coly010 Feb 12, 2026
fa6fb9b
chore(core): create import util that uses require for now
Coly010 Feb 13, 2026
f2c6c5f
fix(core): resolve handleImport relative paths against caller directory
Coly010 Feb 16, 2026
d006d1a
chore(js): update chalk imports
Coly010 Feb 17, 2026
90dede7
chore(core): handle import for show targets
Coly010 Feb 23, 2026
7a99fd6
fix(core): update e2e test paths to use dist directory
Coly010 Feb 24, 2026
7728728
fix(core): add missing JSON file exports to nx package.json
Coly010 Feb 25, 2026
eaf2a9f
fix(testing): use getStrippedEnvironmentVariables in jest e2e NODE_EN…
Coly010 Feb 25, 2026
1b4ccdb
fix(core): use createRequire to avoid self-referencing in nx resolution
Coly010 Feb 26, 2026
ad06f7c
fix(core): use readJsonFile to avoid require cache in getLocalNxVersion
Coly010 Feb 27, 2026
fef43c5
fix(react): remove problematic process import in MF static server exe…
Coly010 Mar 2, 2026
7e84370
chore(core): update pnpm lock
Coly010 Mar 3, 2026
ec9125f
fix(linter): fix failing eslint-utils tests by mocking resolveESLintC…
Coly010 Mar 4, 2026
4560682
fix(core): fix failing codex config template tests in set-up-ai-agents
Coly010 Mar 4, 2026
f87056c
fix(core): fix build dependency order for native binaries
nx-cloud[bot] Mar 9, 2026
cd6994b
fix(core): add build-base to nx legacy-post-build dependencies
nx-cloud[bot] Mar 9, 2026
3c9347b
fix(core): replace nx:copy-local-native with nx:build-base in legacy-…
Coly010 Mar 9, 2026
5bec500
chore(core): get package.json relative path via extname
Coly010 Mar 9, 2026
c8c464d
chore(core): get package.json relative path via extname [Self-Healing…
nx-cloud[bot] Mar 9, 2026
49d323b
fix(core): use jest.mock for enquirer in analytics-prompt tests
Coly010 Mar 10, 2026
eda1ff8
chore(core): avoid self-referencing
Coly010 Mar 10, 2026
78542ef
fix(react-native): add transformIgnorePatterns to generated jest conf…
Coly010 Mar 10, 2026
66820dd
chore(core): ensure versions are found correctly
Coly010 Mar 10, 2026
45aa0c8
chore(core): fix import
Coly010 Mar 10, 2026
9e845ef
chore(core): fix astro docs build
Coly010 Mar 11, 2026
8c35384
chore(core): address comments
Coly010 Mar 11, 2026
b25f7c4
chore(core): update gitignore
Coly010 Mar 11, 2026
6c79c85
chore(core): fix exports
Coly010 Mar 11, 2026
8ca8764
fix(core): use default import for parse-markdown-links
nx-cloud[bot] Mar 12, 2026
734d0fd
=chore(core): redeploy netlify
Coly010 Mar 12, 2026
450055c
chore(core): fix project-graph import
Coly010 Mar 16, 2026
f077b6a
chore(core): ignore the temp vite files
Coly010 Mar 16, 2026
41aeea5
fix(react-native): use vite's transformWithEsbuild instead of direct …
Coly010 Mar 16, 2026
e909722
fix(core): detect local install when localNx matches current file
FrozenPandaz Mar 19, 2026
6393e4b
chore(core): add conformance check to CI and update lockfile
FrozenPandaz Mar 19, 2026
6ac878f
fix(core): add .js extension to plugin-worker spawn path
FrozenPandaz Mar 20, 2026
e8388ae
fix(core): build workspace-plugin before conformance check in CI
FrozenPandaz Mar 20, 2026
a35a586
fix(core): fix lint errors from new dist output location
FrozenPandaz Mar 20, 2026
aac76c9
fix(core): use correct extension for plugin-worker based on runtime
FrozenPandaz Mar 20, 2026
3c419a8
fix(core): update workspace-plugin dependencies for lint
FrozenPandaz Mar 20, 2026
aa747a3
chore(core): remove workspace-plugin tsconfig
nx-cloud[bot] Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ jobs:
pnpm nx-cloud record -- nx sync:check
pids+=($!)

pnpm nx-cloud record -- nx-cloud conformance:check
pnpm nx build workspace-plugin && pnpm nx-cloud record -- pnpm nx conformance:check
pids+=($!)

pnpm nx run-many -t check-imports check-lock-files check-codeowners --parallel=1 --no-dte &
Expand Down
10 changes: 9 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ packages/angular-rspack/README.md
packages/angular-rspack-compiler/README.md
packages/dotnet/README.md
packages/maven/README.md
packages/nx/README.md

test-output
test-results
Expand All @@ -142,4 +143,11 @@ test-results
.nx/polygraph
.claude/worktrees

.nx/self-healing
.nx/self-healing
# Nx Typings Output
packages/nx/**/*.d.ts
!packages/nx/src/utils/perf-hooks.d.ts
!packages/nx/src/ai/set-up-ai-agents/schema.d.ts
!packages/nx/src/native/index.d.ts
e2e/**/*.d.ts
e2e/**/*.d.ts.map
16 changes: 14 additions & 2 deletions astro-docs/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,13 @@
"dependsOn": [
"prebuild-banner",
{
"projects": ["devkit", "create-nx-workspace", "dotnet", "maven"],
"projects": [
"nx",
"devkit",
"create-nx-workspace",
"dotnet",
"maven"
],
"target": "build"
}
],
Expand All @@ -33,7 +39,13 @@
"dependsOn": [
"prebuild-banner",
{
"projects": ["devkit", "create-nx-workspace", "dotnet", "maven"],
"projects": [
"nx",
"devkit",
"create-nx-workspace",
"dotnet",
"maven"
],
"target": "build"
}
],
Expand Down
13 changes: 12 additions & 1 deletion astro-docs/src/plugins/utils/get-schema-example-content.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,18 @@ export function getExampleForSchema(
}
const exampleFilePath = schema[EXAMPLE_SCHEMA_KEY];
const schemaDirName = dirname(schemaPath);
const docPath = resolvePath(schemaDirName, exampleFilePath);
let docPath = resolvePath(schemaDirName, exampleFilePath);

// If the resolved path doesn't exist and the schema is in a dist/ directory,
// try resolving from the source tree instead, since docs files
// may not be copied to dist during the build.
if (!existsSync(docPath) && schemaPath.includes('/dist/src/')) {
const sourceSchemaDir = dirname(schemaPath.replace('/dist/src/', '/src/'));
const sourceDocPath = resolvePath(sourceSchemaDir, exampleFilePath);
if (existsSync(sourceDocPath)) {
docPath = sourceDocPath;
}
}

if (!existsSync(docPath)) {
throw new Error(
Expand Down
1 change: 1 addition & 0 deletions e2e/angular/tsconfig.spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"**/*.test.js",
"**/*.spec.jsx",
"**/*.test.jsx",
"src/**/*.ts",
"**/*.d.ts",
"jest.config.ts"
]
Expand Down
9 changes: 6 additions & 3 deletions e2e/dotnet/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"allowJs": true
"types": ["node", "jest"]
},
"include": ["**/*.ts", "**/*.js"],
"exclude": ["node_modules", "dist"],
"include": [],
"files": [],
"references": [
{
"path": "../utils"
},
{
"path": "./tsconfig.spec.json"
}
]
}
1 change: 1 addition & 0 deletions e2e/esbuild/tsconfig.spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"**/*.test.js",
"**/*.spec.jsx",
"**/*.test.jsx",
"src/**/*.ts",
"**/*.d.ts",
"jest.config.ts"
]
Expand Down
4 changes: 1 addition & 3 deletions e2e/expo/src/expo-legacy.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,7 @@ describe('@nx/expo (legacy)', () => {
it('should tsc app', async () => {
expect(() => {
const pmc = getPackageManagerCommand();
runCommand(
`${pmc.runUninstalledPackage} tsc -p apps/${appName}/tsconfig.app.json`
);
runCommand(`${pmc.exec} tsc -p apps/${appName}/tsconfig.app.json`);
checkFilesExist(
`dist/out-tsc/apps/${appName}/src/app/App.js`,
`dist/out-tsc/apps/${appName}/src/app/App.d.ts`,
Expand Down
2 changes: 1 addition & 1 deletion e2e/jest/src/jest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ describe('Jest', () => {
const results = await runCLIAsync(`test ${name} --skip-nx-cache`, {
silenceError: true,
env: {
...process.env, // need to set this for some reason, or else get "env: node: No such file or directory"
...getStrippedEnvironmentVariables(),
NODE_ENV: 'foobar',
},
});
Expand Down
2 changes: 1 addition & 1 deletion e2e/maven/src/utils/create-maven-project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
unlinkSync,
chmodSync,
} from 'fs';
import * as extract from 'extract-zip';
import extract from 'extract-zip';

async function downloadFile(
url: string,
Expand Down
2 changes: 1 addition & 1 deletion e2e/maven/tsconfig.spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
"jest.config.ts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
"src/**/*.ts"
]
}
17 changes: 12 additions & 5 deletions e2e/nx/src/misc.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -818,7 +818,7 @@ describe('migrate', () => {
);

updateFile(
'./node_modules/nx/src/command-line/migrate/migrate.js',
'./node_modules/nx/dist/src/command-line/migrate/migrate.js',
(content) => {
const start = content.indexOf('// testing-fetch-start');
const end = content.indexOf('// testing-fetch-end');
Expand Down Expand Up @@ -1426,19 +1426,26 @@ describe('global installation', () => {
});

describe('inside nx directory', () => {
beforeAll(() => {
beforeEach(() => {
newProject({ packages: [] });
});

afterEach(() => {
cleanupProject();
});

it('should invoke Nx commands from local repo', () => {
const nxJsContents = readFile('node_modules/nx/bin/nx.js');
updateFile('node_modules/nx/bin/nx.js', `console.log('local install');`);
const nxJsContents = readFile('node_modules/nx/dist/bin/nx.js');
updateFile(
'node_modules/nx/dist/bin/nx.js',
`console.log('local install');`
);
let output: string;
expect(() => {
output = runCommand(`nx show projects`);
}).not.toThrow();
expect(output).toContain('local install');
updateFile('node_modules/nx/bin/nx.js', nxJsContents);
updateFile('node_modules/nx/dist/bin/nx.js', nxJsContents);
});

it('should warn if local Nx has higher major version', () => {
Expand Down
2 changes: 1 addition & 1 deletion e2e/nx/src/nxw.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ describe('nx wrapper / .nx installation', () => {
* Patches migration fetcher to load in migrations that we are using to test.
*/
updateFile(
'.nx/installation/node_modules/nx/src/command-line/migrate/migrate.js',
'.nx/installation/node_modules/nx/dist/src/command-line/migrate/migrate.js',
(content) => {
const start = content.indexOf('// testing-fetch-start');
const end = content.indexOf('// testing-fetch-end');
Expand Down
4 changes: 1 addition & 3 deletions e2e/react-native/src/react-native-legacy.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,9 +265,7 @@ describe('@nx/react-native (legacy)', () => {
it('should tsc app', async () => {
expect(() => {
const pmc = getPackageManagerCommand();
runCommand(
`${pmc.runUninstalledPackage} tsc -p apps/${appName}/tsconfig.app.json`
);
runCommand(`${pmc.exec} tsc -p apps/${appName}/tsconfig.app.json`);
checkFilesExist(
`dist/out-tsc/apps/${appName}/src/main.js`,
`dist/out-tsc/apps/${appName}/src/main.d.ts`,
Expand Down
2 changes: 1 addition & 1 deletion e2e/utils/command-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export function setMaxWorkers(projectJsonPath: string) {
};

if (!build) {
return;
return project;
}

const executor = build.executor as string;
Expand Down
2 changes: 1 addition & 1 deletion e2e/utils/process-utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { promisify } from 'util';
import * as treeKill from 'tree-kill';
import treeKill = require('tree-kill');
import { logError, logInfo, logSuccess } from './log-utils';
import { check as portCheck } from 'tcp-port-used';

Expand Down
3 changes: 2 additions & 1 deletion graph/migrate/tsconfig.lib.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"jsx": "react-jsx",
"outDir": "dist",
"types": ["node"],
"lib": ["ES2022", "DOM"]
"lib": ["ES2022", "DOM"],
"esModuleInterop": true
},
"exclude": [
"jest.config.ts",
Expand Down
3 changes: 2 additions & 1 deletion graph/project-details/tsconfig.lib.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"jsx": "react-jsx",
"outDir": "dist",
"types": ["node"],
"lib": ["ES2022", "DOM"]
"lib": ["ES2022", "DOM"],
"esModuleInterop": true
},
"exclude": [
"jest.config.ts",
Expand Down
3 changes: 2 additions & 1 deletion graph/ui-project-details/tsconfig.lib.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"jsx": "react-jsx",
"outDir": "dist",
"types": ["node"],
"lib": ["ES2022", "DOM"]
"lib": ["ES2022", "DOM"],
"esModuleInterop": true
},
"exclude": [
"jest.config.ts",
Expand Down
21 changes: 20 additions & 1 deletion jest.preset.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,22 @@ module.exports = {
testTimeout: 35000,
testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'],
transform: {
'^.+\\.(ts|js|html)$': 'ts-jest',
'^.+\\.(html)$': 'ts-jest',
'^.+\\.[tj]sx?$': [
'@swc/jest',
{
jsc: {
parser: { syntax: 'typescript', dynamicImport: true },
transform: {
useDefineForClassFields: false,
},
experimental: {
plugins: [['@swc-contrib/mut-cjs-exports', {}]],
},
},
module: { type: 'commonjs' },
},
],
},
resolver: '../../scripts/patched-jest-resolver.js',
moduleFileExtensions: ['ts', 'js', 'html'],
Expand All @@ -17,5 +32,9 @@ module.exports = {
moduleNameMapper: {
// Mock ora to avoid ESM issues - ora@9+ is ESM-only and breaks Jest
'^ora$': '<rootDir>/../../scripts/jest-mocks/ora.js',
// Handle both `import * as x` and `import x from` styles for CommonJS modules
'^chalk$': '<rootDir>/../../scripts/jest-mocks/chalk.js',
'^yargs-parser$': '<rootDir>/../../scripts/jest-mocks/yargs-parser.js',
'^prettier$': '<rootDir>/../../scripts/jest-mocks/prettier.js',
},
};
Loading
Loading