@nx/js 23.2.0-beta.1 → 23.2.0-beta.11
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 +2 -2
- package/dist/internal.d.ts +9 -3
- package/dist/internal.js +28 -17
- package/dist/src/executors/copy-workspace-modules/copy-workspace-modules.js +122 -21
- package/dist/src/executors/node/lib/output-file.js +4 -4
- package/dist/src/executors/node/node.impl.js +9 -10
- package/dist/src/executors/prune-lockfile/prune-lockfile.d.ts +1 -1
- package/dist/src/executors/prune-lockfile/prune-lockfile.js +40 -33
- package/dist/src/executors/tsc/lib/batch/watch.js +3 -3
- package/dist/src/executors/tsc/lib/typescript-compilation.js +1 -1
- package/dist/src/executors/tsc/tsc.batch-impl.d.ts +1 -1
- package/dist/src/executors/tsc/tsc.batch-impl.js +2 -2
- package/dist/src/executors/verdaccio/verdaccio.impl.js +8 -1
- package/dist/src/generators/init/init.js +32 -15
- package/dist/src/generators/init/schema.d.ts +1 -1
- package/dist/src/generators/init/schema.json +1 -1
- package/dist/src/generators/library/library.d.ts +1 -1
- package/dist/src/generators/library/library.js +34 -20
- package/dist/src/generators/library/schema.d.ts +12 -5
- package/dist/src/generators/library/schema.json +15 -4
- package/dist/src/generators/library/utils/add-release-config.js +2 -2
- package/dist/src/generators/setup-build/generator.js +2 -7
- package/dist/src/generators/typescript-sync/typescript-sync.d.ts +1 -1
- package/dist/src/generators/typescript-sync/typescript-sync.js +2 -2
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.js +8 -8
- package/dist/src/migrations/update-23-1-0/add-ignore-deprecations-for-ts6.d.ts +3 -2
- package/dist/src/migrations/update-23-1-0/add-ignore-deprecations-for-ts6.js +17 -11
- package/dist/src/migrations/update-23-2-0/add-pnpm-deploy-output-cache-inputs.d.ts +14 -0
- package/dist/src/migrations/update-23-2-0/add-pnpm-deploy-output-cache-inputs.js +242 -0
- package/dist/src/migrations/update-23-2-0/add-pnpm-deploy-output-cache-inputs.md +64 -0
- package/dist/src/migrations/update-23-2-0/add-pnpm-prune-lockfile-cache-config.d.ts +2 -0
- package/dist/src/migrations/update-23-2-0/add-pnpm-prune-lockfile-cache-config.js +305 -0
- package/dist/src/migrations/update-23-2-0/add-pnpm-prune-lockfile-cache-config.md +59 -0
- package/dist/src/plugins/typescript/plugin.js +9 -14
- package/dist/src/plugins/typescript/util.d.ts +1 -1
- package/dist/src/release/utils/update-lock-file.js +47 -8
- package/dist/src/release/version-actions.d.ts +12 -3
- package/dist/src/release/version-actions.js +236 -76
- package/dist/src/utils/add-linting-to-project.d.ts +46 -0
- package/dist/src/utils/add-linting-to-project.js +112 -0
- package/dist/src/utils/assets/copy-assets-handler.d.ts +1 -1
- package/dist/src/utils/assets/copy-assets-handler.js +2 -2
- package/dist/src/utils/buildable-libs-utils.js +10 -13
- package/dist/src/utils/find-npm-dependencies.js +7 -10
- package/dist/src/utils/formatter-setup.d.ts +26 -0
- package/dist/src/utils/formatter-setup.js +43 -0
- package/dist/src/utils/generate-globs.js +11 -14
- package/dist/src/utils/generator-prompts.d.ts +2 -1
- package/dist/src/utils/generator-prompts.js +23 -22
- package/dist/src/utils/get-main-file-dir.js +2 -2
- package/dist/src/utils/linter.d.ts +30 -0
- package/dist/src/utils/linter.js +43 -0
- package/dist/src/utils/npm-config.d.ts +1 -1
- package/dist/src/utils/nx-formatter-internals.d.ts +8 -0
- package/dist/src/utils/nx-formatter-internals.js +18 -0
- package/dist/src/utils/oxfmt.d.ts +4 -0
- package/dist/src/utils/oxfmt.js +35 -0
- package/dist/src/utils/package-json/update-package-json.d.ts +1 -1
- package/dist/src/utils/package-json/update-package-json.js +11 -22
- package/dist/src/utils/package-manager-workspaces.js +2 -2
- package/dist/src/utils/pnpm-deploy-output-cache-inputs.d.ts +29 -0
- package/dist/src/utils/pnpm-deploy-output-cache-inputs.js +177 -0
- package/dist/src/utils/pnpm-install-settings-inputs.d.ts +45 -0
- package/dist/src/utils/pnpm-install-settings-inputs.js +77 -0
- package/dist/src/utils/prettier.js +14 -33
- package/dist/src/utils/schema.d.ts +1 -2
- package/dist/src/utils/target-defaults-matching.d.ts +57 -0
- package/dist/src/utils/target-defaults-matching.js +126 -0
- package/dist/src/utils/typescript/configuration.js +3 -5
- package/dist/src/utils/typescript/create-ts-config.d.ts +1 -1
- package/dist/src/utils/typescript/create-ts-config.js +5 -5
- package/dist/src/utils/typescript/plugin.js +2 -2
- package/dist/src/utils/typescript/run-type-check.js +2 -2
- package/dist/src/utils/typescript/ts-config.d.ts +51 -1
- package/dist/src/utils/typescript/ts-config.js +114 -0
- package/dist/src/utils/typescript/ts-solution-setup.d.ts +1 -1
- package/dist/src/utils/typescript/ts-solution-setup.js +3 -3
- package/dist/src/utils/versions.d.ts +1 -0
- package/dist/src/utils/versions.js +2 -1
- package/dist/src/utils/watch-for-single-file-changes.js +2 -2
- package/dist/src/utils/workspace-module-sections.d.ts +16 -0
- package/dist/src/utils/workspace-module-sections.js +24 -0
- package/migrations.json +13 -1
- package/package.json +12 -5
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#### Update the cache configuration of `@nx/js:prune-lockfile` targets for the pnpm install artifacts
|
|
2
|
+
|
|
3
|
+
In a pnpm workspace, the `@nx/js:prune-lockfile` executor emits more than the pruned `package.json` and `pnpm-lock.yaml`: a settings-only `pnpm-workspace.yaml`, the `.patch` files of a `pnpm patch` workspace under `patches/`, and non-workspace local-path dependencies (`file:` tarballs and directories, `link:` targets) under `local_path_modules/`. On pnpm 11 and above that workspace file is where the build-script approvals and `supportedArchitectures` live; on pnpm 10 and below they go into the emitted `package.json` and the file ships carrying only an empty `packages` list.
|
|
4
|
+
|
|
5
|
+
Targets generated before this change declare only the manifest and the lockfile in `outputs`, so a cache replay in a clean checkout restores just those two files. The missing `patches/` and `local_path_modules/` break the deploy install loudly. On pnpm 11 and above a missing `pnpm-workspace.yaml` is worse than loud: it silently drops the build-script approvals, and the deployed app's native dependencies never run their build scripts.
|
|
6
|
+
|
|
7
|
+
Those artifacts are built from pnpm settings the workspace root declares. The build approvals and `supportedArchitectures` among them are recorded nowhere in the lockfile, so nothing else in the task hash moves when they change, and the same targets declare no `inputs` at all. Revoking a build approval would replay the previous run's artifact from cache and ship an output that still grants it.
|
|
8
|
+
|
|
9
|
+
The three artifact paths are appended to whichever `outputs` array declares the `pnpm-lock.yaml` entry, reusing that entry's own path prefix. That covers a target's own `outputs` and the `targetDefaults` entries applying to prune-lockfile targets: entries keyed by the executor, declaring or filtering on it, and entries under a target-name or glob key that resolves to one of them. Configurations without `outputs`, configurations whose lockfile entry is not pnpm's, and paths already present are left untouched.
|
|
10
|
+
|
|
11
|
+
The two root sources, plus a `runtime` input probing the pnpm major (which decides whether the settings land in the emitted `pnpm-workspace.yaml` or the emitted `package.json` when the root manifest has no `packageManager` field; it is added even when the field currently pins a pnpm version, because the migration runs once and the pin can be removed later), go somewhere else, because a target's own `inputs` array replaces the defaults' rather than merging with it. Each target is classified by its merged `outputs`, so inheriting or spreading the lockfile entry still counts, and the sources are added once: to the target's own `inputs` when it declares them, and otherwise to the `targetDefaults` entry supplying the array it inherits. A target inheriting nothing gets nx's own default spelled out first, so nothing that was hashed stops being hashed. A source the target already hashes is left alone. A workspace with no prune-lockfile target at all, configuring them purely through `targetDefaults`, has the sources added to every compatible entry under the key that declares its own `inputs` (each can be the array a future target inherits, and a sibling's array covers nothing); when no filter-less entry declares any, the spelled-out default is prepended as a new entry, under a name or glob key pinned to the executor so same-name targets of other executors do not inherit it. The fallback is only authored where it cannot change which key a target resolves: under the executor key when a compatible filter-less entry already exists, and under a name or glob key when a compatible filter-less entry already pins the executor. Any other key gets no fallback, whether its compatible entries are all filtered or its filter-less entries do not pin the executor, because a new entry would make that key win selection for targets that previously resolved their defaults elsewhere.
|
|
12
|
+
|
|
13
|
+
The migration only ever appends to an array that already exists or writes that spelled-out default; it never authors a `"..."` of its own. Whether a spread finds anything to expand against depends on the identity resets in nx's own document-order merge, and one that finds nothing would leave the target hashing only the two root files.
|
|
14
|
+
|
|
15
|
+
#### Sample code changes
|
|
16
|
+
|
|
17
|
+
##### Before
|
|
18
|
+
|
|
19
|
+
```json title="apps/app1/project.json"
|
|
20
|
+
{
|
|
21
|
+
"targets": {
|
|
22
|
+
"prune-lockfile": {
|
|
23
|
+
"executor": "@nx/js:prune-lockfile",
|
|
24
|
+
"outputs": [
|
|
25
|
+
"{workspaceRoot}/dist/apps/app1/package.json",
|
|
26
|
+
"{workspaceRoot}/dist/apps/app1/pnpm-lock.yaml"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
##### After
|
|
34
|
+
|
|
35
|
+
```json title="apps/app1/project.json"
|
|
36
|
+
{
|
|
37
|
+
"targets": {
|
|
38
|
+
"prune-lockfile": {
|
|
39
|
+
"executor": "@nx/js:prune-lockfile",
|
|
40
|
+
"inputs": [
|
|
41
|
+
"default",
|
|
42
|
+
"^default",
|
|
43
|
+
"{workspaceRoot}/pnpm-workspace.yaml",
|
|
44
|
+
"{workspaceRoot}/package.json",
|
|
45
|
+
{
|
|
46
|
+
"runtime": "node -e \"try{console.log('pnpm major '+require('child_process').execSync('pnpm --version',{stdio:['ignore','pipe','ignore']}).toString().trim().split('.')[0])}catch{console.log('pnpm major unavailable')}\""
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"outputs": [
|
|
50
|
+
"{workspaceRoot}/dist/apps/app1/package.json",
|
|
51
|
+
"{workspaceRoot}/dist/apps/app1/pnpm-lock.yaml",
|
|
52
|
+
"{workspaceRoot}/dist/apps/app1/pnpm-workspace.yaml",
|
|
53
|
+
"{workspaceRoot}/dist/apps/app1/patches",
|
|
54
|
+
"{workspaceRoot}/dist/apps/app1/local_path_modules"
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
@@ -5,12 +5,7 @@ const internal_1 = require("@nx/devkit/internal");
|
|
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
|
6
6
|
const node_fs_1 = require("node:fs");
|
|
7
7
|
const node_path_1 = require("node:path");
|
|
8
|
-
const file_hasher_1 = require("nx/src/hasher/file-hasher");
|
|
9
8
|
const picomatch = require("picomatch");
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
|
|
11
|
-
const lock_file_1 = require("nx/src/plugins/js/lock-file/lock-file");
|
|
12
|
-
const cache_directory_1 = require("nx/src/utils/cache-directory");
|
|
13
|
-
const installation_directory_1 = require("nx/src/utils/installation-directory");
|
|
14
9
|
const util_1 = require("./util");
|
|
15
10
|
let ts;
|
|
16
11
|
const resolvedTypescriptPaths = {};
|
|
@@ -20,12 +15,12 @@ function resolveTypescriptPath(projectRoot, workspaceRoot) {
|
|
|
20
15
|
// path is outside the workspace tree (e.g. pnpm's enableGlobalVirtualStore),
|
|
21
16
|
// since typescript is not a declared dep.
|
|
22
17
|
resolvedTypescriptPaths[projectRoot] ??= require.resolve('typescript', {
|
|
23
|
-
paths: [projectRoot, ...(0,
|
|
18
|
+
paths: [projectRoot, ...(0, internal_1.getNxRequirePaths)(workspaceRoot), __dirname],
|
|
24
19
|
});
|
|
25
20
|
return resolvedTypescriptPaths[projectRoot];
|
|
26
21
|
}
|
|
27
22
|
const TSCONFIG_CACHE_VERSION = 2;
|
|
28
|
-
const TS_CONFIG_CACHE_PATH = (0, node_path_1.join)(
|
|
23
|
+
const TS_CONFIG_CACHE_PATH = (0, node_path_1.join)(internal_1.workspaceDataDirectory, 'tsconfig-files.hash');
|
|
29
24
|
// Module-level cache store — each invocation gets a unique Symbol key
|
|
30
25
|
const cacheStore = new Map();
|
|
31
26
|
// Shared tsconfig cache — initialized once per batch, persisted to disk
|
|
@@ -117,8 +112,8 @@ const tsConfigGlob = '**/tsconfig*.json';
|
|
|
117
112
|
exports.createNodesV2 = [
|
|
118
113
|
tsConfigGlob,
|
|
119
114
|
async (configFilePaths, options, context) => {
|
|
120
|
-
const optionsHash = (0,
|
|
121
|
-
const targetsCachePath = (0, node_path_1.join)(
|
|
115
|
+
const optionsHash = (0, internal_1.hashObject)(options);
|
|
116
|
+
const targetsCachePath = (0, node_path_1.join)(internal_1.workspaceDataDirectory, `tsc-${optionsHash}.hash`);
|
|
122
117
|
const targetsCache = readFromCache(targetsCachePath);
|
|
123
118
|
// Each invocation gets a unique Symbol key — guaranteed no collisions
|
|
124
119
|
const cacheKey = Symbol('tsc-invocation');
|
|
@@ -136,7 +131,7 @@ exports.createNodesV2 = [
|
|
|
136
131
|
const normalizedOptions = normalizePluginOptions(options);
|
|
137
132
|
const packageManager = (0, devkit_1.detectPackageManager)(context.workspaceRoot);
|
|
138
133
|
const pmc = (0, devkit_1.getPackageManagerCommand)(packageManager);
|
|
139
|
-
const lockFileName = (0,
|
|
134
|
+
const lockFileName = (0, internal_1.getLockFileName)(packageManager);
|
|
140
135
|
const { configFilePaths: validConfigFilePaths, hashes, projectRoots, } = await resolveValidConfigFilesAndHashes(configFilePaths, normalizedOptions, optionsHash, context, cache, lockFileName);
|
|
141
136
|
try {
|
|
142
137
|
return await (0, devkit_1.createNodesFromFiles)((configFilePath, options, context, idx) => {
|
|
@@ -171,7 +166,7 @@ exports.createNodesV2 = [
|
|
|
171
166
|
];
|
|
172
167
|
exports.createNodes = exports.createNodesV2;
|
|
173
168
|
async function resolveValidConfigFilesAndHashes(configFilePaths, options, optionsHash, context, cache, lockFileName) {
|
|
174
|
-
const lockFileHash = (0,
|
|
169
|
+
const lockFileHash = (0, internal_1.hashFile)((0, node_path_1.join)(context.workspaceRoot, lockFileName)) ?? '';
|
|
175
170
|
const validConfigFilePaths = [];
|
|
176
171
|
const hashes = [];
|
|
177
172
|
const projectRoots = [];
|
|
@@ -218,7 +213,7 @@ async function getConfigFileHash(configFilePath, workspaceRoot, project, options
|
|
|
218
213
|
packageJson = (0, devkit_1.readJsonFile)((0, node_path_1.join)(workspaceRoot, project.root, 'package.json'));
|
|
219
214
|
}
|
|
220
215
|
catch { }
|
|
221
|
-
return (0,
|
|
216
|
+
return (0, devkit_1.hashArray)([
|
|
222
217
|
...[
|
|
223
218
|
fullConfigPath,
|
|
224
219
|
...extendedConfigFiles.files.sort(),
|
|
@@ -228,7 +223,7 @@ async function getConfigFileHash(configFilePath, workspaceRoot, project, options
|
|
|
228
223
|
...extendedConfigFiles.packages.sort(),
|
|
229
224
|
lockFileHash,
|
|
230
225
|
optionsHash,
|
|
231
|
-
...(packageJson ? [(0,
|
|
226
|
+
...(packageJson ? [(0, internal_1.hashObject)(packageJson)] : []),
|
|
232
227
|
]);
|
|
233
228
|
}
|
|
234
229
|
function checkIfConfigFileShouldBeProject(config, cache) {
|
|
@@ -956,7 +951,7 @@ function getFileHash(filePath, workspaceRoot, cache) {
|
|
|
956
951
|
const relativePath = posixRelative(workspaceRoot, filePath);
|
|
957
952
|
if (!cache.fileHashes[relativePath]) {
|
|
958
953
|
const content = readFile(filePath, workspaceRoot, cache);
|
|
959
|
-
cache.fileHashes[relativePath] = (0,
|
|
954
|
+
cache.fileHashes[relativePath] = (0, devkit_1.hashArray)([content]);
|
|
960
955
|
}
|
|
961
956
|
return cache.fileHashes[relativePath];
|
|
962
957
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type TargetConfiguration } from '@nx/devkit';
|
|
2
|
-
import { type PackageManagerCommands } from 'nx/src/utils/package-manager';
|
|
3
2
|
import { type ParsedCommandLine } from 'typescript';
|
|
3
|
+
import { type PackageManagerCommands } from '@nx/devkit/internal';
|
|
4
4
|
export type ExtendedConfigFile = {
|
|
5
5
|
filePath: string;
|
|
6
6
|
externalPackage?: string;
|
|
@@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.updateLockFile = updateLockFile;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const child_process_1 = require("child_process");
|
|
6
|
-
const
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
|
|
8
|
-
const lock_file_1 = require("nx/src/plugins/js/lock-file/lock-file");
|
|
6
|
+
const internal_1 = require("@nx/devkit/internal");
|
|
9
7
|
const semver_1 = require("semver");
|
|
10
8
|
async function updateLockFile(cwd, { dryRun, verbose, options, }) {
|
|
11
9
|
if (options?.skipLockFileUpdate) {
|
|
@@ -30,10 +28,10 @@ async function updateLockFile(cwd, { dryRun, verbose, options, }) {
|
|
|
30
28
|
}
|
|
31
29
|
return [];
|
|
32
30
|
}
|
|
33
|
-
const isDaemonEnabled =
|
|
31
|
+
const isDaemonEnabled = internal_1.daemonClient.enabled();
|
|
34
32
|
if (!dryRun && isDaemonEnabled) {
|
|
35
33
|
// if not in dry-run temporarily stop the daemon, as it will error if the lock file is updated
|
|
36
|
-
await
|
|
34
|
+
await internal_1.daemonClient.stop();
|
|
37
35
|
}
|
|
38
36
|
const packageManagerCommands = (0, devkit_1.getPackageManagerCommand)(packageManager);
|
|
39
37
|
let installArgs = options?.installArgs || '';
|
|
@@ -48,7 +46,7 @@ async function updateLockFile(cwd, { dryRun, verbose, options, }) {
|
|
|
48
46
|
installArgs = `${installArgs} --ignore-scripts`.trim();
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
|
-
const lockFile = (0,
|
|
49
|
+
const lockFile = (0, internal_1.getLockFileName)(packageManager);
|
|
52
50
|
const command = `${packageManagerCommands.updateLockFile} ${installArgs}`.trim();
|
|
53
51
|
if (verbose) {
|
|
54
52
|
if (dryRun) {
|
|
@@ -62,10 +60,27 @@ async function updateLockFile(cwd, { dryRun, verbose, options, }) {
|
|
|
62
60
|
if (dryRun) {
|
|
63
61
|
return [];
|
|
64
62
|
}
|
|
63
|
+
// Capture modified/untracked files before the lock file update so we can
|
|
64
|
+
// detect everything the package-manager command touches on disk.
|
|
65
|
+
const modifiedBefore = getGitModifiedFiles(cwd);
|
|
65
66
|
execLockFileUpdate(command, cwd, env);
|
|
67
|
+
// Capture again after the command to compute the delta.
|
|
68
|
+
const modifiedAfter = getGitModifiedFiles(cwd);
|
|
69
|
+
const newlyChanged = [...modifiedAfter].filter((f) => !modifiedBefore.has(f));
|
|
70
|
+
// Always include the lock file itself even if git didn't pick it up
|
|
71
|
+
// (e.g. it could be .gitignored in unusual setups).
|
|
72
|
+
if (!newlyChanged.includes(lockFile)) {
|
|
73
|
+
newlyChanged.push(lockFile);
|
|
74
|
+
}
|
|
75
|
+
if (verbose && newlyChanged.length > 1) {
|
|
76
|
+
console.log(`\nDetected additional files changed during lock file update:`);
|
|
77
|
+
newlyChanged
|
|
78
|
+
.filter((f) => f !== lockFile)
|
|
79
|
+
.forEach((f) => console.log(` ${f}`));
|
|
80
|
+
}
|
|
66
81
|
if (isDaemonEnabled) {
|
|
67
82
|
try {
|
|
68
|
-
await
|
|
83
|
+
await internal_1.daemonClient.startInBackground();
|
|
69
84
|
}
|
|
70
85
|
catch (e) {
|
|
71
86
|
// If the daemon fails to start, we don't want to prevent the user from continuing, so we just log the error and move on
|
|
@@ -77,7 +92,31 @@ async function updateLockFile(cwd, { dryRun, verbose, options, }) {
|
|
|
77
92
|
}
|
|
78
93
|
}
|
|
79
94
|
}
|
|
80
|
-
return
|
|
95
|
+
return newlyChanged;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Returns the set of modified, added, and untracked file paths reported by git.
|
|
99
|
+
* Used to detect all filesystem side-effects of the lock file update command.
|
|
100
|
+
*/
|
|
101
|
+
function getGitModifiedFiles(cwd) {
|
|
102
|
+
try {
|
|
103
|
+
// Do not trim the result: porcelain lines for working-tree-only changes
|
|
104
|
+
// start with a leading space (e.g. " M path"), and stripping it would
|
|
105
|
+
// make substring(3) drop the first character of the path on the first line.
|
|
106
|
+
const result = (0, child_process_1.execSync)('git status --porcelain', {
|
|
107
|
+
cwd,
|
|
108
|
+
encoding: 'utf-8',
|
|
109
|
+
windowsHide: true,
|
|
110
|
+
});
|
|
111
|
+
return new Set(result
|
|
112
|
+
.split('\n')
|
|
113
|
+
.filter((l) => l.length >= 4)
|
|
114
|
+
.map((l) => l.substring(3)));
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// git may not be available or this may not be a git repo
|
|
118
|
+
return new Set();
|
|
119
|
+
}
|
|
81
120
|
}
|
|
82
121
|
function execLockFileUpdate(command, cwd, env) {
|
|
83
122
|
try {
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { ProjectGraph, Tree } from '@nx/devkit';
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
2
|
+
import { VersionActions } from 'nx/release';
|
|
3
|
+
import type { ResolveVersionForDependency } from 'nx/release';
|
|
4
|
+
import type { AfterAllProjectsVersioned, NxReleaseVersionConfiguration } from '@nx/devkit/internal';
|
|
4
5
|
export declare const afterAllProjectsVersioned: AfterAllProjectsVersioned;
|
|
5
6
|
export default class JsVersionActions extends VersionActions {
|
|
6
7
|
validManifestFilenames: string[];
|
|
8
|
+
excludeManifestsFromFormatting: boolean;
|
|
7
9
|
readCurrentVersionFromSourceManifest(tree: Tree): Promise<{
|
|
8
10
|
currentVersion: string;
|
|
9
11
|
manifestPath: string;
|
|
@@ -17,6 +19,13 @@ export default class JsVersionActions extends VersionActions {
|
|
|
17
19
|
dependencyCollection: string | null;
|
|
18
20
|
}>;
|
|
19
21
|
updateProjectVersion(tree: Tree, newVersion: string): Promise<string[]>;
|
|
20
|
-
updateProjectDependencies(tree: Tree, projectGraph: ProjectGraph, dependenciesToUpdate: Record<string, string
|
|
22
|
+
updateProjectDependencies(tree: Tree, projectGraph: ProjectGraph, dependenciesToUpdate: Record<string, string>, resolveVersionForDependency?: ResolveVersionForDependency): Promise<string[]>;
|
|
23
|
+
private getLocalDependencyProjectLookup;
|
|
24
|
+
private resolveLocalDependencySpecifier;
|
|
25
|
+
private applyVersionPrefix;
|
|
26
|
+
private updateManifestValues;
|
|
27
|
+
private readAndValidateManifest;
|
|
28
|
+
private validateManifestUpdates;
|
|
29
|
+
private detectFormattingOptions;
|
|
21
30
|
private isLocalDependencyProtocol;
|
|
22
31
|
}
|