@nx/js 19.1.0-beta.0 → 19.1.0-beta.2

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.1.0-beta.0",
3
+ "version": "19.1.0-beta.2",
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": {
@@ -14,9 +14,11 @@
14
14
  "Node",
15
15
  "Swc",
16
16
  "Tsc",
17
- "CLI"
17
+ "CLI",
18
+ "Front-end",
19
+ "Backend"
18
20
  ],
19
- "main": "./src/index.js",
21
+ "main": "src/index.js",
20
22
  "typings": "src/index.d.ts",
21
23
  "license": "MIT",
22
24
  "bugs": {
@@ -56,9 +58,9 @@
56
58
  "semver": "^7.5.3",
57
59
  "source-map-support": "0.5.19",
58
60
  "tslib": "^2.3.0",
59
- "@nx/devkit": "19.1.0-beta.0",
60
- "@nx/workspace": "19.1.0-beta.0",
61
- "@nrwl/js": "19.1.0-beta.0"
61
+ "@nx/devkit": "19.1.0-beta.2",
62
+ "@nx/workspace": "19.1.0-beta.2",
63
+ "@nrwl/js": "19.1.0-beta.2"
62
64
  },
63
65
  "peerDependencies": {
64
66
  "verdaccio": "^5.0.4"
@@ -147,7 +147,7 @@ async function runExecutor(options, context) {
147
147
  console.log('Skipped npm view because --first-release was set');
148
148
  }
149
149
  const npmPublishCommandSegments = [
150
- `npm publish ${packageRoot} --json --"${registryConfigKey}=${registry}" --tag=${tag}`,
150
+ `npm publish "${packageRoot}" --json --"${registryConfigKey}=${registry}" --tag=${tag}`,
151
151
  ];
152
152
  if (options.otp) {
153
153
  npmPublishCommandSegments.push(`--otp=${options.otp}`);
@@ -20,7 +20,7 @@ if (swcJestConfig.swcrc === undefined) {
20
20
 
21
21
  <% if(js) {%>module.exports =<% } else { %>export default<% } %> {
22
22
  displayName: '<%= project %>',
23
- preset: '<%= offsetFromRoot %>jest.preset.js',
23
+ preset: '<%= offsetFromRoot %><%= jestPreset %>',
24
24
  transform: {
25
25
  '^.+\\.[tj]s$': ['@swc/jest', swcJestConfig],
26
26
  },
@@ -425,9 +425,11 @@ function replaceJestConfig(tree, options) {
425
425
  if (tree.exists(existingJestConfig)) {
426
426
  tree.delete(existingJestConfig);
427
427
  }
428
+ const jestPreset = findRootJestPreset(tree) ?? 'jest.presets.js';
428
429
  // replace with JS:SWC specific jest config
429
430
  (0, devkit_1.generateFiles)(tree, filesDir, options.projectRoot, {
430
431
  ext: options.js ? 'js' : 'ts',
432
+ jestPreset,
431
433
  js: !!options.js,
432
434
  project: options.name,
433
435
  offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot),
@@ -748,4 +750,8 @@ function logNxReleaseDocsInfo() {
748
750
  title: `📦 To learn how to publish this library, see https://nx.dev/core-features/manage-releases.`,
749
751
  });
750
752
  }
753
+ function findRootJestPreset(tree) {
754
+ const ext = ['js', 'cjs', 'mjs'].find((ext) => tree.exists(`jest.preset.${ext}`));
755
+ return ext ? `jest.preset.${ext}` : null;
756
+ }
751
757
  exports.default = libraryGenerator;
package/src/index.d.ts CHANGED
@@ -13,6 +13,7 @@ export * from './utils/package-json/update-package-json';
13
13
  export * from './utils/package-json/create-entry-points';
14
14
  export { libraryGenerator } from './generators/library/library';
15
15
  export { initGenerator } from './generators/init/init';
16
+ export { setupVerdaccio } from './generators/setup-verdaccio/generator';
16
17
  export { isValidVariable } from './utils/is-valid-variable';
17
18
  export { createLockFile, getLockFileName, } from 'nx/src/plugins/js/lock-file/lock-file';
18
19
  export { createPackageJson } from 'nx/src/plugins/js/package-json/create-package-json';
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPackageJson = exports.getLockFileName = exports.createLockFile = exports.isValidVariable = exports.initGenerator = exports.libraryGenerator = void 0;
3
+ exports.createPackageJson = exports.getLockFileName = exports.createLockFile = exports.isValidVariable = exports.setupVerdaccio = exports.initGenerator = exports.libraryGenerator = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  tslib_1.__exportStar(require("./utils/typescript/add-tslib-dependencies"), exports);
6
6
  tslib_1.__exportStar(require("./utils/typescript/load-ts-transformers"), exports);
@@ -19,6 +19,8 @@ var library_1 = require("./generators/library/library");
19
19
  Object.defineProperty(exports, "libraryGenerator", { enumerable: true, get: function () { return library_1.libraryGenerator; } });
20
20
  var init_1 = require("./generators/init/init");
21
21
  Object.defineProperty(exports, "initGenerator", { enumerable: true, get: function () { return init_1.initGenerator; } });
22
+ var generator_1 = require("./generators/setup-verdaccio/generator");
23
+ Object.defineProperty(exports, "setupVerdaccio", { enumerable: true, get: function () { return generator_1.setupVerdaccio; } });
22
24
  var is_valid_variable_1 = require("./utils/is-valid-variable");
23
25
  Object.defineProperty(exports, "isValidVariable", { enumerable: true, get: function () { return is_valid_variable_1.isValidVariable; } });
24
26
  // eslint-disable-next-line @typescript-eslint/no-restricted-imports
@@ -3,6 +3,7 @@ import { DependentBuildableProjectNode } from '../buildable-libs-utils';
3
3
  import type { PackageJson } from 'nx/src/utils/package-json';
4
4
  export type SupportedFormat = 'cjs' | 'esm';
5
5
  export interface UpdatePackageJsonOption {
6
+ rootDir?: string;
6
7
  projectRoot: string;
7
8
  main: string;
8
9
  additionalEntryPoints?: string[];
@@ -23,7 +24,7 @@ interface Exports {
23
24
  '.': string;
24
25
  [name: string]: string;
25
26
  }
26
- export declare function getExports(options: Pick<UpdatePackageJsonOption, 'main' | 'projectRoot' | 'outputFileName' | 'additionalEntryPoints'> & {
27
+ export declare function getExports(options: Pick<UpdatePackageJsonOption, 'main' | 'rootDir' | 'projectRoot' | 'outputFileName' | 'additionalEntryPoints'> & {
27
28
  fileExt: string;
28
29
  }): Exports;
29
30
  export declare function getUpdatedPackageJsonContent(packageJson: PackageJson, options: UpdatePackageJsonOption): PackageJson;
@@ -41,10 +41,15 @@ function updatePackageJson(options, context, target, dependencies, fileMap = nul
41
41
  (0, devkit_1.writeJsonFile)(`${options.outputPath}/package.json`, packageJson);
42
42
  if (options.generateLockfile) {
43
43
  const packageManager = (0, devkit_1.detectPackageManager)(context.root);
44
- const lockFile = (0, lock_file_1.createLockFile)(packageJson, context.projectGraph, packageManager);
45
- (0, fs_extra_1.writeFileSync)(`${options.outputPath}/${(0, lock_file_1.getLockFileName)(packageManager)}`, lockFile, {
46
- encoding: 'utf-8',
47
- });
44
+ if (packageManager === 'bun') {
45
+ devkit_1.logger.warn(`Bun lockfile generation is unsupported. Remove "generateLockfile" option or set it to false.`);
46
+ }
47
+ else {
48
+ const lockFile = (0, lock_file_1.createLockFile)(packageJson, context.projectGraph, packageManager);
49
+ (0, fs_extra_1.writeFileSync)(`${options.outputPath}/${(0, lock_file_1.getLockFileName)(packageManager)}`, lockFile, {
50
+ encoding: 'utf-8',
51
+ });
52
+ }
48
53
  }
49
54
  }
50
55
  exports.updatePackageJson = updatePackageJson;
@@ -99,7 +104,7 @@ function getExports(options) {
99
104
  : (0, path_1.basename)(options.main).replace(/\.[tj]s$/, '');
100
105
  const relativeMainFileDir = options.outputFileName
101
106
  ? './'
102
- : (0, get_main_file_dir_1.getRelativeDirectoryToProjectRoot)(options.main, options.projectRoot);
107
+ : (0, get_main_file_dir_1.getRelativeDirectoryToProjectRoot)(options.main, options.rootDir ?? options.projectRoot);
103
108
  const exports = {
104
109
  '.': relativeMainFileDir + mainFile + options.fileExt,
105
110
  };
@@ -123,23 +128,23 @@ function getUpdatedPackageJsonContent(packageJson, options) {
123
128
  const hasCjsFormat = !options.format || options.format?.includes('cjs');
124
129
  const hasEsmFormat = options.format?.includes('esm');
125
130
  if (options.generateExportsField) {
126
- packageJson.exports =
131
+ packageJson.exports ??=
127
132
  typeof packageJson.exports === 'string' ? {} : { ...packageJson.exports };
128
- packageJson.exports['./package.json'] = './package.json';
133
+ packageJson.exports['./package.json'] ??= './package.json';
129
134
  }
130
135
  if (hasEsmFormat) {
131
136
  const esmExports = getExports({
132
137
  ...options,
133
138
  fileExt: options.outputFileExtensionForEsm ?? '.js',
134
139
  });
135
- packageJson.module = esmExports['.'];
140
+ packageJson.module ??= esmExports['.'];
136
141
  if (!hasCjsFormat) {
137
142
  packageJson.type = 'module';
138
143
  packageJson.main ??= esmExports['.'];
139
144
  }
140
145
  if (options.generateExportsField) {
141
146
  for (const [exportEntry, filePath] of Object.entries(esmExports)) {
142
- packageJson.exports[exportEntry] = hasCjsFormat
147
+ packageJson.exports[exportEntry] ??= hasCjsFormat
143
148
  ? { import: filePath }
144
149
  : filePath;
145
150
  }
@@ -153,7 +158,7 @@ function getUpdatedPackageJsonContent(packageJson, options) {
153
158
  ...options,
154
159
  fileExt: options.outputFileExtensionForCjs ?? '.js',
155
160
  });
156
- packageJson.main = cjsExports['.'];
161
+ packageJson.main ??= cjsExports['.'];
157
162
  if (!hasEsmFormat) {
158
163
  packageJson.type = 'commonjs';
159
164
  }
@@ -163,7 +168,7 @@ function getUpdatedPackageJsonContent(packageJson, options) {
163
168
  packageJson.exports[exportEntry]['default'] ??= filePath;
164
169
  }
165
170
  else {
166
- packageJson.exports[exportEntry] = filePath;
171
+ packageJson.exports[exportEntry] ??= filePath;
167
172
  }
168
173
  }
169
174
  }
@@ -172,7 +177,7 @@ function getUpdatedPackageJsonContent(packageJson, options) {
172
177
  const mainFile = (0, path_1.basename)(options.main).replace(/\.[tj]s$/, '');
173
178
  const relativeMainFileDir = (0, get_main_file_dir_1.getRelativeDirectoryToProjectRoot)(options.main, options.projectRoot);
174
179
  const typingsFile = `${relativeMainFileDir}${mainFile}.d.ts`;
175
- packageJson.types = packageJson.types ?? typingsFile;
180
+ packageJson.types ??= typingsFile;
176
181
  }
177
182
  return packageJson;
178
183
  }