@nx/remix 20.5.0-beta.2 → 20.5.0-beta.3

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/remix",
3
- "version": "20.5.0-beta.2",
3
+ "version": "20.5.0-beta.3",
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, Playwright, 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",
@@ -29,9 +29,9 @@
29
29
  "migrations": "./migrations.json"
30
30
  },
31
31
  "dependencies": {
32
- "@nx/devkit": "20.5.0-beta.2",
33
- "@nx/js": "20.5.0-beta.2",
34
- "@nx/react": "20.5.0-beta.2",
32
+ "@nx/devkit": "20.5.0-beta.3",
33
+ "@nx/js": "20.5.0-beta.3",
34
+ "@nx/react": "20.5.0-beta.3",
35
35
  "tslib": "^2.3.1",
36
36
  "@phenomnomnominal/tsquery": "~5.0.1"
37
37
  },
@@ -252,7 +252,7 @@ import react from '@vitejs/plugin-react';
252
252
  import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
253
253
  import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
254
254
 
255
- export default defineConfig({
255
+ export default defineConfig(() => ({
256
256
  root: __dirname,
257
257
  cacheDir: '../node_modules/.vite/test',
258
258
  plugins: [react(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
@@ -269,10 +269,10 @@ export default defineConfig({
269
269
  reporters: ['default'],
270
270
  coverage: {
271
271
  reportsDirectory: '../coverage/test',
272
- provider: 'v8',
272
+ provider: 'v8' as const,
273
273
  },
274
274
  },
275
- });
275
+ }));
276
276
  "
277
277
  `;
278
278
 
@@ -429,7 +429,8 @@ installGlobals();
429
429
 
430
430
  exports[`Remix Application Standalone Project Repo --unitTestRunner should generate the correct files for testing using jest 3`] = `
431
431
  "import { createRemixStub } from '@remix-run/testing';
432
- import { render, screen, waitFor } from '@testing-library/react';
432
+ import { render } from '@testing-library/react';
433
+ import { screen } from '@testing-library/dom';
433
434
  import Index from '../../app/routes/_index';
434
435
 
435
436
  test('renders loader data', async () => {
@@ -442,7 +443,7 @@ test('renders loader data', async () => {
442
443
 
443
444
  render(<RemixStub />);
444
445
 
445
- await waitFor(() => screen.findByText('Hello there,'));
446
+ await screen.findByText('Hello there,');
446
447
  });
447
448
  "
448
449
  `;
@@ -454,7 +455,7 @@ import react from '@vitejs/plugin-react';
454
455
  import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
455
456
  import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
456
457
 
457
- export default defineConfig({
458
+ export default defineConfig(() => ({
458
459
  root: __dirname,
459
460
  cacheDir: './node_modules/.vite/test',
460
461
  plugins: [react(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
@@ -471,16 +472,17 @@ export default defineConfig({
471
472
  reporters: ['default'],
472
473
  coverage: {
473
474
  reportsDirectory: './coverage/test',
474
- provider: 'v8',
475
+ provider: 'v8' as const,
475
476
  },
476
477
  },
477
- });
478
+ }));
478
479
  "
479
480
  `;
480
481
 
481
482
  exports[`Remix Application Standalone Project Repo --unitTestRunner should generate the correct files for testing using vitest 2`] = `
482
483
  "import { createRemixStub } from '@remix-run/testing';
483
- import { render, screen, waitFor } from '@testing-library/react';
484
+ import { render } from '@testing-library/react';
485
+ import { screen } from '@testing-library/dom';
484
486
  import Index from '../../app/routes/_index';
485
487
 
486
488
  test('renders loader data', async () => {
@@ -493,7 +495,7 @@ test('renders loader data', async () => {
493
495
 
494
496
  render(<RemixStub />);
495
497
 
496
- await waitFor(() => screen.findByText('Hello there,'));
498
+ await screen.findByText('Hello there,');
497
499
  });
498
500
  "
499
501
  `;
@@ -606,7 +608,8 @@ export default function Index() {
606
608
 
607
609
  exports[`Remix Application Standalone Project Repo should create the application correctly 3`] = `
608
610
  "import { createRemixStub } from '@remix-run/testing';
609
- import { render, screen, waitFor } from '@testing-library/react';
611
+ import { render } from '@testing-library/react';
612
+ import { screen } from '@testing-library/dom';
610
613
  import Index from '../../app/routes/_index';
611
614
 
612
615
  test('renders loader data', async () => {
@@ -619,7 +622,7 @@ test('renders loader data', async () => {
619
622
 
620
623
  render(<RemixStub />);
621
624
 
622
- await waitFor(() => screen.findByText('Hello there,'));
625
+ await screen.findByText('Hello there,');
623
626
  });
624
627
  "
625
628
  `;
@@ -656,7 +659,13 @@ export default defineConfig({
656
659
  exports[`Remix Application Standalone Project Repo should create the application correctly 5`] = `
657
660
  "{
658
661
  "root": true,
659
- "ignorePatterns": ["!**/*", "build", "public/build"],
662
+ "ignorePatterns": [
663
+ "!**/*",
664
+ "build",
665
+ "public/build",
666
+ "**/vite.config.*.timestamp*",
667
+ "**/vitest.config.*.timestamp*"
668
+ ],
660
669
  "plugins": ["@nx"],
661
670
  "overrides": [
662
671
  {
@@ -193,7 +193,7 @@ export default {...nxPreset};
193
193
  }
194
194
  }
195
195
  tasks.push(await (0, lib_1.addE2E)(tree, options));
196
- (0, lib_1.addViteTempFilesToGitIgnore)(tree);
196
+ await (0, lib_1.ignoreViteTempFiles)(tree, options.projectRoot);
197
197
  (0, ts_solution_setup_1.updateTsconfigFiles)(tree, options.projectRoot, 'tsconfig.app.json', {
198
198
  jsx: 'react-jsx',
199
199
  module: 'esnext',
@@ -1,5 +1,6 @@
1
1
  import { createRemixStub } from '@remix-run/testing';
2
- import { render, screen, waitFor } from '@testing-library/react';
2
+ import { render } from '@testing-library/react';
3
+ import { screen } from '@testing-library/dom';
3
4
  import Index from '../../app/routes/_index';
4
5
 
5
6
  test('renders loader data', async () => {
@@ -12,5 +13,5 @@ test('renders loader data', async () => {
12
13
 
13
14
  render(<RemixStub />);
14
15
 
15
- await waitFor(() => screen.findByText('Hello there,'));
16
+ await screen.findByText('Hello there,');
16
17
  });
@@ -0,0 +1,3 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export declare function ignoreViteTempFiles(tree: Tree, projectRoot?: string | undefined): Promise<void>;
3
+ export declare function isEslintInstalled(tree: Tree): boolean;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ignoreViteTempFiles = ignoreViteTempFiles;
4
+ exports.isEslintInstalled = isEslintInstalled;
5
+ const devkit_1 = require("@nx/devkit");
6
+ const versions_1 = require("../../../utils/versions");
7
+ async function ignoreViteTempFiles(tree, projectRoot) {
8
+ addViteTempFilesToGitIgnore(tree);
9
+ await ignoreViteTempFilesInEslintConfig(tree, projectRoot);
10
+ }
11
+ function addViteTempFilesToGitIgnore(tree) {
12
+ let gitIgnoreContents = tree.exists('.gitignore')
13
+ ? tree.read('.gitignore', 'utf-8')
14
+ : '';
15
+ if (!/^vite\.config\.\*\.timestamp\*$/m.test(gitIgnoreContents)) {
16
+ gitIgnoreContents = (0, devkit_1.stripIndents) `${gitIgnoreContents}
17
+ vite.config.*.timestamp*`;
18
+ }
19
+ if (!/^vitest\.config\.\*\.timestamp\*$/m.test(gitIgnoreContents)) {
20
+ gitIgnoreContents = (0, devkit_1.stripIndents) `${gitIgnoreContents}
21
+ vitest.config.*.timestamp*`;
22
+ }
23
+ tree.write('.gitignore', gitIgnoreContents);
24
+ }
25
+ async function ignoreViteTempFilesInEslintConfig(tree, projectRoot) {
26
+ if (!isEslintInstalled(tree)) {
27
+ return;
28
+ }
29
+ (0, devkit_1.ensurePackage)('@nx/eslint', (0, versions_1.getPackageVersion)(tree, 'nx'));
30
+ const { addIgnoresToLintConfig, isEslintConfigSupported } = await Promise.resolve().then(() => require('@nx/eslint/src/generators/utils/eslint-file'));
31
+ if (!isEslintConfigSupported(tree)) {
32
+ return;
33
+ }
34
+ const { useFlatConfig } = await Promise.resolve().then(() => require('@nx/eslint/src/utils/flat-config'));
35
+ const isUsingFlatConfig = useFlatConfig(tree);
36
+ if (!projectRoot && !isUsingFlatConfig) {
37
+ // root eslintrc files ignore all files and the root eslintrc files add
38
+ // back all the project files, so we only add the ignores to the project
39
+ // eslintrc files
40
+ return;
41
+ }
42
+ // for flat config, we update the root config file
43
+ const directory = isUsingFlatConfig ? '' : projectRoot ?? '';
44
+ addIgnoresToLintConfig(tree, directory, [
45
+ '**/vite.config.*.timestamp*',
46
+ '**/vitest.config.*.timestamp*',
47
+ ]);
48
+ }
49
+ function isEslintInstalled(tree) {
50
+ try {
51
+ require('eslint');
52
+ return true;
53
+ }
54
+ catch { }
55
+ // it might not be installed yet, but it might be in the tree pending install
56
+ const { devDependencies, dependencies } = tree.exists('package.json')
57
+ ? (0, devkit_1.readJson)(tree, 'package.json')
58
+ : {};
59
+ return !!devDependencies?.['eslint'] || !!dependencies?.['eslint'];
60
+ }
@@ -1,4 +1,4 @@
1
1
  export * from './normalize-options';
2
2
  export * from './update-unit-test-config';
3
3
  export * from './add-e2e';
4
- export * from './add-vite-temp-files-to-gitignore';
4
+ export * from './ignore-vite-temp-files';
@@ -4,4 +4,4 @@ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./normalize-options"), exports);
5
5
  tslib_1.__exportStar(require("./update-unit-test-config"), exports);
6
6
  tslib_1.__exportStar(require("./add-e2e"), exports);
7
- tslib_1.__exportStar(require("./add-vite-temp-files-to-gitignore"), exports);
7
+ tslib_1.__exportStar(require("./ignore-vite-temp-files"), exports);
@@ -46,6 +46,7 @@ function updateUnitTestConfig(tree, pathToRoot, unitTestRunner, rootProject) {
46
46
  });
47
47
  return (0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
48
48
  '@testing-library/jest-dom': versions_1.testingLibraryJestDomVersion,
49
+ '@testing-library/dom': versions_1.testingLibraryDomVersion,
49
50
  '@testing-library/react': versions_1.testingLibraryReactVersion,
50
51
  '@testing-library/user-event': versions_1.testingLibraryUserEventsVersion,
51
52
  '@remix-run/node': (0, versions_1.getRemixVersion)(tree),
@@ -28,7 +28,7 @@ import react from '@vitejs/plugin-react';
28
28
  import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
29
29
  import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
30
30
 
31
- export default defineConfig({
31
+ export default defineConfig(() => ({
32
32
  root: __dirname,
33
33
  cacheDir: '../node_modules/.vite/test',
34
34
  plugins: [react(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
@@ -43,9 +43,12 @@ export default defineConfig({
43
43
  environment: 'jsdom',
44
44
  include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
45
45
  reporters: ['default'],
46
- coverage: { reportsDirectory: '../coverage/test', provider: 'v8' },
46
+ coverage: {
47
+ reportsDirectory: '../coverage/test',
48
+ provider: 'v8' as const,
49
+ },
47
50
  },
48
- });
51
+ }));
49
52
  "
50
53
  `;
51
54
 
@@ -92,7 +92,7 @@ import react from '@vitejs/plugin-react';
92
92
  import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
93
93
  import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
94
94
 
95
- export default defineConfig({
95
+ export default defineConfig(() => ({
96
96
  root: __dirname,
97
97
  cacheDir: '../../node_modules/.vite/libs/storybook-test',
98
98
  plugins: [react(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
@@ -109,10 +109,10 @@ export default defineConfig({
109
109
  reporters: ['default'],
110
110
  coverage: {
111
111
  reportsDirectory: '../../coverage/libs/storybook-test',
112
- provider: 'v8',
112
+ provider: 'v8' as const,
113
113
  },
114
114
  },
115
- });
115
+ }));
116
116
  "
117
117
  `;
118
118
 
@@ -13,6 +13,7 @@ export declare const postcssVersion = "^8.4.38";
13
13
  export declare const autoprefixerVersion = "^10.4.19";
14
14
  export declare const testingLibraryReactVersion = "^14.1.2";
15
15
  export declare const testingLibraryJestDomVersion = "6.4.2";
16
+ export declare const testingLibraryDomVersion = "^10.4.0";
16
17
  export declare const testingLibraryUserEventsVersion = "^14.5.2";
17
18
  export declare const viteVersion = "^5.0.0";
18
19
  export declare function getRemixVersion(tree: Tree): string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.viteVersion = exports.testingLibraryUserEventsVersion = exports.testingLibraryJestDomVersion = exports.testingLibraryReactVersion = exports.autoprefixerVersion = exports.postcssVersion = exports.tailwindVersion = exports.typescriptVersion = exports.eslintVersion = exports.typesReactDomVersion = exports.typesReactVersion = exports.reactDomVersion = exports.reactVersion = exports.isbotVersion = exports.remixVersion = exports.nxVersion = void 0;
3
+ exports.viteVersion = exports.testingLibraryUserEventsVersion = exports.testingLibraryDomVersion = exports.testingLibraryJestDomVersion = exports.testingLibraryReactVersion = exports.autoprefixerVersion = exports.postcssVersion = exports.tailwindVersion = exports.typescriptVersion = exports.eslintVersion = exports.typesReactDomVersion = exports.typesReactVersion = exports.reactDomVersion = exports.reactVersion = exports.isbotVersion = exports.remixVersion = exports.nxVersion = void 0;
4
4
  exports.getRemixVersion = getRemixVersion;
5
5
  exports.getPackageVersion = getPackageVersion;
6
6
  const devkit_1 = require("@nx/devkit");
@@ -19,6 +19,7 @@ exports.autoprefixerVersion = '^10.4.19';
19
19
  exports.testingLibraryReactVersion = '^14.1.2';
20
20
  // TODO(colum): Unpin this when @testing-library/jest-dom pushes a fix
21
21
  exports.testingLibraryJestDomVersion = '6.4.2';
22
+ exports.testingLibraryDomVersion = '^10.4.0';
22
23
  exports.testingLibraryUserEventsVersion = '^14.5.2';
23
24
  exports.viteVersion = '^5.0.0';
24
25
  function getRemixVersion(tree) {
@@ -1,2 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export declare function addViteTempFilesToGitIgnore(tree: Tree): void;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addViteTempFilesToGitIgnore = addViteTempFilesToGitIgnore;
4
- const devkit_1 = require("@nx/devkit");
5
- function addViteTempFilesToGitIgnore(tree) {
6
- let newGitIgnoreContents = `vite.config.*.timestamp*`;
7
- if (tree.exists('.gitignore')) {
8
- const gitIgnoreContents = tree.read('.gitignore', 'utf-8');
9
- if (!gitIgnoreContents.includes(newGitIgnoreContents)) {
10
- newGitIgnoreContents = (0, devkit_1.stripIndents) `${gitIgnoreContents}
11
- ${newGitIgnoreContents}`;
12
- tree.write('.gitignore', newGitIgnoreContents);
13
- }
14
- }
15
- else {
16
- tree.write('.gitignore', newGitIgnoreContents);
17
- }
18
- }