@nx/remix 18.0.0-beta.0 → 18.0.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.
Files changed (49) hide show
  1. package/generators.json +7 -7
  2. package/package.json +5 -5
  3. package/src/executors/build/schema.json +1 -1
  4. package/src/generators/action/schema.d.ts +1 -1
  5. package/src/generators/action/schema.json +2 -2
  6. package/src/generators/application/application.impl.d.ts +3 -1
  7. package/src/generators/application/application.impl.js +29 -5
  8. package/src/generators/application/files/common/app/nx-welcome.tsx__tmpl__ +19 -0
  9. package/src/generators/application/lib/normalize-options.js +1 -0
  10. package/src/generators/application/schema.d.ts +1 -0
  11. package/src/generators/application/schema.json +1 -1
  12. package/src/generators/cypress/cypress.impl.d.ts +3 -1
  13. package/src/generators/cypress/cypress.impl.js +11 -2
  14. package/src/generators/cypress/schema.d.ts +1 -0
  15. package/src/generators/cypress/schema.json +1 -1
  16. package/src/generators/cypress-component-configuration/cypress-component-configuration.impl.d.ts +3 -1
  17. package/src/generators/cypress-component-configuration/cypress-component-configuration.impl.js +12 -1
  18. package/src/generators/cypress-component-configuration/schema.d.ts +1 -0
  19. package/src/generators/error-boundary/schema.d.ts +1 -1
  20. package/src/generators/error-boundary/schema.json +2 -2
  21. package/src/generators/init/init.d.ts +1 -0
  22. package/src/generators/init/init.js +8 -4
  23. package/src/generators/init/schema.d.ts +1 -0
  24. package/src/generators/init/schema.json +1 -1
  25. package/src/generators/library/lib/normalize-options.js +1 -0
  26. package/src/generators/library/library.impl.d.ts +3 -1
  27. package/src/generators/library/library.impl.js +9 -2
  28. package/src/generators/library/schema.d.ts +1 -0
  29. package/src/generators/library/schema.json +1 -1
  30. package/src/generators/loader/schema.d.ts +1 -1
  31. package/src/generators/loader/schema.json +2 -2
  32. package/src/generators/meta/schema.d.ts +1 -1
  33. package/src/generators/meta/schema.json +2 -2
  34. package/src/generators/preset/preset.impl.js +1 -0
  35. package/src/generators/preset/schema.json +1 -1
  36. package/src/generators/resource-route/schema.d.ts +1 -1
  37. package/src/generators/resource-route/schema.json +2 -2
  38. package/src/generators/route/schema.d.ts +1 -1
  39. package/src/generators/route/schema.json +2 -2
  40. package/src/generators/setup/schema.json +1 -1
  41. package/src/generators/setup-tailwind/schema.json +1 -1
  42. package/src/generators/storybook-configuration/__snapshots__/storybook-configuration.impl.spec.ts.snap +3 -3
  43. package/src/generators/storybook-configuration/schema.d.ts +1 -0
  44. package/src/generators/storybook-configuration/schema.json +1 -1
  45. package/src/generators/storybook-configuration/storybook-configuration.impl.d.ts +2 -1
  46. package/src/generators/storybook-configuration/storybook-configuration.impl.js +11 -2
  47. package/src/generators/style/schema.d.ts +1 -1
  48. package/src/generators/style/schema.json +2 -2
  49. package/src/plugins/plugin.js +2 -14
package/generators.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "name": "NxRemix",
4
4
  "version": "0.0.1",
5
5
  "extends": ["@nx/react"],
@@ -17,26 +17,26 @@
17
17
  "hidden": true
18
18
  },
19
19
  "application": {
20
- "implementation": "./src/generators/application/application.impl",
20
+ "implementation": "./src/generators/application/application.impl#remixApplicationGeneratorInternal",
21
21
  "schema": "./src/generators/application/schema.json",
22
22
  "description": "Generate a new Remix application",
23
23
  "aliases": ["app"],
24
24
  "x-type": "application"
25
25
  },
26
26
  "cypress-component-configuration": {
27
- "implementation": "./src/generators/cypress-component-configuration/cypress-component-configuration.impl",
27
+ "implementation": "./src/generators/cypress-component-configuration/cypress-component-configuration.impl#cypressComponentConfigurationGeneratorInternal",
28
28
  "schema": "./src/generators/cypress-component-configuration/schema.json",
29
29
  "description": "Generate a Cypress Component Testing configuration for a Remix project"
30
30
  },
31
31
  "library": {
32
- "implementation": "./src/generators/library/library.impl",
32
+ "implementation": "./src/generators/library/library.impl#remixLibraryGeneratorInternal",
33
33
  "schema": "./src/generators/library/schema.json",
34
34
  "description": "Generate a new library",
35
35
  "aliases": ["lib"],
36
36
  "x-type": "library"
37
37
  },
