19.4.0 (2024-07-02)
🚀 Features
- angular: update ngrx packages to v18 (#26549)
- angular: add helper function to devkit to add viewProviders to a component (#26526)
- bundling: add convert-to-inferred generator for @nx/rollup (#26280)
- core: allow defining target with only dependsOn (#26545)
- core: add lifecycle to record task history & retrieve via daemon (#26593)
- core: added the ability to split command property into an array in nx:run-commands executor (#20201)
- core: add --help content to project details view (#26629)
- devkit: add aggregateLog util for executor to plugin migration (#26523)
- expo: add to project package.json for install command (#26500)
- gradle: support composite build (#25990)
- graph: add description and tags to details page (#26252)
- graph: add atomizer label to target groups (#26622)
- nextjs: add experimental-build-mode option to support compile only (#26465)
- nextjs: Add convert-to-inferred generator (#26706)
- nx-cloud: updates to the new onboarding flow (d928558bc)
- nx-cloud: unhide new onboarding flow (92be32c1a)
- release: allow disabling GitHub username matching in default changelog renderer (#26672)
- remix: add convert-to-inferred generator (#26601)
- storybook: add convert-to-inferred generator (#26595)
- testing: add convert-to-inferred migration generator for jest (#26259)
- vite: add convert-to-inferred migration generator (#26249)
- webpack: add createNodesV2 for plugin (#26588)
- webpack: add convertConfigToWebpackPlugin (#26516)
- webpack: add convert-to-inferred generator (#26621)
🩹 Fixes
- angular: fix chalk import and correctly skip invalid projects in ng-add generator (#26667)
- angular: allow usages of ecmascript decorators in ng-packagr executors (#26691)
- angular: migration of browserTarget to buildTarget should handle empty config #26681 (#26690, #26681)
- bundling: set project type correct for buildable vite projects (#26420)
- bundling: convert to inferred should handle config file (#26619)
- bundling: rename aliases for @nx/rollup:convert-to-inferred generator (#26659)
- bundling: use vite createNodes v2 for add plugin (#26662)
- bundling: register plugin correctly in rollup migration generator (#26673)
- core: merge args and options in nx:run-commands executor (#26573)
- core: repair sourcemaps that had file & plugin swapped (#26628)
- core: pick up changes to plugins configuration in daemon (#26625)
- core: isolated plugins should provide cleanup function (#26657)
- core: expand env variables on load and unload (#26459)
- core: move plugin worker to socket (#26558)
- core: do not create projects twice from package.json (#26700)
- core: fix create package json root parsing (#26717)
- core: add windowsHide for depencies-and-lockfile plugin with bun (#26718)
- core: correctly detect Windows Bamboo agents as CI environments (#26699)
- core: prevent cmd popups from isolation (#26730)
- core: do not load transpiler when within tsx environment (#26723)
- core: handle packageManager property with createPackageJson (#26726)
- core: do not re-register ts-node twice for the same compiler opt… (#26758)
- expo: fix expo start windows (#26493)
- expo: should support app.config.ts (#26713)
- gradle: fix migrations (#26739)
- gradle: pass process.env when running gradle (#26776)
- graph: improve layout when target groups are empty or there are no groups (#26555)
- graph: fix search params reload when back to graph (#26580)
- graph: fix empty target group (#26704)
- graph: update atomizer metadata & pdv hint (#26733)
- js: node executor now correctly kills tasks when exiting (#19219)
- linter: ensure that @nx/eslint-plugin is installed when we add an extracted base eslintrc file (#26679)
- linter: handle eslint flat config path correctly in lint executor (#26687)
- linter: dependency checks should respect pnpm workspace versions (#26709)
- misc: rename @nrwl/* to @nx/* in init generator descriptions (#26610)
- misc: register plugins correctly in migration generators (#26670)
- misc: restrict countries not supported by OpenAI (#26725)
- misc: respect useInferencePlugin in nx.json when generating apps and libs (#26703)
- module-federation: module-federation-dev-server hang caused by child process exiting too early (#26684, #26685)
- module-federation: dynamic remotes external to workspace should be skipped correctly #26551 (#26692, #26551)
- nest: Add missing props (#26534)
- nextjs: fixes for convert-to-inferred (#26735)
- nuxt: api template typo (#26719)
- nx-cloud: do not use bff api for onboarding (#26712)
- nx-cloud: onboarding cloud version handling (#26790)
- nx-dev: allow linking to headers that are
code
wrapped (#26608) - release: skip dependents of projects without changes in conventional commits (#26671)
- remix: don't add @remix-run/eslint-config dependency to new remix apps (#26568)
- storybook: output should match CLI flag (#26652)
- testing: handle different jest config files in configurations when migrating to inferred (#26591)
- testing: accept a numeric value for the playwright executor's workers option (#26689)
- testing: only add atomizer label for parent atomizer task (#26740)
- testing: pin cypress to 13.12.0 and re-enable skipped tests (#26751)
- vite: nxViteTsPaths plugin should not run-many for vitest (#26574)
- vite: setup-paths-plugin should only register import once (#26678)
- vite: incremental builds tmp tsconfig should have baseUrl set to workspace root (#26680)
- vite: infer build and serve targets when rollupOptions.input is present (#26750)
- vite: remove deprecated cache.dir from vitest generation (#26756)
- vue: application generator should use normalized app name #26605 (#26729, #26605)
- webpack: handle nullable plugin options (#26624)
- webpack: skip useLegacyNxPlugin during graph creation (#26626)
- webpack: add comment to explain useLegacyNxPlugin and how to remove it (#26696)
❤️ Thank You
- Altan Stalker
- Caleb Ukle
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- dfr-exnaton @dfr-exnaton
- Emily Xiong @xiongemi
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Josh Kim @jooskim
- Katerina Skroumpelou @mandarini
- Leosvel Pérez Espinosa @leosvelperez
- Maciej Łyskawiński @LonguCodes
- MaxKless @MaxKless
- Miroslav Jonaš @meeroslav
- Nicholas Cunningham @ndcunningham
- Pavlo Grosse @Olster
- scottpledger @scottpledger
- Thomas Dekiere
- Uzhanin Egor @gearonix