@nx/js 19.7.0-beta.2 → 19.7.0-beta.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/js",
3
- "version": "19.7.0-beta.2",
3
+ "version": "19.7.0-beta.4",
4
4
  "private": false,
5
5
  "description": "The JS plugin for Nx contains executors and generators that provide the best experience for developing JavaScript and TypeScript projects. ",
6
6
  "repository": {
@@ -39,8 +39,8 @@
39
39
  "@babel/preset-env": "^7.23.2",
40
40
  "@babel/preset-typescript": "^7.22.5",
41
41
  "@babel/runtime": "^7.22.6",
42
- "@nx/devkit": "19.7.0-beta.2",
43
- "@nx/workspace": "19.7.0-beta.2",
42
+ "@nx/devkit": "19.7.0-beta.4",
43
+ "@nx/workspace": "19.7.0-beta.4",
44
44
  "babel-plugin-const-enum": "^1.0.1",
45
45
  "babel-plugin-macros": "^2.8.0",
46
46
  "babel-plugin-transform-typescript-metadata": "^0.3.1",
@@ -61,7 +61,7 @@
61
61
  "ts-node": "10.9.1",
62
62
  "tsconfig-paths": "^4.1.2",
63
63
  "tslib": "^2.3.0",
64
- "@nrwl/js": "19.7.0-beta.2"
64
+ "@nrwl/js": "19.7.0-beta.4"
65
65
  },
66
66
  "peerDependencies": {
67
67
  "verdaccio": "^5.0.4"
@@ -204,8 +204,10 @@ async function* nodeExecutor(options, context) {
204
204
  devkit_1.logger.error(`Watch error: ${err?.message ?? 'Unknown'}`);
205
205
  }
206
206
  else {
207
- devkit_1.logger.info(`NX File change detected. Restarting...`);
208
- await runBuild();
207
+ if (options.watch) {
208
+ devkit_1.logger.info(`NX File change detected. Restarting...`);
209
+ await runBuild();
210
+ }
209
211
  }
210
212
  });
211
213
  }
@@ -163,6 +163,9 @@ async function runExecutor(options, context) {
163
163
  if (options.otp) {
164
164
  npmPublishCommandSegments.push(`--otp=${options.otp}`);
165
165
  }
166
+ if (options.access) {
167
+ npmPublishCommandSegments.push(`--access=${options.access}`);
168
+ }
166
169
  if (isDryRun) {
167
170
  npmPublishCommandSegments.push(`--dry-run`);
168
171
  }
@@ -4,5 +4,6 @@ export interface PublishExecutorSchema {
4
4
  tag?: string;
5
5
  otp?: number;
6
6
  dryRun?: boolean;
7
+ access?: 'public' | 'restricted';
7
8
  firstRelease?: boolean;
8
9
  }
@@ -17,6 +17,11 @@
17
17
  "type": "string",
18
18
  "description": "The distribution tag to apply to the published package."
19
19
  },
20
+ "access": {
21
+ "type": "string",
22
+ "enum": ["public", "restricted"],
23
+ "description": "Overrides the access level of the published package. Unscoped packages cannot be set to restricted. See the npm publish documentation for more information."
24
+ },
20
25
  "dryRun": {
21
26
  "type": "boolean",
22
27
  "description": "Whether to run the command without actually publishing the package to the registry."
@@ -468,6 +468,21 @@ To fix this you will either need to add a package.json file at that location, or
468
468
  // Auto (i.e.infer existing) by default
469
469
  let versionPrefix = options.versionPrefix ?? 'auto';
470
470
  const currentDependencyVersion = json[dependentProject.dependencyCollection][dependencyPackageName];
471
+ // Depending on the package manager, locally linked packages could reference packages with `"private": true` and no version field at all
472
+ const currentPackageVersion = json.version ?? null;
473
+ if (!currentPackageVersion &&
474
+ isLocallyLinkedPackageVersion(currentDependencyVersion)) {
475
+ if (forceVersionBump) {
476
+ // Look up any dependent projects from the transitiveLocalPackageDependents list
477
+ const transitiveDependentProjects = transitiveLocalPackageDependents.filter((localPackageDependency) => localPackageDependency.target === dependentProject.source);
478
+ versionData[dependentProject.source] = {
479
+ currentVersion: currentPackageVersion,
480
+ newVersion: currentDependencyVersion,
481
+ dependentProjects: transitiveDependentProjects,
482
+ };
483
+ }
484
+ return json;
485
+ }
471
486
  // For auto, we infer the prefix based on the current version of the dependent
472
487
  if (versionPrefix === 'auto') {
473
488
  versionPrefix = ''; // we don't want to end up printing auto
@@ -487,7 +502,6 @@ To fix this you will either need to add a package.json file at that location, or
487
502
  newDepVersion;
488
503
  // Bump the dependent's version if applicable and record it in the version data
489
504
  if (forceVersionBump) {
490
- const currentPackageVersion = json.version;
491
505
  const newPackageVersion = (0, version_1.deriveNewSemverVersion)(currentPackageVersion, forceVersionBump, options.preid);
492
506
  json.version = newPackageVersion;
493
507
  // Look up any dependent projects from the transitiveLocalPackageDependents list
@@ -655,3 +669,33 @@ class ProjectLogger {
655
669
  });
656
670
  }
657
671
  }
672
+ let pm;
673
+ let pmVersion;
674
+ const localPackageProtocols = [
675
+ 'file:', // all package managers
676
+ 'workspace:', // not npm
677
+ 'portal:', // modern yarn only
678
+ ];
679
+ function isLocallyLinkedPackageVersion(version) {
680
+ // Not using a supported local protocol
681
+ if (!localPackageProtocols.some((protocol) => version.startsWith(protocol))) {
682
+ return false;
683
+ }
684
+ // Supported by all package managers
685
+ if (version.startsWith('file:')) {
686
+ return true;
687
+ }
688
+ // Determine specific package manager in use
689
+ if (!pm) {
690
+ pm = (0, devkit_1.detectPackageManager)();
691
+ pmVersion = (0, devkit_1.getPackageManagerVersion)(pm);
692
+ }
693
+ if (pm === 'npm' && version.startsWith('workspace:')) {
694
+ throw new Error(`The "workspace:" protocol is not yet supported by npm (https://github.com/npm/rfcs/issues/765). Please ensure you have a valid setup according to your package manager before attempting to release packages.`);
695
+ }
696
+ if (version.startsWith('portal:') &&
697
+ (pm !== 'yarn' || (0, semver_2.lt)(pmVersion, '2.0.0'))) {
698
+ throw new Error(`The "portal:" protocol is only supported by yarn@2.0.0 and above. Please ensure you have a valid setup according to your package manager before attempting to release packages.`);
699
+ }
700
+ return true;
701
+ }