38
38
  "init": {
39
- "implementation": "./src/generators/init/init",
39
+ "implementation": "./src/generators/init/init#remixInitGeneratorInternal",
40
40
  "schema": "./src/generators/init/schema.json",
41
41
  "description": "Initialize the `@nx/remix` plugin.",
42
42
  "hidden": true
@@ -72,7 +72,7 @@
72
72
  "description": "Generates a TailwindCSS configuration for the Remix application"
73
73
  },
74
74
  "storybook-configuration": {
75
- "implementation": "./src/generators/storybook-configuration/storybook-configuration.impl",
75
+ "implementation": "./src/generators/storybook-configuration/storybook-configuration.impl#remixStorybookConfiguration",
76
76
  "schema": "./src/generators/storybook-configuration/schema.json",
77
77
  "description": "Generates a Storybook configuration for a Remix application"
78
78
  },
@@ -87,7 +87,7 @@
87
87
  "description": "Add an ErrorBoundary to an existing route"
88
88
  },
89
89
  "cypress": {
90
- "implementation": "./src/generators/cypress/cypress.impl",
90
+ "implementation": "./src/generators/cypress/cypress.impl#cypressGeneratorInternal",
91
91
  "schema": "./src/generators/cypress/schema.json",
92
92
  "description": "Generate a project for testing Remix apps using Cypress"
93
93
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/remix",
3
- "version": "18.0.0-beta.0",
3
+ "version": "18.0.0-beta.2",
4
4
  "description": "The Remix plugin for Nx contains executors and generators for managing Remix applications and libraries within an Nx workspace. It provides:\n\n\n- Integration with libraries such as Vitest, Jest, Cypress, and Storybook.\n\n- Generators for applications, libraries, routes, loaders, and more.\n\n- Library build support for publishing packages to npm or other registries.\n\n- Utilities for automatic workspace refactoring.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,12 +28,12 @@
28
28
  "migrations": "./migrations.json"
29
29
  },
30
30
  "dependencies": {
31
- "@nx/devkit": "18.0.0-beta.0",
32
- "@nx/js": "18.0.0-beta.0",
33
- "@nx/react": "18.0.0-beta.0",
31
+ "@nx/devkit": "18.0.0-beta.2",
32
+ "@nx/js": "18.0.0-beta.2",
33
+ "@nx/react": "18.0.0-beta.2",
34
34
  "tslib": "^2.3.1",
35
35
  "@phenomnomnominal/tsquery": "~5.0.1",
36
- "@nrwl/remix": "18.0.0-beta.0"
36
+ "@nrwl/remix": "18.0.0-beta.2"
37
37
  },
38
38
  "peerDependencies": {},
39
39
  "publishConfig": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 2,
3
3
  "outputCapture": "pipe",
4
- "$schema": "http://json-schema.org/schema",
4
+ "$schema": "https://json-schema.org/schema",
5
5
  "cli": "nx",
6
6
  "title": "Remix Build",
7
7
  "description": "Build a Remix app.",
@@ -4,7 +4,7 @@ export interface LoaderSchema {
4
4
  path: string;
5
5
  nameAndDirectoryFormat?: NameAndDirectoryFormat;
6
6
  /**
7
- * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v18.
7
+ * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v19.
8
8
  */
9
9
  project?: string;
10
10
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "action",
4
4
  "type": "object",
5
5
  "description": "Generate an action for a given route.",
@@ -22,7 +22,7 @@
22
22
  "type": "string",
23
23
  "description": "The name of the project.",
24
24
  "pattern": "^[a-zA-Z].*$",
25
- "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v18."
25
+ "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v19."
26
26
  }
27
27
  },
28
28
  "required": ["path"]
@@ -1,3 +1,5 @@
1
1
  import { GeneratorCallback, Tree } from '@nx/devkit';
2
2
  import { NxRemixGeneratorSchema } from './schema';
3
- export default function (tree: Tree, _options: NxRemixGeneratorSchema): Promise<GeneratorCallback>;
3
+ export declare function remixApplicationGenerator(tree: Tree, options: NxRemixGeneratorSchema): Promise<GeneratorCallback>;
4
+ export declare function remixApplicationGeneratorInternal(tree: Tree, _options: NxRemixGeneratorSchema): Promise<GeneratorCallback>;
5
+ export default remixApplicationGenerator;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remixApplicationGeneratorInternal = exports.remixApplicationGenerator = void 0;
3
4
  const devkit_1 = require("@nx/devkit");
4
5
  const create_ts_config_1 = require("@nx/js/src/utils/typescript/create-ts-config");
5
6
  const versions_1 = require("../../utils/versions");
