@depup/nx 23.1.3-depup.0 → 23.2.0-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/changes.json +10 -6
- package/dist/bin/init-local.js +3 -5
- package/dist/bin/nx.js +1 -0
- package/dist/src/adapter/ngcli-adapter.js +60 -1
- package/dist/src/ai/constants.d.ts +15 -0
- package/dist/src/ai/constants.js +17 -1
- package/dist/src/ai/set-up-ai-agents/set-up-ai-agents.js +57 -9
- package/dist/src/ai/utils.d.ts +13 -0
- package/dist/src/ai/utils.js +29 -0
- package/dist/src/analytics/analytics.js +2 -4
- package/dist/src/command-line/completion/command-object.js +7 -12
- package/dist/src/command-line/configure-ai-agents/configure-ai-agents.js +42 -31
- package/dist/src/command-line/format/format.js +84 -101
- package/dist/src/command-line/generate/generate.js +35 -35
- package/dist/src/command-line/import/import.js +29 -38
- package/dist/src/command-line/init/ai-agent-prompts.js +5 -11
- package/dist/src/command-line/init/command-object.js +4 -2
- package/dist/src/command-line/init/configure-plugins.js +4 -1
- package/dist/src/command-line/init/implementation/add-nx-to-monorepo.js +12 -32
- package/dist/src/command-line/init/implementation/add-nx-to-nest.js +17 -21
- package/dist/src/command-line/init/implementation/add-nx-to-npm-repo.js +8 -21
- package/dist/src/command-line/init/implementation/add-nx-to-turborepo.js +3 -17
- package/dist/src/command-line/init/implementation/angular/index.js +10 -15
- package/dist/src/command-line/init/implementation/angular/legacy-angular-versions.js +2 -0
- package/dist/src/command-line/init/implementation/angular/standalone-workspace.js +8 -2
- package/dist/src/command-line/init/implementation/check-compatible-with-plugins.js +2 -0
- package/dist/src/command-line/init/implementation/dot-nx/add-nx-scripts.js +5 -0
- package/dist/src/command-line/init/implementation/format.d.ts +18 -0
- package/dist/src/command-line/init/implementation/format.js +114 -0
- package/dist/src/command-line/init/implementation/utils.js +8 -8
- package/dist/src/command-line/init/init-v1.js +15 -18
- package/dist/src/command-line/init/init-v2.js +77 -66
- package/dist/src/command-line/migrate/agentic/definitions.js +36 -9
- package/dist/src/command-line/migrate/agentic/handoff-gitignore.d.ts +37 -22
- package/dist/src/command-line/migrate/agentic/handoff-gitignore.js +30 -39
- package/dist/src/command-line/migrate/agentic/handoff.d.ts +7 -7
- package/dist/src/command-line/migrate/agentic/handoff.js +13 -10
- package/dist/src/command-line/migrate/agentic/print-dropped-agent-context.d.ts +7 -12
- package/dist/src/command-line/migrate/agentic/print-dropped-agent-context.js +7 -0
- package/dist/src/command-line/migrate/agentic/run-step.d.ts +10 -0
- package/dist/src/command-line/migrate/agentic/run-step.js +1 -0
- package/dist/src/command-line/migrate/agentic/runner.js +24 -24
- package/dist/src/command-line/migrate/agentic/select.d.ts +10 -2
- package/dist/src/command-line/migrate/agentic/select.js +30 -32
- package/dist/src/command-line/migrate/agentic/types.d.ts +33 -3
- package/dist/src/command-line/migrate/agentic/types.js +35 -0
- package/dist/src/command-line/migrate/command-object.d.ts +6 -0
- package/dist/src/command-line/migrate/command-object.js +19 -1
- package/dist/src/command-line/migrate/execute-migration.d.ts +28 -9
- package/dist/src/command-line/migrate/execute-migration.js +112 -27
- package/dist/src/command-line/migrate/migrate-analytics.d.ts +35 -0
- package/dist/src/command-line/migrate/migrate-analytics.js +64 -0
- package/dist/src/command-line/migrate/migrate-commits.d.ts +38 -8
- package/dist/src/command-line/migrate/migrate-commits.js +130 -15
- package/dist/src/command-line/migrate/migrate-config.d.ts +13 -12
- package/dist/src/command-line/migrate/migrate-config.js +22 -14
- package/dist/src/command-line/migrate/migrate-output.d.ts +45 -7
- package/dist/src/command-line/migrate/migrate-output.js +52 -8
- package/dist/src/command-line/migrate/migrate-ui-api.d.ts +2 -1
- package/dist/src/command-line/migrate/migrate-ui-api.js +16 -7
- package/dist/src/command-line/migrate/migrate.d.ts +24 -55
- package/dist/src/command-line/migrate/migrate.js +553 -226
- package/dist/src/command-line/migrate/migration-shape.d.ts +8 -0
- package/dist/src/command-line/migrate/multi-major.js +7 -10
- package/dist/src/command-line/migrate/resolve-package-version.js +4 -8
- package/dist/src/command-line/migrate/run/agent-output.d.ts +20 -0
- package/dist/src/command-line/migrate/run/agent-output.js +65 -0
- package/dist/src/command-line/migrate/run/index.d.ts +9 -0
- package/dist/src/command-line/migrate/run/index.js +23 -0
- package/dist/src/command-line/migrate/run/orchestrator.d.ts +20 -0
- package/dist/src/command-line/migrate/run/orchestrator.js +1200 -0
- package/dist/src/command-line/migrate/run/run-id.d.ts +16 -0
- package/dist/src/command-line/migrate/run/run-id.js +56 -0
- package/dist/src/command-line/migrate/run/run-state.d.ts +157 -0
- package/dist/src/command-line/migrate/run/run-state.js +438 -0
- package/dist/src/command-line/migrate/run/state-lock.d.ts +25 -0
- package/dist/src/command-line/migrate/run/state-lock.js +76 -0
- package/dist/src/command-line/migrate/run/state-machine.d.ts +84 -0
- package/dist/src/command-line/migrate/run/state-machine.js +315 -0
- package/dist/src/command-line/migrate/run/util.d.ts +59 -0
- package/dist/src/command-line/migrate/run/util.js +148 -0
- package/dist/src/command-line/migrate/run/worker.d.ts +16 -0
- package/dist/src/command-line/migrate/run/worker.js +682 -0
- package/dist/src/command-line/migrate/run-migration-process.js +6 -5
- package/dist/src/command-line/migrate/safe-prompt.d.ts +14 -26
- package/dist/src/command-line/migrate/safe-prompt.js +32 -43
- package/dist/src/command-line/migrate/sort-migrations.d.ts +16 -0
- package/dist/src/command-line/migrate/sort-migrations.js +32 -0
- package/dist/src/command-line/migrate/step-actions.d.ts +5 -0
- package/dist/src/command-line/migrate/step-actions.js +12 -0
- package/dist/src/command-line/migrate/text.d.ts +18 -0
- package/dist/src/command-line/migrate/text.js +26 -0
- package/dist/src/command-line/migrate/version-skew-guard.d.ts +60 -0
- package/dist/src/command-line/migrate/version-skew-guard.js +175 -0
- package/dist/src/command-line/nx-cloud/connect/connect-to-nx-cloud.js +16 -20
- package/dist/src/command-line/nx-cloud/start-nx-agents/command-object.d.ts +2 -0
- package/dist/src/command-line/nx-cloud/start-nx-agents/command-object.js +16 -0
- package/dist/src/command-line/nx-cloud/start-nx-agents/start-nx-agents.d.ts +4 -0
- package/dist/src/command-line/nx-cloud/start-nx-agents/start-nx-agents.js +13 -0
- package/dist/src/command-line/nx-commands.js +26 -24
- package/dist/src/command-line/release/changelog.js +6 -17
- package/dist/src/command-line/release/plan.js +15 -28
- package/dist/src/command-line/release/publish.js +5 -0
- package/dist/src/command-line/release/release.js +6 -17
- package/dist/src/command-line/release/utils/release-graph.d.ts +1 -0
- package/dist/src/command-line/release/utils/release-graph.js +10 -2
- package/dist/src/command-line/release/utils/remote-release-clients/github.js +10 -22
- package/dist/src/command-line/release/utils/remote-release-clients/gitlab.js +13 -22
- package/dist/src/command-line/release/utils/resolve-semver-specifier.js +19 -41
- package/dist/src/command-line/release/version/resolve-current-version.js +7 -10
- package/dist/src/command-line/release/version.js +2 -2
- package/dist/src/command-line/reset/reset.js +17 -15
- package/dist/src/command-line/yargs-utils/shared-options.d.ts +1 -1
- package/dist/src/command-line/yargs-utils/shared-options.js +3 -1
- package/dist/src/config/misc-interfaces.d.ts +19 -7
- package/dist/src/core/graph/main.js +1 -1
- package/dist/src/core/graph/styles.js +1 -1
- package/dist/src/daemon/client/client.d.ts +2 -7
- package/dist/src/daemon/client/client.js +113 -28
- package/dist/src/daemon/client/daemon-environment.d.ts +35 -0
- package/dist/src/daemon/client/daemon-environment.js +106 -6
- package/dist/src/daemon/client/daemon-socket-messenger.d.ts +1 -1
- package/dist/src/daemon/client/daemon-socket-messenger.js +8 -3
- package/dist/src/daemon/is-v8-serializer-enabled.d.ts +2 -2
- package/dist/src/daemon/is-v8-serializer-enabled.js +2 -2
- package/dist/src/daemon/sandbox-socket-hint.d.ts +27 -0
- package/dist/src/daemon/sandbox-socket-hint.js +136 -0
- package/dist/src/daemon/server/client-socket-context.d.ts +1 -1
- package/dist/src/daemon/server/client-socket-context.js +2 -3
- package/dist/src/daemon/server/dotenv-graph-changes.d.ts +97 -0
- package/dist/src/daemon/server/dotenv-graph-changes.js +284 -0
- package/dist/src/daemon/server/handle-client-env.d.ts +8 -0
- package/dist/src/daemon/server/handle-client-env.js +92 -0
- package/dist/src/daemon/server/handle-outputs-changes.d.ts +10 -0
- package/dist/src/daemon/server/handle-outputs-changes.js +86 -0
- package/dist/src/daemon/server/project-graph-incremental-recomputation.d.ts +21 -0
- package/dist/src/daemon/server/project-graph-incremental-recomputation.js +159 -6
- package/dist/src/daemon/server/server.js +36 -72
- package/dist/src/daemon/server/shutdown-utils.d.ts +1 -1
- package/dist/src/daemon/server/shutdown-utils.js +2 -2
- package/dist/src/daemon/socket-utils.d.ts +26 -7
- package/dist/src/daemon/socket-utils.js +45 -31
- package/dist/src/daemon/tmp-dir.d.ts +10 -0
- package/dist/src/daemon/tmp-dir.js +21 -37
- package/dist/src/devkit-internals.d.ts +19 -8
- package/dist/src/devkit-internals.js +47 -6
- package/dist/src/executors/run-commands/running-tasks.js +46 -29
- package/dist/src/generators/internal-utils/{format-changed-files-with-prettier-if-available.d.ts → format-changed-files.d.ts} +6 -6
- package/dist/src/generators/internal-utils/format-changed-files.js +163 -0
- package/dist/src/generators/testing-utils/create-tree-with-empty-workspace.d.ts +15 -0
- package/dist/src/generators/testing-utils/create-tree-with-empty-workspace.js +21 -3
- package/dist/src/migrations/update-15-0-0/prefix-outputs.js +2 -2
- package/dist/src/migrations/update-16-0-0/remove-nrwl-cli.js +2 -2
- package/dist/src/migrations/update-16-0-0/update-depends-on-to-tokens.js +2 -2
- package/dist/src/migrations/update-16-0-0/update-nx-cloud-runner.js +2 -2
- package/dist/src/migrations/update-16-2-0/remove-run-commands-output-path.js +2 -2
- package/dist/src/migrations/update-17-0-0/rm-default-collection-npm-scope.js +2 -2
- package/dist/src/migrations/update-17-0-0/use-minimal-config-for-tasks-runner-options.js +2 -2
- package/dist/src/migrations/update-17-2-0/move-default-base.js +2 -2
- package/dist/src/migrations/update-18-0-0/disable-crystal-for-existing-workspaces.js +2 -2
- package/dist/src/migrations/update-19-2-4/set-project-name.js +2 -2
- package/dist/src/migrations/update-20-0-0/move-use-daemon-process.js +2 -2
- package/dist/src/migrations/update-20-0-1/use-legacy-cache.js +2 -2
- package/dist/src/migrations/update-21-0-0/release-changelog-config-changes.js +2 -2
- package/dist/src/migrations/update-21-0-0/release-version-config-changes.js +2 -2
- package/dist/src/migrations/update-21-0-0/remove-custom-tasks-runner.js +2 -2
- package/dist/src/migrations/update-21-0-0/remove-legacy-cache.js +2 -2
- package/dist/src/migrations/update-22-0-0/consolidate-release-tag-config.js +2 -2
- package/dist/src/migrations/update-22-0-0/release-version-config-changes.js +2 -2
- package/dist/src/migrations/update-22-2-0/add-self-healing-to-gitignore.js +2 -2
- package/dist/src/migrations/update-22-6-0/add-claude-settings-local-to-git-ignore.js +2 -2
- package/dist/src/migrations/update-22-6-0/add-claude-worktrees-to-git-ignore.js +2 -2
- package/dist/src/migrations/update-22-7-0/add-polygraph-to-git-ignore.js +2 -2
- package/dist/src/migrations/update-23-0-0/add-migrate-runs-to-git-ignore.js +2 -2
- package/dist/src/migrations/update-23-2-0/set-cache-on-executor-target-defaults.js +2 -2
- package/dist/src/native/index.d.ts +7 -3
- package/dist/src/native/nx.wasm32-wasi.debug.wasm +0 -0
- package/dist/src/native/nx.wasm32-wasi.wasm +0 -0
- package/dist/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +3 -3
- package/dist/src/nx-cloud/utilities/url-shorten.d.ts +1 -4
- package/dist/src/nx-cloud/utilities/url-shorten.js +9 -8
- package/dist/src/plugins/js/lock-file/lock-file.d.ts +46 -4
- package/dist/src/plugins/js/lock-file/lock-file.js +192 -15
- package/dist/src/plugins/js/lock-file/npm-parser.js +10 -3
- package/dist/src/plugins/js/lock-file/pnpm-parser.js +356 -62
- package/dist/src/plugins/js/lock-file/project-graph-pruning.d.ts +25 -1
- package/dist/src/plugins/js/lock-file/project-graph-pruning.js +78 -4
- package/dist/src/plugins/js/lock-file/pruned-output.d.ts +330 -0
- package/dist/src/plugins/js/lock-file/pruned-output.js +1441 -0
- package/dist/src/plugins/js/lock-file/utils/pnpm-normalizer.d.ts +1 -0
- package/dist/src/plugins/js/lock-file/utils/pnpm-normalizer.js +6 -5
- package/dist/src/plugins/js/utils/register.d.ts +11 -0
- package/dist/src/plugins/js/utils/register.js +40 -6
- package/dist/src/project-graph/plugins/get-plugins.d.ts +27 -1
- package/dist/src/project-graph/plugins/get-plugins.js +110 -5
- package/dist/src/project-graph/plugins/isolation/enabled.js +1 -4
- package/dist/src/project-graph/plugins/isolation/isolated-plugin.d.ts +16 -0
- package/dist/src/project-graph/plugins/isolation/isolated-plugin.js +69 -11
- package/dist/src/project-graph/plugins/isolation/messaging.js +1 -3
- package/dist/src/project-graph/plugins/isolation/plugin-worker.js +23 -2
- package/dist/src/project-graph/project-graph.js +27 -2
- package/dist/src/project-graph/utils/project-configuration/project-nodes-manager.d.ts +7 -0
- package/dist/src/project-graph/utils/project-configuration/project-nodes-manager.js +14 -6
- package/dist/src/project-graph/utils/project-configuration/target-defaults.js +47 -21
- package/dist/src/tasks-runner/is-tui-enabled.js +3 -1
- package/dist/src/tasks-runner/life-cycle.d.ts +2 -2
- package/dist/src/tasks-runner/life-cycle.js +2 -2
- package/dist/src/tasks-runner/life-cycles/performance-report.d.ts +12 -0
- package/dist/src/tasks-runner/life-cycles/performance-report.js +62 -3
- package/dist/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.d.ts +26 -1
- package/dist/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.js +99 -5
- package/dist/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.d.ts +26 -0
- package/dist/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.js +113 -17
- package/dist/src/tasks-runner/pseudo-ipc.js +14 -13
- package/dist/src/tasks-runner/pseudo-terminal.d.ts +17 -3
- package/dist/src/tasks-runner/pseudo-terminal.js +22 -10
- package/dist/src/tasks-runner/run-command.js +32 -39
- package/dist/src/tasks-runner/running-tasks/batch-process.d.ts +55 -0
- package/dist/src/tasks-runner/running-tasks/batch-process.js +161 -8
- package/dist/src/tasks-runner/task-env.d.ts +25 -0
- package/dist/src/tasks-runner/task-env.js +39 -0
- package/dist/src/tasks-runner/task-orchestrator.d.ts +68 -0
- package/dist/src/tasks-runner/task-orchestrator.js +159 -8
- package/dist/src/utils/analytics-enabled.d.ts +7 -0
- package/dist/src/utils/analytics-enabled.js +11 -0
- package/dist/src/utils/analytics-prompt.js +4 -7
- package/dist/src/utils/cache-directory.d.ts +62 -3
- package/dist/src/utils/cache-directory.js +276 -25
- package/dist/src/utils/catalog/bun-manager-utils.d.ts +8 -0
- package/dist/src/utils/catalog/bun-manager-utils.js +174 -0
- package/dist/src/utils/catalog/bun-manager.d.ts +28 -0
- package/dist/src/utils/catalog/bun-manager.js +130 -0
- package/dist/src/utils/catalog/index.d.ts +1 -1
- package/dist/src/utils/catalog/index.js +1 -1
- package/dist/src/utils/catalog/manager-factory.js +3 -0
- package/dist/src/utils/catalog/manager-utils.d.ts +8 -1
- package/dist/src/utils/catalog/manager-utils.js +9 -4
- package/dist/src/utils/catalog/manager.d.ts +13 -1
- package/dist/src/utils/catalog/manager.js +30 -0
- package/dist/src/utils/catalog/pnpm-manager.d.ts +2 -1
- package/dist/src/utils/catalog/pnpm-manager.js +3 -0
- package/dist/src/utils/catalog/types.d.ts +4 -0
- package/dist/src/utils/catalog/yarn-manager.d.ts +6 -2
- package/dist/src/utils/catalog/yarn-manager.js +23 -32
- package/dist/src/utils/child-process.d.ts +31 -1
- package/dist/src/utils/child-process.js +103 -0
- package/dist/src/utils/chunkify.d.ts +7 -1
- package/dist/src/utils/chunkify.js +10 -3
- package/dist/src/utils/consume-messages-from-socket.d.ts +42 -7
- package/dist/src/utils/consume-messages-from-socket.js +273 -38
- package/dist/src/utils/db-connection.js +8 -16
- package/dist/src/utils/exit-codes.d.ts +9 -0
- package/dist/src/utils/exit-codes.js +19 -0
- package/dist/src/utils/formatters/index.d.ts +13 -0
- package/dist/src/utils/formatters/index.js +74 -0
- package/dist/src/utils/formatters/oxfmt.d.ts +32 -0
- package/dist/src/utils/formatters/oxfmt.js +764 -0
- package/dist/src/utils/formatters/prettier.d.ts +26 -0
- package/dist/src/utils/formatters/prettier.js +201 -0
- package/dist/src/utils/formatters/shared.d.ts +5 -0
- package/dist/src/utils/formatters/shared.js +8 -0
- package/dist/src/utils/git-utils.d.ts +38 -2
- package/dist/src/utils/git-utils.js +422 -19
- package/dist/src/utils/has-nx-js-plugin.d.ts +1 -1
- package/dist/src/utils/has-nx-js-plugin.js +1 -1
- package/dist/src/utils/ignore.d.ts +47 -5
- package/dist/src/utils/ignore.js +93 -11
- package/dist/src/utils/kill-child-on-host-exit.d.ts +7 -0
- package/dist/src/utils/kill-child-on-host-exit.js +42 -0
- package/dist/src/utils/nx-console-prompt.js +3 -6
- package/dist/src/utils/nx-tmp-dir.d.ts +5 -0
- package/dist/src/utils/nx-tmp-dir.js +7 -2
- package/dist/src/utils/output.d.ts +153 -0
- package/dist/src/utils/output.js +289 -5
- package/dist/src/utils/owned-private-dir.d.ts +13 -0
- package/dist/src/utils/owned-private-dir.js +39 -0
- package/dist/src/utils/package-json.d.ts +2 -0
- package/dist/src/utils/package-manager.js +17 -7
- package/dist/src/utils/params.d.ts +7 -1
- package/dist/src/utils/params.js +64 -6
- package/dist/src/utils/permission-errors.d.ts +11 -0
- package/dist/src/utils/permission-errors.js +17 -0
- package/dist/src/utils/plugins/core-plugins.js +4 -0
- package/dist/src/utils/prompt-helpers.d.ts +53 -0
- package/dist/src/utils/prompt-helpers.js +111 -0
- package/dist/src/utils/socket-refused-exit-code.d.ts +15 -0
- package/dist/src/utils/socket-refused-exit-code.js +18 -0
- package/dist/src/utils/write-formatted-json-file.d.ts +3 -2
- package/dist/src/utils/write-formatted-json-file.js +5 -4
- package/package.json +29 -20
- package/dist/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +0 -88
- package/dist/src/utils/is-using-prettier.d.ts +0 -3
- package/dist/src/utils/is-using-prettier.js +0 -62
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addNxToNest = addNxToNest;
|
|
4
|
-
const
|
|
5
|
-
const enquirer = tslib_1.__importStar(require("enquirer"));
|
|
4
|
+
const prompt_helpers_1 = require("../../../utils/prompt-helpers");
|
|
6
5
|
const node_fs_1 = require("node:fs");
|
|
7
6
|
const path_1 = require("path");
|
|
7
|
+
const format_1 = require("./format");
|
|
8
8
|
const fileutils_1 = require("../../../utils/fileutils");
|
|
9
9
|
const output_1 = require("../../../utils/output");
|
|
10
10
|
const package_manager_1 = require("../../../utils/package-manager");
|
|
@@ -46,26 +46,14 @@ async function addNxToNest(options, packageJson) {
|
|
|
46
46
|
output_1.output.log({
|
|
47
47
|
title: '🧑🔧 Please answer the following questions about the scripts found in your package.json in order to generate task runner configuration',
|
|
48
48
|
});
|
|
49
|
-
cacheableOperations =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
message: 'Which of the following scripts are cacheable? (Produce the same output given the same input, e.g. build, test and lint usually are, serve and start are not)',
|
|
54
|
-
choices: scripts,
|
|
55
|
-
/**
|
|
56
|
-
* limit is missing from the interface but it limits the amount of options shown
|
|
57
|
-
*/
|
|
58
|
-
limit: process.stdout.rows - 4, // 4 leaves room for the header above, the prompt and some whitespace
|
|
59
|
-
},
|
|
60
|
-
])).cacheableOperations;
|
|
49
|
+
cacheableOperations = await (0, prompt_helpers_1.multiselectPrompt)({
|
|
50
|
+
message: 'Which of the following scripts are cacheable? (Produce the same output given the same input, e.g. build, test and lint usually are, serve and start are not)',
|
|
51
|
+
choices: scripts,
|
|
52
|
+
});
|
|
61
53
|
for (const scriptName of cacheableOperations) {
|
|
62
|
-
scriptOutputs[scriptName] =
|
|
63
|
-
{
|
|
64
|
-
|
|
65
|
-
name: scriptName,
|
|
66
|
-
message: `Does the "${scriptName}" script create any outputs? If not, leave blank, otherwise provide a path (e.g. dist, lib, build, coverage)`,
|
|
67
|
-
},
|
|
68
|
-
]))[scriptName];
|
|
54
|
+
scriptOutputs[scriptName] = await (0, prompt_helpers_1.textPrompt)({
|
|
55
|
+
message: `Does the "${scriptName}" script create any outputs? If not, leave blank, otherwise provide a path (e.g. dist, lib, build, coverage)`,
|
|
56
|
+
});
|
|
69
57
|
}
|
|
70
58
|
nxCloudChoice =
|
|
71
59
|
options.nxCloud === true
|
|
@@ -114,6 +102,7 @@ function addNestPluginToPackageJson(repoRoot) {
|
|
|
114
102
|
json.devDependencies['@nx/nest'] = versions_1.nxVersion;
|
|
115
103
|
json.devDependencies['@nx/jest'] = versions_1.nxVersion;
|
|
116
104
|
(0, fileutils_1.writeJsonFile)(path, json);
|
|
105
|
+
(0, format_1.recordInitWrite)(path);
|
|
117
106
|
}
|
|
118
107
|
function createProjectJson(repoRoot, packageJson, nestCLIOptions) {
|
|
119
108
|
const packageName = packageJson.name;
|
|
@@ -194,6 +183,7 @@ function createProjectJson(repoRoot, packageJson, nestCLIOptions) {
|
|
|
194
183
|
addJestTargets(repoRoot, packageName, json, packageJson);
|
|
195
184
|
}
|
|
196
185
|
(0, fileutils_1.writeJsonFile)(path, json);
|
|
186
|
+
(0, format_1.recordInitWrite)(path);
|
|
197
187
|
}
|
|
198
188
|
function getJestOptions(isE2E, repoRoot, packageName, existingOptions) {
|
|
199
189
|
// try get the e2e json if we find it
|
|
@@ -230,6 +220,7 @@ function tryCreateJestPreset(repoRoot) {
|
|
|
230
220
|
const nxPreset = require('@nx/jest/preset').default;
|
|
231
221
|
module.exports = {...nxPreset};
|
|
232
222
|
`, 'utf8');
|
|
223
|
+
(0, format_1.recordInitWrite)(jestPresetPath);
|
|
233
224
|
return true;
|
|
234
225
|
}
|
|
235
226
|
return false;
|
|
@@ -244,7 +235,9 @@ function addJestTargets(repoRoot, packageName, projectJson, packageJson) {
|
|
|
244
235
|
unitTestOptions['preset'] = e2eTestOptions['preset'] = './jest.preset.js';
|
|
245
236
|
}
|
|
246
237
|
(0, node_fs_1.writeFileSync)(unitTestConfigPath, `export default ${JSON.stringify(unitTestOptions, null, 2)}`, 'utf8');
|
|
238
|
+
(0, format_1.recordInitWrite)(unitTestConfigPath);
|
|
247
239
|
(0, node_fs_1.writeFileSync)(e2eTestConfigPath, `export default ${JSON.stringify(e2eTestOptions, null, 2)}`, 'utf8');
|
|
240
|
+
(0, format_1.recordInitWrite)(e2eTestConfigPath);
|
|
248
241
|
projectJson.targets['test'] = {
|
|
249
242
|
executor: '@nx/jest:jest',
|
|
250
243
|
outputs: [`{workspaceRoot}/coverage/${packageName}`],
|
|
@@ -274,6 +267,7 @@ function addNrwlJsPluginsConfig(repoRoot) {
|
|
|
274
267
|
};
|
|
275
268
|
}
|
|
276
269
|
(0, fileutils_1.writeJsonFile)(path, json);
|
|
270
|
+
(0, format_1.recordInitWrite)(path);
|
|
277
271
|
}
|
|
278
272
|
function updatePackageJsonScripts(repoRoot, isJS) {
|
|
279
273
|
const path = (0, path_1.join)(repoRoot, `package.json`);
|
|
@@ -310,6 +304,7 @@ function updatePackageJsonScripts(repoRoot, isJS) {
|
|
|
310
304
|
}
|
|
311
305
|
}
|
|
312
306
|
(0, fileutils_1.writeJsonFile)(path, json);
|
|
307
|
+
(0, format_1.recordInitWrite)(path);
|
|
313
308
|
}
|
|
314
309
|
function updateTsConfig(repoRoot, sourceRoot) {
|
|
315
310
|
const path = (0, path_1.join)(repoRoot, `tsconfig.build.json`);
|
|
@@ -321,6 +316,7 @@ function updateTsConfig(repoRoot, sourceRoot) {
|
|
|
321
316
|
json.include = [];
|
|
322
317
|
json.include.push(`${sourceRoot}/**/*.ts`);
|
|
323
318
|
(0, fileutils_1.writeJsonFile)(path, json);
|
|
319
|
+
(0, format_1.recordInitWrite)(path);
|
|
324
320
|
}
|
|
325
321
|
function removeFile(repoRoot, file) {
|
|
326
322
|
const path = (0, path_1.join)(repoRoot, file);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addNxToNpmRepo = addNxToNpmRepo;
|
|
4
|
-
const
|
|
5
|
-
const enquirer = tslib_1.__importStar(require("enquirer"));
|
|
4
|
+
const prompt_helpers_1 = require("../../../utils/prompt-helpers");
|
|
6
5
|
const path_1 = require("path");
|
|
7
6
|
const fileutils_1 = require("../../../utils/fileutils");
|
|
8
7
|
const output_1 = require("../../../utils/output");
|
|
@@ -21,26 +20,14 @@ async function addNxToNpmRepo(options, guided = true) {
|
|
|
21
20
|
output_1.output.log({
|
|
22
21
|
title: '🧑🔧 Please answer the following questions about the scripts found in your package.json in order to generate task runner configuration',
|
|
23
22
|
});
|
|
24
|
-
cacheableOperations =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
message: 'Which of the following scripts are cacheable? (Produce the same output given the same input, e.g. build, test and lint usually are, serve and start are not). You can use spacebar to select one or more scripts.',
|
|
29
|
-
choices: scripts,
|
|
30
|
-
/**
|
|
31
|
-
* limit is missing from the interface but it limits the amount of options shown
|
|
32
|
-
*/
|
|
33
|
-
limit: process.stdout.rows - 4, // 4 leaves room for the header above, the prompt and some whitespace
|
|
34
|
-
},
|
|
35
|
-
])).cacheableOperations;
|
|
23
|
+
cacheableOperations = await (0, prompt_helpers_1.multiselectPrompt)({
|
|
24
|
+
message: 'Which of the following scripts are cacheable? (Produce the same output given the same input, e.g. build, test and lint usually are, serve and start are not). You can use spacebar to select one or more scripts.',
|
|
25
|
+
choices: scripts,
|
|
26
|
+
});
|
|
36
27
|
for (const scriptName of cacheableOperations) {
|
|
37
|
-
scriptOutputs[scriptName] =
|
|
38
|
-
{
|
|
39
|
-
|
|
40
|
-
name: scriptName,
|
|
41
|
-
message: `Does the "${scriptName}" script create any outputs? If not, leave blank, otherwise provide a path (e.g. dist, lib, build, coverage)`,
|
|
42
|
-
},
|
|
43
|
-
]))[scriptName];
|
|
28
|
+
scriptOutputs[scriptName] = await (0, prompt_helpers_1.textPrompt)({
|
|
29
|
+
message: `Does the "${scriptName}" script create any outputs? If not, leave blank, otherwise provide a path (e.g. dist, lib, build, coverage)`,
|
|
30
|
+
});
|
|
44
31
|
}
|
|
45
32
|
nxCloudChoice =
|
|
46
33
|
options.nxCloud === true
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addNxToTurborepo = addNxToTurborepo;
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
4
|
const node_path_1 = require("node:path");
|
|
6
5
|
const fileutils_1 = require("../../../utils/fileutils");
|
|
7
|
-
const handle_import_1 = require("../../../utils/handle-import");
|
|
8
6
|
const output_1 = require("../../../utils/output");
|
|
9
7
|
const package_manager_1 = require("../../../utils/package-manager");
|
|
8
|
+
const format_1 = require("./format");
|
|
10
9
|
const utils_1 = require("./utils");
|
|
11
10
|
async function addNxToTurborepo(_options) {
|
|
12
11
|
const repoRoot = process.cwd();
|
|
@@ -27,21 +26,8 @@ async function addNxToTurborepo(_options) {
|
|
|
27
26
|
});
|
|
28
27
|
let nxJson = (0, utils_1.createNxJsonFromTurboJson)((0, fileutils_1.readJsonFile)('turbo.json'));
|
|
29
28
|
const nxJsonPath = (0, node_path_1.join)(repoRoot, 'nx.json');
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const prettier = await (0, handle_import_1.handleImport)('prettier');
|
|
33
|
-
const config = await prettier.resolveConfig(repoRoot);
|
|
34
|
-
(0, node_fs_1.writeFileSync)(nxJsonPath,
|
|
35
|
-
// @ts-ignore - Always await prettier.format, in modern versions it's async
|
|
36
|
-
await prettier.format(JSON.stringify(nxJson, null, 2), {
|
|
37
|
-
...(config ?? {}),
|
|
38
|
-
parser: 'json',
|
|
39
|
-
}));
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
// Apply fallback JSON write
|
|
43
|
-
(0, fileutils_1.writeJsonFile)(nxJsonPath, nxJson);
|
|
44
|
-
}
|
|
29
|
+
(0, fileutils_1.writeJsonFile)(nxJsonPath, nxJson);
|
|
30
|
+
(0, format_1.recordInitWrite)(nxJsonPath);
|
|
45
31
|
const packageManager = (0, package_manager_1.detectPackageManager)(repoRoot);
|
|
46
32
|
const pmc = (0, package_manager_1.getPackageManagerCommand)(packageManager);
|
|
47
33
|
(0, utils_1.updateGitIgnore)(repoRoot);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addNxToAngularCliRepo = addNxToAngularCliRepo;
|
|
4
|
-
const
|
|
4
|
+
const prompt_helpers_1 = require("../../../../utils/prompt-helpers");
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const fileutils_1 = require("../../../../utils/fileutils");
|
|
7
7
|
const versions_1 = require("../../../../utils/versions");
|
|
@@ -14,6 +14,7 @@ const integrated_workspace_1 = require("./integrated-workspace");
|
|
|
14
14
|
const legacy_angular_versions_1 = require("./legacy-angular-versions");
|
|
15
15
|
const standalone_workspace_1 = require("./standalone-workspace");
|
|
16
16
|
const connect_to_nx_cloud_1 = require("../../../nx-cloud/connect/connect-to-nx-cloud");
|
|
17
|
+
const format_1 = require("../format");
|
|
17
18
|
const defaultCacheableOperations = [
|
|
18
19
|
'build',
|
|
19
20
|
'server',
|
|
@@ -29,6 +30,8 @@ async function addNxToAngularCliRepo(options) {
|
|
|
29
30
|
if (legacyMigrationFn) {
|
|
30
31
|
output_1.output.log({ title: '💽 Running migration for a legacy Angular version' });
|
|
31
32
|
await legacyMigrationFn();
|
|
33
|
+
// The exit skips the caller's drain, so format the recorded writes here.
|
|
34
|
+
await (0, format_1.formatInitWrites)(repoRoot);
|
|
32
35
|
process.exit(0);
|
|
33
36
|
}
|
|
34
37
|
output_1.output.success({
|
|
@@ -65,20 +68,11 @@ async function collectCacheableOperations(options) {
|
|
|
65
68
|
output_1.output.log({
|
|
66
69
|
title: '🧑🔧 Please answer the following questions about the targets found in your angular.json in order to generate task runner configuration',
|
|
67
70
|
});
|
|
68
|
-
cacheableOperations =
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
message: 'Which of the following targets are cacheable? (Produce the same output given the same input, e.g. build, test and lint usually are, serve and start are not)',
|
|
74
|
-
// enquirer mutates the array below, create a new one to avoid it
|
|
75
|
-
choices: [...workspaceTargets],
|
|
76
|
-
/**
|
|
77
|
-
* limit is missing from the interface but it limits the amount of options shown
|
|
78
|
-
*/
|
|
79
|
-
limit: process.stdout.rows - 4, // 4 leaves room for the header above, the prompt and some whitespace
|
|
80
|
-
},
|
|
81
|
-
])).cacheableOperations;
|
|
71
|
+
cacheableOperations = await (0, prompt_helpers_1.multiselectPrompt)({
|
|
72
|
+
message: 'Which of the following targets are cacheable? (Produce the same output given the same input, e.g. build, test and lint usually are, serve and start are not)',
|
|
73
|
+
choices: workspaceTargets,
|
|
74
|
+
initialValues: defaultCacheableTargetsInWorkspace,
|
|
75
|
+
});
|
|
82
76
|
}
|
|
83
77
|
else {
|
|
84
78
|
cacheableOperations =
|
|
@@ -113,6 +107,7 @@ function addPluginDependencies() {
|
|
|
113
107
|
}
|
|
114
108
|
packageJson.devDependencies = (0, object_sort_1.sortObjectByKeys)(packageJson.devDependencies);
|
|
115
109
|
(0, fileutils_1.writeJsonFile)(packageJsonPath, packageJson);
|
|
110
|
+
(0, format_1.recordInitWrite)(packageJsonPath);
|
|
116
111
|
}
|
|
117
112
|
async function setupWorkspace(cacheableOperations, isIntegratedMigration) {
|
|
118
113
|
(0, utils_1.updateGitIgnore)(repoRoot);
|
|
@@ -12,6 +12,7 @@ const package_json_1 = require("../../../../utils/package-json");
|
|
|
12
12
|
const package_manager_1 = require("../../../../utils/package-manager");
|
|
13
13
|
const connect_to_nx_cloud_1 = require("../../../nx-cloud/connect/connect-to-nx-cloud");
|
|
14
14
|
const utils_1 = require("../utils");
|
|
15
|
+
const format_1 = require("../format");
|
|
15
16
|
// map of Angular major versions to Nx versions to use for legacy `nx init` migrations,
|
|
16
17
|
// key is major Angular version and value is Nx version to use
|
|
17
18
|
const nxAngularLegacyVersionMap = {
|
|
@@ -141,6 +142,7 @@ async function installDependencies(repoRoot, pkgInfo, pmc) {
|
|
|
141
142
|
json.dependencies = (0, object_sort_1.sortObjectByKeys)(json.dependencies);
|
|
142
143
|
}
|
|
143
144
|
(0, fileutils_1.writeJsonFile)(`package.json`, json);
|
|
145
|
+
(0, format_1.recordInitWrite)('package.json');
|
|
144
146
|
(0, child_process_1.execSync)(pmc.install, { stdio: [0, 1, 2], windowsHide: true });
|
|
145
147
|
}
|
|
146
148
|
async function resolvePackageVersion(packageName, version) {
|
|
@@ -7,6 +7,7 @@ const angular_json_1 = require("../../../../adapter/angular-json");
|
|
|
7
7
|
const fileutils_1 = require("../../../../utils/fileutils");
|
|
8
8
|
const path_1 = require("../../../../utils/path");
|
|
9
9
|
const utils_1 = require("../utils");
|
|
10
|
+
const format_1 = require("../format");
|
|
10
11
|
async function setupStandaloneWorkspace(repoRoot, cacheableOperations, workspaceTargets) {
|
|
11
12
|
const angularJsonPath = (0, node_path_1.join)(repoRoot, 'angular.json');
|
|
12
13
|
const angularJson = (0, fileutils_1.readJsonFile)(angularJsonPath);
|
|
@@ -25,12 +26,14 @@ async function setupStandaloneWorkspace(repoRoot, cacheableOperations, workspace
|
|
|
25
26
|
const projects = (0, angular_json_1.toNewFormat)(angularJson).projects;
|
|
26
27
|
for (const [projectName, project] of Object.entries(projects ?? {})) {
|
|
27
28
|
updateProjectOutputs(repoRoot, projectName, project, cacheableOperations);
|
|
28
|
-
|
|
29
|
+
const projectJsonPath = (0, node_path_1.join)(project.root, 'project.json');
|
|
30
|
+
(0, fileutils_1.writeJsonFile)(projectJsonPath, {
|
|
29
31
|
$schema: (0, path_1.normalizePath)((0, node_path_1.relative)((0, node_path_1.join)(repoRoot, project.root), (0, node_path_1.join)(repoRoot, 'node_modules/nx/schemas/project-schema.json'))),
|
|
30
32
|
name: projectName,
|
|
31
33
|
...project,
|
|
32
34
|
root: undefined,
|
|
33
35
|
});
|
|
36
|
+
(0, format_1.recordInitWrite)(projectJsonPath);
|
|
34
37
|
}
|
|
35
38
|
(0, fs_1.unlinkSync)(angularJsonPath);
|
|
36
39
|
}
|
|
@@ -91,7 +94,9 @@ function createNxJson(repoRoot, angularJson, cacheableOperations, { eslintProjec
|
|
|
91
94
|
if (Object.keys(defaults).length > 0) {
|
|
92
95
|
nxJson.targetDefaults = defaults;
|
|
93
96
|
}
|
|
94
|
-
|
|
97
|
+
const nxJsonPath = (0, node_path_1.join)(repoRoot, 'nx.json');
|
|
98
|
+
(0, fileutils_1.writeJsonFile)(nxJsonPath, nxJson);
|
|
99
|
+
(0, format_1.recordInitWrite)(nxJsonPath);
|
|
95
100
|
}
|
|
96
101
|
function updateProjectOutputs(repoRoot, projectName, project, cacheableOperations) {
|
|
97
102
|
Object.entries(project.targets ?? {}).forEach(([targetName, target]) => {
|
|
@@ -195,4 +200,5 @@ function replaceNgWithNxInPackageJsonScripts(repoRoot) {
|
|
|
195
200
|
.replace(/ ng /g, ' nx ');
|
|
196
201
|
});
|
|
197
202
|
(0, fileutils_1.writeJsonFile)(packageJsonPath, packageJson);
|
|
203
|
+
(0, format_1.recordInitWrite)(packageJsonPath);
|
|
198
204
|
}
|
|
@@ -8,6 +8,7 @@ const picocolors_1 = require("picocolors");
|
|
|
8
8
|
const error_types_1 = require("../../../project-graph/error-types");
|
|
9
9
|
const workspace_root_1 = require("../../../utils/workspace-root");
|
|
10
10
|
const fileutils_1 = require("../../../utils/fileutils");
|
|
11
|
+
const format_1 = require("./format");
|
|
11
12
|
const output_1 = require("../../../utils/output");
|
|
12
13
|
const project_graph_1 = require("../../../project-graph/project-graph");
|
|
13
14
|
/**
|
|
@@ -131,4 +132,5 @@ function updatePluginsInNxJson(root = workspace_root_1.workspaceRoot, pluginToEx
|
|
|
131
132
|
nxJson.plugins[pluginIndex] = plugin;
|
|
132
133
|
});
|
|
133
134
|
(0, fileutils_1.writeJsonFile)(nxJsonPath, nxJson);
|
|
135
|
+
(0, format_1.recordInitWrite)(nxJsonPath);
|
|
134
136
|
}
|
|
@@ -12,6 +12,7 @@ exports.getBatchScriptContents = getBatchScriptContents;
|
|
|
12
12
|
exports.sanitizeWrapperScript = sanitizeWrapperScript;
|
|
13
13
|
const tslib_1 = require("tslib");
|
|
14
14
|
const child_process_1 = require("child_process");
|
|
15
|
+
const format_1 = require("../format");
|
|
15
16
|
const fs_1 = require("fs");
|
|
16
17
|
const path = tslib_1.__importStar(require("path"));
|
|
17
18
|
const semver_1 = require("semver");
|
|
@@ -101,6 +102,10 @@ function writeMinimalNxJson(host, version) {
|
|
|
101
102
|
version: normalizeVersionForNxJson('nx', version),
|
|
102
103
|
},
|
|
103
104
|
});
|
|
105
|
+
(0, format_1.recordInitWrite)('nx.json');
|
|
106
|
+
// Only this file. The wrapper scripts written by `generateDotNxSetup`
|
|
107
|
+
// above (`.nx/nxw.js`, `nx`, `nx.bat`) are deliberately left out: they are
|
|
108
|
+
// vendored artifacts, and two of them have no formatter at all.
|
|
104
109
|
}
|
|
105
110
|
}
|
|
106
111
|
function updateGitIgnore(host) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Records a file for `formatInitWrites`. Only for files a formatter handles -
|
|
3
|
+
* `.gitignore` and the vendored `.nx` scripts are left out rather than
|
|
4
|
+
* filtered later.
|
|
5
|
+
*
|
|
6
|
+
* Two recording helpers are shared with `nx import`, which drains before each
|
|
7
|
+
* commit amend; draining after one would leave the formatting uncommitted.
|
|
8
|
+
* The drain is a no-op when empty.
|
|
9
|
+
*/
|
|
10
|
+
export declare function recordInitWrite(filePath: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Formats what init just wrote and nothing else: an existing repo's other
|
|
13
|
+
* files are not init's to reformat.
|
|
14
|
+
*
|
|
15
|
+
* Never fatal - the repo is already initialised, so a formatter that cannot
|
|
16
|
+
* run costs a `nx format` the user can run themselves, not their setup.
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatInitWrites(repoRoot: string, command?: string): Promise<void>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.recordInitWrite = recordInitWrite;
|
|
4
|
+
exports.formatInitWrites = formatInitWrites;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const path = tslib_1.__importStar(require("node:path"));
|
|
8
|
+
const chunkify_1 = require("../../../utils/chunkify");
|
|
9
|
+
const formatters_1 = require("../../../utils/formatters");
|
|
10
|
+
const oxfmt_1 = require("../../../utils/formatters/oxfmt");
|
|
11
|
+
const prettier_1 = require("../../../utils/formatters/prettier");
|
|
12
|
+
const output_1 = require("../../../utils/output");
|
|
13
|
+
/**
|
|
14
|
+
* Paths `nx init` has created or modified.
|
|
15
|
+
*
|
|
16
|
+
* Module state because init's flows write from many call sites across
|
|
17
|
+
* several files, a number behind early returns; the alternative is threading
|
|
18
|
+
* a collector through every one.
|
|
19
|
+
*/
|
|
20
|
+
const writtenFiles = new Set();
|
|
21
|
+
/**
|
|
22
|
+
* Records a file for `formatInitWrites`. Only for files a formatter handles -
|
|
23
|
+
* `.gitignore` and the vendored `.nx` scripts are left out rather than
|
|
24
|
+
* filtered later.
|
|
25
|
+
*
|
|
26
|
+
* Two recording helpers are shared with `nx import`, which drains before each
|
|
27
|
+
* commit amend; draining after one would leave the formatting uncommitted.
|
|
28
|
+
* The drain is a no-op when empty.
|
|
29
|
+
*/
|
|
30
|
+
function recordInitWrite(filePath) {
|
|
31
|
+
writtenFiles.add(filePath);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Formats what init just wrote and nothing else: an existing repo's other
|
|
35
|
+
* files are not init's to reformat.
|
|
36
|
+
*
|
|
37
|
+
* Never fatal - the repo is already initialised, so a formatter that cannot
|
|
38
|
+
* run costs a `nx format` the user can run themselves, not their setup.
|
|
39
|
+
*/
|
|
40
|
+
async function formatInitWrites(repoRoot,
|
|
41
|
+
// `nx import` drains this set too, and a user who never ran `nx init` should
|
|
42
|
+
// not be told `nx init` failed.
|
|
43
|
+
command = 'nx init') {
|
|
44
|
+
const recorded = [...writtenFiles];
|
|
45
|
+
// Cleared unconditionally: a second init in the same process must not
|
|
46
|
+
// reformat the first one's files.
|
|
47
|
+
writtenFiles.clear();
|
|
48
|
+
if (process.env.NX_SKIP_FORMAT === 'true' || recorded.length === 0) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Repo-relative with `repoRoot` as cwd, so paths stay short and resolve
|
|
52
|
+
// against the repo. That also pins oxfmt's `.editorconfig` lookup, which it
|
|
53
|
+
// does once from the working directory; it does not pin config discovery.
|
|
54
|
+
//
|
|
55
|
+
// De-duplicated *after* normalising: the same file is routinely recorded
|
|
56
|
+
// both as `'nx.json'` and as `join(repoRoot, 'nx.json')`, which are two Set
|
|
57
|
+
// keys for one file.
|
|
58
|
+
const files = [
|
|
59
|
+
...new Set(recorded.map((file) => path
|
|
60
|
+
.relative(repoRoot, path.resolve(repoRoot, file))
|
|
61
|
+
.split(path.sep)
|
|
62
|
+
.join('/'))),
|
|
63
|
+
].filter((file) => file &&
|
|
64
|
+
!file.startsWith('../') &&
|
|
65
|
+
!path.isAbsolute(file) &&
|
|
66
|
+
(0, node_fs_1.existsSync)(path.join(repoRoot, file)));
|
|
67
|
+
if (files.length === 0) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// `detectFormatter` reads package.json, so it belongs inside the try - a
|
|
71
|
+
// workspace whose package.json cannot be parsed must not fail an init that
|
|
72
|
+
// already finished.
|
|
73
|
+
//
|
|
74
|
+
// Chunked as `nx format` chunks: the Angular flow records a `project.json`
|
|
75
|
+
// per project. The prettier path is sized against its quoted length; oxfmt
|
|
76
|
+
// goes through execFile and gets raw paths.
|
|
77
|
+
let formatter = null;
|
|
78
|
+
try {
|
|
79
|
+
formatter = (0, formatters_1.detectFormatter)(repoRoot);
|
|
80
|
+
if (!formatter) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (formatter === 'oxfmt') {
|
|
84
|
+
for (const chunk of (0, chunkify_1.chunkify)(files)) {
|
|
85
|
+
if (chunk.length) {
|
|
86
|
+
(0, oxfmt_1.writeWithOxfmt)(chunk, repoRoot);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// oxfmt needs no equivalent filter - it silently skips file types it
|
|
92
|
+
// does not handle and exits 0. prettier still formats the rest of the
|
|
93
|
+
// batch, but exits 2 on one unsupported file, which would end a
|
|
94
|
+
// successful init with a spurious warning and prettier's own stderr.
|
|
95
|
+
const supported = await (0, prettier_1.filterToPrettierSupportedFiles)(files);
|
|
96
|
+
for (const chunk of (0, chunkify_1.chunkify)(supported, undefined, (pattern) => (0, prettier_1.quoteForShell)(pattern).length)) {
|
|
97
|
+
if (chunk.length) {
|
|
98
|
+
(0, prettier_1.writeWithPrettier)(chunk, repoRoot);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
output_1.output.warn({
|
|
105
|
+
title: formatter
|
|
106
|
+
? `Could not format the files ${command} wrote with ${formatter}.`
|
|
107
|
+
: `Could not work out which formatter to use for the files ${command} wrote.`,
|
|
108
|
+
bodyLines: [
|
|
109
|
+
...(e?.message ? [e.message] : []),
|
|
110
|
+
'Run "nx format:write" to format them.',
|
|
111
|
+
],
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -26,6 +26,7 @@ const acknowledge_build_scripts_1 = require("../../../utils/acknowledge-build-sc
|
|
|
26
26
|
const path_2 = require("../../../utils/path");
|
|
27
27
|
const versions_1 = require("../../../utils/versions");
|
|
28
28
|
const fs_1 = require("fs");
|
|
29
|
+
const format_1 = require("./format");
|
|
29
30
|
const connect_to_nx_cloud_1 = require("../../../nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud");
|
|
30
31
|
const connect_to_nx_cloud_2 = require("../../nx-cloud/connect/connect-to-nx-cloud");
|
|
31
32
|
const deduce_default_base_1 = require("./deduce-default-base");
|
|
@@ -71,6 +72,7 @@ function createNxJsonFile(repoRoot, topologicalTargets, cacheableOperations, scr
|
|
|
71
72
|
nxJson.defaultBase ??= defaultBase;
|
|
72
73
|
}
|
|
73
74
|
(0, fileutils_1.writeJsonFile)(nxJsonPath, nxJson);
|
|
75
|
+
(0, format_1.recordInitWrite)(nxJsonPath);
|
|
74
76
|
}
|
|
75
77
|
/**
|
|
76
78
|
* Locate-by-target upsert against an in-memory `targetDefaults` map. Merges
|
|
@@ -194,14 +196,6 @@ function createNxJsonFromTurboJson(turboJson) {
|
|
|
194
196
|
nxJson.targetDefaults = targetDefaults;
|
|
195
197
|
}
|
|
196
198
|
}
|
|
197
|
-
/**
|
|
198
|
-
* The fact that cacheDir was in use suggests the user had a reason for deviating from the default.
|
|
199
|
-
* We can't know what that reason was, nor if it would still be applicable in Nx, but we can at least
|
|
200
|
-
* improve discoverability of the relevant Nx option by explicitly including it with its default value.
|
|
201
|
-
*/
|
|
202
|
-
if (turboJson.cacheDir) {
|
|
203
|
-
nxJson.cacheDirectory = '.nx/cache';
|
|
204
|
-
}
|
|
205
199
|
const defaultBase = (0, deduce_default_base_1.deduceDefaultBase)();
|
|
206
200
|
// Do not add defaultBase if it is inferred to be the Nx default value of main
|
|
207
201
|
if (defaultBase !== 'main') {
|
|
@@ -221,6 +215,7 @@ function addDepsToPackageJson(repoRoot, packageManager, additionalPackages) {
|
|
|
221
215
|
}
|
|
222
216
|
}
|
|
223
217
|
(0, fileutils_1.writeJsonFile)(path, json);
|
|
218
|
+
(0, format_1.recordInitWrite)(path);
|
|
224
219
|
// nx has a postinstall script, which pnpm 11+ refuses to install
|
|
225
220
|
// unacknowledged.
|
|
226
221
|
(0, acknowledge_build_scripts_1.acknowledgeBuildScripts)(repoRoot, packageManager, { nx: true });
|
|
@@ -351,6 +346,7 @@ function setNeverConnectToCloud(repoRoot) {
|
|
|
351
346
|
const nxJson = (0, fileutils_1.readJsonFile)(nxJsonPath);
|
|
352
347
|
nxJson.neverConnectToCloud = true;
|
|
353
348
|
(0, fileutils_1.writeJsonFile)(nxJsonPath, nxJson);
|
|
349
|
+
(0, format_1.recordInitWrite)(nxJsonPath);
|
|
354
350
|
}
|
|
355
351
|
function addVsCodeRecommendedExtensions(repoRoot, extensions) {
|
|
356
352
|
const vsCodeExtensionsPath = (0, path_1.join)(repoRoot, '.vscode/extensions.json');
|
|
@@ -363,9 +359,11 @@ function addVsCodeRecommendedExtensions(repoRoot, extensions) {
|
|
|
363
359
|
}
|
|
364
360
|
});
|
|
365
361
|
(0, fileutils_1.writeJsonFile)(vsCodeExtensionsPath, vsCodeExtensionsJson);
|
|
362
|
+
(0, format_1.recordInitWrite)(vsCodeExtensionsPath);
|
|
366
363
|
}
|
|
367
364
|
else {
|
|
368
365
|
(0, fileutils_1.writeJsonFile)(vsCodeExtensionsPath, { recommendations: extensions });
|
|
366
|
+
(0, format_1.recordInitWrite)(vsCodeExtensionsPath);
|
|
369
367
|
}
|
|
370
368
|
}
|
|
371
369
|
function markRootPackageJsonAsNxProjectLegacy(repoRoot, cacheableScripts, pmc) {
|
|
@@ -386,6 +384,7 @@ function markRootPackageJsonAsNxProjectLegacy(repoRoot, cacheableScripts, pmc) {
|
|
|
386
384
|
}
|
|
387
385
|
}
|
|
388
386
|
(0, fileutils_1.writeJsonFile)(`package.json`, json);
|
|
387
|
+
(0, format_1.recordInitWrite)('package.json');
|
|
389
388
|
}
|
|
390
389
|
function markPackageJsonAsNxProject(packageJsonPath) {
|
|
391
390
|
const json = (0, fileutils_1.readJsonFile)(packageJsonPath);
|
|
@@ -394,6 +393,7 @@ function markPackageJsonAsNxProject(packageJsonPath) {
|
|
|
394
393
|
}
|
|
395
394
|
json.nx = {};
|
|
396
395
|
(0, fileutils_1.writeJsonFile)(packageJsonPath, json);
|
|
396
|
+
(0, format_1.recordInitWrite)(packageJsonPath);
|
|
397
397
|
}
|
|
398
398
|
function printFinalMessage({ learnMoreLink, appendLines, }) {
|
|
399
399
|
output_1.output.success({
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.initHandler = initHandler;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
|
-
const
|
|
5
|
+
const prompt_helpers_1 = require("../../utils/prompt-helpers");
|
|
6
6
|
const fs_1 = require("fs");
|
|
7
7
|
const semver_1 = require("semver");
|
|
8
8
|
const add_nx_to_monorepo_1 = require("./implementation/add-nx-to-monorepo");
|
|
@@ -14,6 +14,7 @@ const child_process_2 = require("../../utils/child-process");
|
|
|
14
14
|
const fileutils_1 = require("../../utils/fileutils");
|
|
15
15
|
const versions_1 = require("../../utils/versions");
|
|
16
16
|
const utils_1 = require("./implementation/utils");
|
|
17
|
+
const format_1 = require("./implementation/format");
|
|
17
18
|
async function initHandler(options) {
|
|
18
19
|
// strip the 'init' command itself so we don't forward it
|
|
19
20
|
const args = process.argv.slice(3).join(' ');
|
|
@@ -23,11 +24,13 @@ async function initHandler(options) {
|
|
|
23
24
|
}
|
|
24
25
|
if (options.useDotNxInstallation === true) {
|
|
25
26
|
setupDotNxInstallation(version);
|
|
27
|
+
await (0, format_1.formatInitWrites)(process.cwd());
|
|
26
28
|
}
|
|
27
29
|
else if ((0, fs_1.existsSync)('package.json')) {
|
|
28
30
|
const packageJson = (0, fileutils_1.readJsonFile)('package.json');
|
|
29
31
|
if ((0, fs_1.existsSync)('angular.json')) {
|
|
30
32
|
await (0, angular_1.addNxToAngularCliRepo)(options);
|
|
33
|
+
await (0, format_1.formatInitWrites)(process.cwd());
|
|
31
34
|
(0, utils_1.printFinalMessage)({
|
|
32
35
|
learnMoreLink: 'https://nx.dev/recipes/angular/migration/angular',
|
|
33
36
|
});
|
|
@@ -35,6 +38,7 @@ async function initHandler(options) {
|
|
|
35
38
|
}
|
|
36
39
|
else if (isNestCLI(packageJson)) {
|
|
37
40
|
await (0, add_nx_to_nest_1.addNxToNest)(options, packageJson);
|
|
41
|
+
await (0, format_1.formatInitWrites)(process.cwd());
|
|
38
42
|
(0, utils_1.printFinalMessage)({
|
|
39
43
|
learnMoreLink: 'https://nx.dev/recipes/adopting-nx/adding-to-monorepo',
|
|
40
44
|
});
|
|
@@ -42,37 +46,30 @@ async function initHandler(options) {
|
|
|
42
46
|
}
|
|
43
47
|
else if ((0, utils_1.isMonorepo)(packageJson)) {
|
|
44
48
|
await (0, add_nx_to_monorepo_1.addNxToMonorepo)({ ...options, legacy: true });
|
|
49
|
+
await (0, format_1.formatInitWrites)(process.cwd());
|
|
45
50
|
(0, utils_1.printFinalMessage)({
|
|
46
51
|
learnMoreLink: 'https://nx.dev/recipes/adopting-nx/adding-to-monorepo',
|
|
47
52
|
});
|
|
48
53
|
}
|
|
49
54
|
else {
|
|
50
55
|
await (0, add_nx_to_npm_repo_1.addNxToNpmRepo)({ ...options, legacy: true });
|
|
56
|
+
await (0, format_1.formatInitWrites)(process.cwd());
|
|
51
57
|
(0, utils_1.printFinalMessage)({
|
|
52
58
|
learnMoreLink: 'https://nx.dev/recipes/adopting-nx/adding-to-existing-project',
|
|
53
59
|
});
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
else {
|
|
57
|
-
const useDotNxFolder = await (0,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
name: 'In a new folder under this directory',
|
|
65
|
-
value: 'false',
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: 'In this directory',
|
|
69
|
-
value: 'true',
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
},
|
|
73
|
-
]).then((r) => r.useDotNxFolder === 'true');
|
|
63
|
+
const useDotNxFolder = (await (0, prompt_helpers_1.selectPrompt)({
|
|
64
|
+
message: 'Where should your workspace be created?',
|
|
65
|
+
choices: [
|
|
66
|
+
{ value: 'false', label: 'In a new folder under this directory' },
|
|
67
|
+
{ value: 'true', label: 'In this directory' },
|
|
68
|
+
],
|
|
69
|
+
})) === 'true';
|
|
74
70
|
if (useDotNxFolder) {
|
|
75
71
|
setupDotNxInstallation(version);
|
|
72
|
+
await (0, format_1.formatInitWrites)(process.cwd());
|
|
76
73
|
}
|
|
77
74
|
else {
|
|
78
75
|
(0, child_process_1.execSync)(`npx --yes create-nx-workspace@${version} ${args}`, {
|