@@ -8,10 +9,22 @@ const update_dependencies_1 = require("../utils/update-dependencies");
8
9
  const init_1 = require("../init/init");
9
10
  const js_1 = require("@nx/js");
10
11
  const add_build_target_defaults_1 = require("@nx/devkit/src/generators/add-build-target-defaults");
11
- async function default_1(tree, _options) {
12
+ const log_show_project_command_1 = require("@nx/devkit/src/utils/log-show-project-command");
13
+ function remixApplicationGenerator(tree, options) {
14
+ return remixApplicationGeneratorInternal(tree, {
15
+ addPlugin: false,
16
+ ...options,
17
+ });
18
+ }
19
+ exports.remixApplicationGenerator = remixApplicationGenerator;
20
+ // TODO(@columferry): update this to use crystal?
21
+ async function remixApplicationGeneratorInternal(tree, _options) {
12
22
  const options = await (0, lib_1.normalizeOptions)(tree, _options);
13
23
  const tasks = [
14
- await (0, init_1.default)(tree, { skipFormat: true }),
24
+ await (0, init_1.default)(tree, {
25
+ skipFormat: true,
26
+ addPlugin: options.addPlugin,
27
+ }),
15
28
  await (0, js_1.initGenerator)(tree, { skipFormat: true }),
16
29
  ];
17
30
  (0, add_build_target_defaults_1.addBuildTargetDefaults)(tree, '@nx/remix:build');
@@ -85,6 +98,7 @@ async function default_1(tree, _options) {
85
98
  skipFormat: true,
86
99
  testEnvironment: 'jsdom',
87
100
  skipViteConfig: true,
101
+ addPlugin: options.addPlugin,
88
102
  });
89
103
  createOrEditViteConfig(tree, {
90
104
  project: options.projectName,
@@ -105,10 +119,13 @@ async function default_1(tree, _options) {
105
119
  skipSerializers: false,
106
120
  skipPackageJson: false,
107
121
  skipFormat: true,
122
+ addPlugin: options.addPlugin,
108
123
  });
109
124
  const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.projectName);
110
- projectConfig.targets['test'].options.passWithNoTests = true;
111
- (0, devkit_1.updateProjectConfiguration)(tree, options.projectName, projectConfig);
125
+ if (projectConfig.targets['test']?.options) {
126
+ projectConfig.targets['test'].options.passWithNoTests = true;
127
+ (0, devkit_1.updateProjectConfiguration)(tree, options.projectName, projectConfig);
128
+ }
112
129
  tasks.push(jestTask);
113
130
  }
114
131
  const pkgInstallTask = (0, lib_1.updateUnitTestConfig)(tree, options.projectRoot, options.unitTestRunner);
@@ -128,6 +145,7 @@ async function default_1(tree, _options) {
128
145
  unitTestRunner: options.unitTestRunner,
129
146
  skipFormat: true,
130
147
  rootProject: options.rootProject,
148
+ addPlugin: options.addPlugin,
131
149
  });
132
150
  tasks.push(eslintTask);
133
151
  }
@@ -164,6 +182,7 @@ async function default_1(tree, _options) {
164
182
  // Otherwise, extract the tsconfig.base.json from tsconfig.json so we can share settings.
165
183
  (0, create_ts_config_1.extractTsConfigBase)(tree);
166
184
  }
185
+ // TODO(@columferry): add support for playwright?
167
186
  if (options.e2eTestRunner === 'cypress') {
168
187
  const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/cypress', (0, versions_1.getPackageVersion)(tree, 'nx'));
169
188
  addFileServerTarget(tree, options, 'serve-static');
@@ -181,14 +200,18 @@ async function default_1(tree, _options) {
181
200
  skipFormat: true,
182
201
  devServerTarget: `${options.projectName}:serve:development`,
183
202
  baseUrl: 'http://localhost:4200',
203
+ addPlugin: options.addPlugin,
184
204
  }));
185
205
  }
186
206
  if (!options.skipFormat) {
187
207
  await (0, devkit_1.formatFiles)(tree);
188
208
  }
209
+ tasks.push(() => {
210
+ (0, log_show_project_command_1.logShowProjectCommand)(options.projectName);
211
+ });
189
212
  return (0, devkit_1.runTasksInSerial)(...tasks);
190
213
  }
191
- exports.default = default_1;
214
+ exports.remixApplicationGeneratorInternal = remixApplicationGeneratorInternal;
192
215
  function addFileServerTarget(tree, options, targetName) {
193
216
  const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.projectName);
194
217
  projectConfig.targets[targetName] = {
@@ -200,3 +223,4 @@ function addFileServerTarget(tree, options, targetName) {
200
223
  };
201
224
  (0, devkit_1.updateProjectConfiguration)(tree, options.projectName, projectConfig);
202
225
  }
226
+ exports.default = remixApplicationGenerator;
@@ -795,6 +795,25 @@ export function NxWelcome({ title }: { title: string }) {
795
795
  nx g @nx/react:component ui/src/lib/button
796
796
  </pre>
797
797
  </details>
798
+ <details>
799
+ <summary>
800
+ <svg
801
+ fill="none"
802
+ stroke="currentColor"
803
+ viewBox="0 0 24 24"
804
+ xmlns="http://www.w3.org/2000/svg"
805
+ >
806
+ <path
807
+ strokeLinecap="round"
808
+ strokeLinejoin="round"
809
+ strokeWidth="2"
810
+ d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
811
+ />
812
+ </svg>
813
+ View project details
814
+ </summary>
815
+ <pre>nx show project { title } --web</pre>
816
+ </details>
798
817
  <details>
799
818
  <summary>
800
819
  <svg
@@ -14,6 +14,7 @@ async function normalizeOptions(tree, options) {
14
14
  });
15
15
  options.rootProject = projectRoot === '.';
16
16
  options.projectNameAndRootFormat = projectNameAndRootFormat;
17
+ options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
17
18
  const e2eProjectName = options.rootProject ? 'e2e' : `${projectName}-e2e`;
18
19
  const e2eProjectRoot = options.rootProject ? 'e2e' : `${projectRoot}-e2e`;
19
20
  const parsedTags = options.tags
@@ -12,4 +12,5 @@ export interface NxRemixGeneratorSchema {
12
12
  e2eTestRunner?: 'cypress' | 'none';
13
13
  skipFormat?: boolean;
14
14
  rootProject?: boolean;
15
+ addPlugin?: boolean;
15
16
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixApplication",
4
4
  "title": "Create an Application",
5
5
  "description": "Generate a new Remix application.",
@@ -1,3 +1,5 @@
1
1
  import { GeneratorCallback, Tree } from '@nx/devkit';
2
2
  import { CypressGeneratorSchema } from './schema';
3
- export default function (tree: Tree, options: CypressGeneratorSchema): Promise<GeneratorCallback>;
3
+ export declare function cypressGenerator(tree: Tree, options: CypressGeneratorSchema): Promise<GeneratorCallback>;
4
+ export declare function cypressGeneratorInternal(tree: Tree, options: CypressGeneratorSchema): Promise<GeneratorCallback>;
5
+ export default cypressGenerator;
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cypressGeneratorInternal = exports.cypressGenerator = void 0;
3
4
  const devkit_1 = require("@nx/devkit");
4
5
  const cypress_1 = require("@nx/cypress");
5
6
  const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
6
7
  const versions_1 = require("../../utils/versions");
7
- async function default_1(tree, options) {
8
+ // TODO(@columferry): Does anything use this?
9
+ function cypressGenerator(tree, options) {
10
+ return cypressGeneratorInternal(tree, { addPlugin: false, ...options });
11
+ }
12
+ exports.cypressGenerator = cypressGenerator;
13
+ async function cypressGeneratorInternal(tree, options) {
8
14
  const { projectName: e2eProjectName, projectRoot: e2eProjectRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(tree, {
9
15
  name: options.name,
10
16
  projectType: 'application',
@@ -12,6 +18,7 @@ async function default_1(tree, options) {
12
18
  projectNameAndRootFormat: options.projectNameAndRootFormat,
13
19
  callingGenerator: '@nx/remix:cypress',
14
20
  });
21
+ options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
15
22
  const rootProject = e2eProjectRoot === '.';
16
23
  let projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
17
24
  options.baseUrl ??= `http://localhost:${projectConfig.targets['serve'].options.port}`;
@@ -33,6 +40,7 @@ async function default_1(tree, options) {
33
40
  devServerTarget: `${options.project}:serve:development`,
34
41
  baseUrl: options.baseUrl,
35
42
  rootProject,
43
+ addPlugin: options.addPlugin,
36
44
  });
37
45
  projectConfig = (0, devkit_1.readProjectConfiguration)(tree, e2eProjectName);
38
46
  tree.delete((0, devkit_1.joinPathFragments)(projectConfig.sourceRoot, 'support', 'app.po.ts'));
@@ -62,7 +70,7 @@ Cypress.on("uncaught:exception", (err) => {
62
70
  });`);
63
71
  return (0, devkit_1.runTasksInSerial)(installTask);
64
72
  }
65
- exports.default = default_1;
73
+ exports.cypressGeneratorInternal = cypressGeneratorInternal;
66
74
  function addFileServerTarget(tree, options, targetName) {
67
75
  (0, devkit_1.addDependenciesToPackageJson)(tree, {}, { '@nx/web': versions_1.nxVersion });
68
76
  const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
@@ -75,3 +83,4 @@ function addFileServerTarget(tree, options, targetName) {
75
83
  };
76
84
  (0, devkit_1.updateProjectConfiguration)(tree, options.project, projectConfig);
77
85
  }
86
+ exports.default = cypressGenerator;
@@ -11,4 +11,5 @@ export interface CypressGeneratorSchema {
11
11
  js?: boolean;
12
12
  skipFormat?: boolean;
13
13
  setParserOptionsProject?: boolean;
14
+ addPlugin?: boolean;
14
15
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixCypress",
4
4
  "title": "",
5
5
  "type": "object",
@@ -1,3 +1,5 @@
1
1
  import { type Tree } from '@nx/devkit';
2
2
  import { type CypressComponentConfigurationSchema } from './schema';
3
- export default function cypressComponentConfigurationGenerator(tree: Tree, options: CypressComponentConfigurationSchema): Promise<void>;
3
+ export declare function cypressComponentConfigurationGenerator(tree: Tree, options: CypressComponentConfigurationSchema): Promise<void>;
4
+ export declare function cypressComponentConfigurationGeneratorInternal(tree: Tree, options: CypressComponentConfigurationSchema): Promise<void>;
5
+ export default cypressComponentConfigurationGenerator;
@@ -1,15 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cypressComponentConfigurationGeneratorInternal = exports.cypressComponentConfigurationGenerator = void 0;
3
4
  const devkit_1 = require("@nx/devkit");
4
5
  const path_1 = require("path");
5
6
  const react_1 = require("@nx/react");
6
- async function cypressComponentConfigurationGenerator(tree, options) {
7
+ function cypressComponentConfigurationGenerator(tree, options) {
8
+ return cypressComponentConfigurationGeneratorInternal(tree, {
9
+ addPlugin: false,
10
+ ...options,
11
+ });
12
+ }
13
+ exports.cypressComponentConfigurationGenerator = cypressComponentConfigurationGenerator;
14
+ async function cypressComponentConfigurationGeneratorInternal(tree, options) {
15
+ options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
7
16
  await (0, react_1.cypressComponentConfigGenerator)(tree, {
8
17
  project: options.project,
9
18
  generateTests: options.generateTests,
10
19
  skipFormat: true,
11
20
  bundler: 'vite',
12
21
  buildTarget: '',
22
+ addPlugin: options.addPlugin,
13
23
  });
14
24
  const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
15
25
  (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, './files'), project.root, { tmpl: '' });
@@ -17,4 +27,5 @@ async function cypressComponentConfigurationGenerator(tree, options) {
17
27
  await (0, devkit_1.formatFiles)(tree);
18
28
  }
19
29
  }
30
+ exports.cypressComponentConfigurationGeneratorInternal = cypressComponentConfigurationGeneratorInternal;
20
31
  exports.default = cypressComponentConfigurationGenerator;
@@ -2,4 +2,5 @@ export interface CypressComponentConfigurationSchema {
2
2
  project: string;
3
3
  generateTests?: boolean;
4
4
  skipFormat?: boolean;
5
+ addPlugin?: boolean;
5
6
  }
@@ -5,7 +5,7 @@ export interface ErrorBoundarySchema {
5
5
  skipFormat?: false;
6
6
  nameAndDirectoryFormat?: NameAndDirectoryFormat;
7
7
  /**
8
- * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v18.
8
+ * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v19.
9
9
  */
10
10
  project?: string;
11
11
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixErrorBoundary",
4
4
  "title": "Create an ErrorBoundary for a Route",
5
5
  "description": "Generate an ErrorBoundary for a given route.",
@@ -24,7 +24,7 @@
24
24
  "type": "string",
25
25
  "description": "The name of the project.",
26
26
  "pattern": "^[a-zA-Z].*$",
27
- "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v18."
27
+ "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v19."
28
28
  },
29
29
  "skipFormat": {
30
30
  "type": "boolean",
@@ -1,4 +1,5 @@
1
1
  import { type Tree, GeneratorCallback } from '@nx/devkit';
2
2
  import { type Schema } from './schema';
3
3
  export declare function remixInitGenerator(tree: Tree, options: Schema): Promise<GeneratorCallback>;
4
+ export declare function remixInitGeneratorInternal(tree: Tree, options: Schema): Promise<GeneratorCallback>;
4
5
  export default remixInitGenerator;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.remixInitGenerator = void 0;
3
+ exports.remixInitGeneratorInternal = exports.remixInitGenerator = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const update_package_scripts_1 = require("@nx/devkit/src/utils/update-package-scripts");
6
6
  const plugin_1 = require("../../plugins/plugin");
@@ -26,7 +26,11 @@ function addPlugin(tree) {
26
26
  });
27
27
  (0, devkit_1.updateNxJson)(tree, nxJson);
28
28
  }
29
- async function remixInitGenerator(tree, options) {
29
+ function remixInitGenerator(tree, options) {
30
+ return remixInitGeneratorInternal(tree, { addPlugin: false, ...options });
31
+ }
32
+ exports.remixInitGenerator = remixInitGenerator;
33
+ async function remixInitGeneratorInternal(tree, options) {
30
34
  const tasks = [];
31
35
  if (!options.skipPackageJson) {
32
36
  const installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {
@@ -37,7 +41,7 @@ async function remixInitGenerator(tree, options) {
37
41
  }, undefined, options.keepExistingVersions);
38
42
  tasks.push(installTask);
39
43
  }
40
- if (process.env.NX_PCV3 === 'true') {
44
+ if (options.addPlugin) {
41
45
  addPlugin(tree);
42
46
  }
43
47
  if (options.updatePackageScripts) {
@@ -48,5 +52,5 @@ async function remixInitGenerator(tree, options) {
48
52
  }
49
53
  return (0, devkit_1.runTasksInSerial)(...tasks);
50
54
  }
51
- exports.remixInitGenerator = remixInitGenerator;
55
+ exports.remixInitGeneratorInternal = remixInitGeneratorInternal;
52
56
  exports.default = remixInitGenerator;
@@ -3,4 +3,5 @@ export interface Schema {
3
3
  skipPackageJson?: boolean;
4
4
  keepExistingVersions?: boolean;
5
5
  updatePackageScripts?: boolean;
6
+ addPlugin?: boolean;
6
7
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixInit",
4
4
  "title": "Init Remix Plugin",
5
5
  "description": "Initialize the Remix Plugin.",
@@ -11,6 +11,7 @@ async function normalizeOptions(tree, options) {
11
11
  projectNameAndRootFormat: options.projectNameAndRootFormat,
12
12
  callingGenerator: '@nx/remix:library',
13
13
  });
14
+ options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
14
15
  const importPath = options.importPath ?? (0, get_import_path_1.getImportPath)(tree, projectRoot);
15
16
  return {
16
17
  ...options,
@@ -1,4 +1,6 @@
1
1
  import type { Tree } from '@nx/devkit';
2
2
  import { GeneratorCallback } from '@nx/devkit';
3
3
  import type { NxRemixGeneratorSchema } from './schema';
4
- export default function (tree: Tree, schema: NxRemixGeneratorSchema): Promise<GeneratorCallback>;
4
+ export declare function remixLibraryGenerator(tree: Tree, schema: NxRemixGeneratorSchema): Promise<GeneratorCallback>;
5
+ export declare function remixLibraryGeneratorInternal(tree: Tree, schema: NxRemixGeneratorSchema): Promise<GeneratorCallback>;
6
+ export default remixLibraryGenerator;
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remixLibraryGeneratorInternal = exports.remixLibraryGenerator = void 0;
3
4
  const devkit_1 = require("@nx/devkit");
4
5
  const eslint_1 = require("@nx/eslint");
5
6
  const react_1 = require("@nx/react");
6
7
  const lib_1 = require("./lib");
7
- async function default_1(tree, schema) {
8
+ async function remixLibraryGenerator(tree, schema) {
9
+ return remixLibraryGeneratorInternal(tree, { addPlugin: false, ...schema });
10
+ }
11
+ exports.remixLibraryGenerator = remixLibraryGenerator;
12
+ async function remixLibraryGeneratorInternal(tree, schema) {
8
13
  const tasks = [];
9
14
  const options = await (0, lib_1.normalizeOptions)(tree, schema);
10
15
  const libGenTask = await (0, react_1.libraryGenerator)(tree, {
@@ -20,6 +25,7 @@ async function default_1(tree, schema) {
20
25
  linter: eslint_1.Linter.EsLint,
21
26
  component: true,
22
27
  buildable: options.buildable,
28
+ addPlugin: options.addPlugin,
23
29
  });
24
30
  tasks.push(libGenTask);
25
31
  if (options.unitTestRunner && options.unitTestRunner !== 'none') {
@@ -35,4 +41,5 @@ async function default_1(tree, schema) {
35
41
  }
36
42
  return (0, devkit_1.runTasksInSerial)(...tasks);
37
43
  }
38
- exports.default = default_1;
44
+ exports.remixLibraryGeneratorInternal = remixLibraryGeneratorInternal;
45
+ exports.default = remixLibraryGenerator;
@@ -12,4 +12,5 @@ export interface NxRemixGeneratorSchema {
12
12
  unitTestRunner?: 'jest' | 'vitest' | 'none';
13
13
  js?: boolean;
14
14
  skipFormat?: boolean;
15
+ addPlugin?: boolean;
15
16
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixLibrary",
4
4
  "title": "Create a Library",
5
5
  "description": "Generate a Remix library to help structure workspace and application.",
@@ -4,7 +4,7 @@ export interface LoaderSchema {
4
4
  path: string;
5
5
  nameAndDirectoryFormat?: NameAndDirectoryFormat;
6
6
  /**
7
- * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v18.
7
+ * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v19.
8
8
  */
9
9
  project?: string;
10
10
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "data-loader",
4
4
  "type": "object",
5
5
  "description": "Generate an loader for a given route.",
@@ -22,7 +22,7 @@
22
22
  "type": "string",
23
23
  "description": "The name of the project.",
24
24
  "pattern": "^[a-zA-Z].*$",
25
- "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v18."
25
+ "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v19."
26
26
  }
27
27
  },
28
28
  "required": ["path"]
@@ -4,7 +4,7 @@ export interface MetaSchema {
4
4
  path: string;
5
5
  nameAndDirectoryFormat?: NameAndDirectoryFormat;
6
6
  /**
7
- * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v18.
7
+ * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v19.
8
8
  */
9
9
  project?: string;
10
10
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "meta",
4
4
  "type": "object",
5
5
  "description": "Generate a meta function for a given route.",
@@ -22,7 +22,7 @@
22
22
  "type": "string",
23
23
  "description": "The name of the project.",
24
24
  "pattern": "^[a-zA-Z].*$",
25
- "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v18."
25
+ "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v19."
26
26
  }
27
27
  },
28
28
  "required": ["path"]
@@ -18,6 +18,7 @@ async function default_1(tree, _options) {
18
18
  unitTestRunner: options.unitTestRunner ?? 'vitest',
19
19
  e2eTestRunner: options.e2eTestRunner ?? 'cypress',
20
20
  js: options.js ?? false,
21
+ addPlugin: process.env.NX_ADD_PLUGINS !== 'false',
21
22
  });
22
23
  tasks.push(appGenTask);
23
24
  tree.delete('apps');
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "Remix",
4
4
  "title": "",
5
5
  "type": "object",
@@ -7,7 +7,7 @@ export interface RemixRouteSchema {
7
7
  loader: boolean;
8
8
  skipChecks: boolean;
9
9
  /**
10
- * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v18.
10
+ * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v19.
11
11
  */
12
12
  project?: string;
13
13
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixResourceRoute",
4
4
  "title": "Create a Resource Route",
5
5
  "type": "object",
@@ -29,7 +29,7 @@
29
29
  "type": "string",
30
30
  "description": "The name of the project.",
31
31
  "pattern": "^[a-zA-Z].*$",
32
- "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v18."
32
+ "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v19."
33
33
  },
34
34
  "action": {
35
35
  "type": "boolean",
@@ -9,7 +9,7 @@ export interface RemixRouteSchema {
9
9
  loader: boolean;
10
10
  skipChecks: boolean;
11
11
  /**
12
- * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v18.
12
+ * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v19.
13
13
  */
14
14
  project?: string;
15
15
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixRoute",
4
4
  "title": "Create a Route",
5
5
  "description": "Generate a route.",
@@ -29,7 +29,7 @@
29
29
  "type": "string",
30
30
  "description": "The name of the project.",
31
31
  "pattern": "^[a-zA-Z].*$",
32
- "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v18."
32
+ "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v19."
33
33
  },
34
34
  "style": {
35
35
  "type": "string",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixSetup",
4
4
  "title": "",
5
5
  "type": "object",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixTailwind",
4
4
  "title": "Add TailwindCSS to a Remix App",
5
5
  "description": "Setup tailwindcss for a given project.",
@@ -10,7 +10,7 @@ const config: StorybookConfig = {
10
10
  name: '@storybook/react-vite',
11
11
  options: {
12
12
  builder: {
13
- viteConfigPath: 'libs/storybook-test/vite.config.ts',
13
+ viteConfigPath: 'vite.config.ts',
14
14
  },
15
15
  },
16
16
  },
@@ -34,7 +34,7 @@ const config: StorybookConfig = {
34
34
  name: '@storybook/react-vite',
35
35
  options: {
36
36
  builder: {
37
- viteConfigPath: 'libs/storybook-test/vite.config.ts',
37
+ viteConfigPath: 'vite.config.ts',
38
38
  },
39
39
  },
40
40
  },
@@ -58,7 +58,7 @@ const config: StorybookConfig = {
58
58
  name: '@storybook/react-vite',
59
59
  options: {
60
60
  builder: {
61
- viteConfigPath: 'libs/storybook-test/vite.config.ts',
61
+ viteConfigPath: 'vite.config.ts',
62
62
  },
63
63
  },
64
64
  },
@@ -12,4 +12,5 @@ export interface StorybookConfigurationSchema {
12
12
  ignorePaths?: string[];
13
13
  configureTestRunner?: boolean;
14
14
  configureStaticServe?: boolean;
15
+ addPlugin?: boolean;
15
16
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "cli": "nx",
4
4
  "$id": "NxRemixStorybookConfigure",
5
5
  "title": "Remix Storybook Configuration",
@@ -1,3 +1,4 @@
1
1
  import { type Tree } from '@nx/devkit';
2
2
  import type { StorybookConfigurationSchema } from './schema';
3
- export default function remixStorybookConfiguration(tree: Tree, schema: StorybookConfigurationSchema): Promise<import("@nx/devkit").GeneratorCallback>;
3
+ export declare function remixStorybookConfiguration(tree: Tree, schema: StorybookConfigurationSchema): Promise<import("@nx/devkit").GeneratorCallback>;
4
+ export default function remixStorybookConfigurationInternal(tree: Tree, schema: StorybookConfigurationSchema): Promise<import("@nx/devkit").GeneratorCallback>;
@@ -1,9 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remixStorybookConfiguration = void 0;
3
4
  const devkit_1 = require("@nx/devkit");
4
5
  const path_1 = require("path");
5
6
  const react_1 = require("@nx/react");
6
- async function remixStorybookConfiguration(tree, schema) {
7
+ function remixStorybookConfiguration(tree, schema) {
8
+ return remixStorybookConfigurationInternal(tree, {
9
+ addPlugin: false,
10
+ ...schema,
11
+ });
12
+ }
13
+ exports.remixStorybookConfiguration = remixStorybookConfiguration;
14
+ async function remixStorybookConfigurationInternal(tree, schema) {
15
+ schema.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
7
16
  const { root } = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
8
17
  if (!tree.exists((0, devkit_1.joinPathFragments)(root, 'vite.config.ts'))) {
9
18
  (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, 'files'), root, { tpl: '' });
@@ -11,4 +20,4 @@ async function remixStorybookConfiguration(tree, schema) {
11
20
  const task = await (0, react_1.storybookConfigurationGenerator)(tree, schema);
12
21
  return task;
13
22
  }
14
- exports.default = remixStorybookConfiguration;
23
+ exports.default = remixStorybookConfigurationInternal;
@@ -4,7 +4,7 @@ export interface RemixStyleSchema {
4
4
  path: string;
5
5
  nameAndDirectoryFormat?: NameAndDirectoryFormat;
6
6
  /**
7
- * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v18.
7
+ * @deprecated Provide the `path` option instead. The project will be determined from the path provided. It will be removed in Nx v19.
8
8
  */
9
9
  project?: string;
10
10
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxRemixRouteStyle",
4
4
  "title": "Add style import to a route",
5
5
  "description": "Generate a style import and file for a given route.",
@@ -29,7 +29,7 @@
29
29
  "type": "string",
30
30
  "description": "The name of the project.",
31
31
  "pattern": "^[a-zA-Z].*$",
32
- "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v18."
32
+ "x-deprecated": "Provide the `path` option instead and use the `as-provided` format. The project will be determined from the path provided. It will be removed in Nx v19."
33
33
  }
34
34
  },
35
35
  "required": ["path"]
@@ -8,6 +8,7 @@ const get_named_inputs_1 = require("@nx/devkit/src/utils/get-named-inputs");
8
8
  const js_1 = require("@nx/js");
9
9
  const path_1 = require("path");
10
10
  const fs_1 = require("fs");
11
+ const config_utils_1 = require("@nx/devkit/src/utils/config-utils");
11
12
  const cachePath = (0, path_1.join)(cache_directory_1.projectGraphCacheDirectory, 'remix.hash');
12
13
  const targetsCache = (0, fs_1.existsSync)(cachePath) ? readTargetsCache() : {};
13
14
  const calculatedTargets = {};
@@ -110,20 +111,7 @@ function typecheckTarget(projectRoot, namedInputs) {
110
111
  }
111
112
  async function getServerBuildPath(configFilePath, workspaceRoot) {
112
113
  const configPath = (0, path_1.join)(workspaceRoot, configFilePath);
113
- let appConfig = {};
114
- try {
115
- let appConfigModule;
116
- try {
117
- appConfigModule = await Function(`return import("${configPath}?t=${Date.now()}")`)();
118
- }
119
- catch {
120
- appConfigModule = require(configPath);
121
- }
122
- appConfig = appConfigModule?.default || appConfigModule;
123
- }
124
- catch (error) {
125
- throw new Error(`Error loading Remix config at ${configFilePath}\n${String(error)}`);
126
- }
114
+ let appConfig = await (0, config_utils_1.loadConfigFile)(configPath);
127
115
  return appConfig.serverBuildPath ?? 'build/index.js';
128
116
  }
129
117
  function normalizeOptions(options) {