@nx/next 18.1.0-beta.2 → 18.1.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 +9 -9
- package/plugins/with-nx.js +13 -13
- package/src/executors/server/server.impl.js +1 -1
- package/src/generators/application/files/app/page.tsx__tmpl__ +1 -1
- package/src/generators/application/files/common/specs/__fileName__.spec.tsx__tmpl__ +9 -4
- package/src/generators/application/lib/create-application-files.js +3 -2
- package/src/generators/application/lib/normalize-options.js +4 -1
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js +1 -0
- package/src/generators/init/init.js +4 -1
- package/src/generators/library/lib/normalize-options.js +5 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/next",
|
|
3
|
-
"version": "18.1.0-beta.
|
|
3
|
+
"version": "18.1.0-beta.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Next.js plugin for Nx contains executors and generators for managing Next.js applications and libraries within an Nx workspace. It provides:\n\n\n- Scaffolding for creating, building, serving, linting, and testing Next.js applications.\n\n- Integration with building, serving, and exporting a Next.js application.\n\n- Integration with React libraries within the workspace. \n\nWhen using Next.js in Nx, you get the out-of-the-box support for TypeScript, Cypress, and Jest. No need to configure anything: watch mode, source maps, and typings just work.",
|
|
6
6
|
"repository": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"next": ">=14.0.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@nx/devkit": "18.1.0-beta.
|
|
37
|
+
"@nx/devkit": "18.1.0-beta.4",
|
|
38
38
|
"@babel/plugin-proposal-decorators": "^7.22.7",
|
|
39
39
|
"@svgr/webpack": "^8.0.1",
|
|
40
40
|
"chalk": "^4.1.0",
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"url-loader": "^4.1.1",
|
|
46
46
|
"tslib": "^2.3.0",
|
|
47
47
|
"webpack-merge": "^5.8.0",
|
|
48
|
-
"@nx/js": "18.1.0-beta.
|
|
49
|
-
"@nx/eslint": "18.1.0-beta.
|
|
50
|
-
"@nx/react": "18.1.0-beta.
|
|
51
|
-
"@nx/web": "18.1.0-beta.
|
|
52
|
-
"@nx/webpack": "18.1.0-beta.
|
|
53
|
-
"@nx/workspace": "18.1.0-beta.
|
|
54
|
-
"@nrwl/next": "18.1.0-beta.
|
|
48
|
+
"@nx/js": "18.1.0-beta.4",
|
|
49
|
+
"@nx/eslint": "18.1.0-beta.4",
|
|
50
|
+
"@nx/react": "18.1.0-beta.4",
|
|
51
|
+
"@nx/web": "18.1.0-beta.4",
|
|
52
|
+
"@nx/webpack": "18.1.0-beta.4",
|
|
53
|
+
"@nx/workspace": "18.1.0-beta.4",
|
|
54
|
+
"@nrwl/next": "18.1.0-beta.4"
|
|
55
55
|
},
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
package/plugins/with-nx.js
CHANGED
|
@@ -59,10 +59,12 @@ function getNxContext(graph, target) {
|
|
|
59
59
|
function withNx(_nextConfig = {}, context = getWithNxContext()) {
|
|
60
60
|
return async (phase) => {
|
|
61
61
|
const { PHASE_PRODUCTION_SERVER, PHASE_DEVELOPMENT_SERVER } = await Promise.resolve().then(() => require('next/constants'));
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
// Two scenarios where we want to skip graph creation:
|
|
63
|
+
// 1. Running production server means the build is already done so we just need to start the Next.js server.
|
|
64
|
+
// 2. During graph creation (i.e. create nodes), we won't have a graph to read, and it is not needed anyway since it's a build-time concern.
|
|
65
|
+
//
|
|
66
|
+
// NOTE: Avoid any `require(...)` or `import(...)` statements here. Development dependencies are not available at production runtime.
|
|
67
|
+
if (PHASE_PRODUCTION_SERVER === phase || global.NX_GRAPH_CREATION) {
|
|
66
68
|
const { nx, ...validNextConfig } = _nextConfig;
|
|
67
69
|
return {
|
|
68
70
|
distDir: '.next',
|
|
@@ -70,15 +72,13 @@ function withNx(_nextConfig = {}, context = getWithNxContext()) {
|
|
|
70
72
|
};
|
|
71
73
|
}
|
|
72
74
|
else {
|
|
73
|
-
const { createProjectGraphAsync,
|
|
74
|
-
let graph
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
throw new Error('Could not create project graph. Please ensure that your workspace is valid.');
|
|
81
|
-
}
|
|
75
|
+
const { createProjectGraphAsync, joinPathFragments, offsetFromRoot, workspaceRoot, } = require('@nx/devkit');
|
|
76
|
+
let graph;
|
|
77
|
+
try {
|
|
78
|
+
graph = await createProjectGraphAsync();
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
throw new Error('Could not create project graph. Please ensure that your workspace is valid.', { cause: e });
|
|
82
82
|
}
|
|
83
83
|
const originalTarget = {
|
|
84
84
|
project: process.env.NX_TASK_TARGET_PROJECT,
|
|
@@ -11,7 +11,7 @@ async function* serveExecutor(options, context) {
|
|
|
11
11
|
const buildOptions = (0, devkit_1.readTargetOptions)((0, devkit_1.parseTargetString)(options.buildTarget, context), context);
|
|
12
12
|
const projectRoot = context.workspace.projects[context.projectName].root;
|
|
13
13
|
// This is required for the default custom server to work. See the @nx/next:app generator.
|
|
14
|
-
const nextDir = (0, path_1.resolve)(context.root, buildOptions.outputPath);
|
|
14
|
+
const nextDir = !options.dev && (0, path_1.resolve)(context.root, buildOptions.outputPath);
|
|
15
15
|
process.env.NX_NEXT_DIR ??= options.dev ? projectRoot : nextDir;
|
|
16
16
|
if (options.customServerTarget) {
|
|
17
17
|
return yield* (0, custom_server_impl_1.default)(options, context);
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
|
-
<% if (src) { %>
|
|
3
|
+
<% if (src && !appDir) { %>
|
|
4
4
|
import Index from '../src/pages/index';
|
|
5
|
-
<% } else { %>
|
|
5
|
+
<% } else if (!appDir) { %>
|
|
6
6
|
import Index from '../pages/index';
|
|
7
|
+
<% } else if (appDir && src) {%>
|
|
8
|
+
import Page from '../src/app/page';
|
|
9
|
+
<% } else { %>
|
|
10
|
+
import Page from '../app/page';
|
|
7
11
|
<% } %>
|
|
8
|
-
|
|
12
|
+
|
|
13
|
+
describe(<%- appDir ? `'Page'` : `'Index'` %>, () => {
|
|
9
14
|
it('should render successfully', () => {
|
|
10
|
-
const { baseElement } = render(
|
|
15
|
+
const { baseElement } = render(<%- appDir ? `<Page />` : `<Index />` %>);
|
|
11
16
|
expect(baseElement).toBeTruthy();
|
|
12
17
|
});
|
|
13
18
|
});
|
|
@@ -38,8 +38,9 @@ function createApplicationFiles(host, options) {
|
|
|
38
38
|
(0, devkit_1.generateFiles)(host, (0, path_1.join)(__dirname, '../files/common'), options.appProjectRoot, templateVariables);
|
|
39
39
|
if (options.appDir) {
|
|
40
40
|
(0, devkit_1.generateFiles)(host, (0, path_1.join)(__dirname, '../files/app'), (0, path_1.join)(generatedAppFilePath, 'app'), templateVariables);
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
if (options.unitTestRunner === 'none') {
|
|
42
|
+
host.delete((0, devkit_1.joinPathFragments)(options.appProjectRoot, 'specs', `index.spec.${options.js ? 'jsx' : 'tsx'}`));
|
|
43
|
+
}
|
|
43
44
|
if (options.style === 'styled-components') {
|
|
44
45
|
(0, devkit_1.generateFiles)(host, (0, path_1.join)(__dirname, '../files/app-styled-components'), (0, path_1.join)(generatedAppFilePath, 'app'), templateVariables);
|
|
45
46
|
}
|
|
@@ -16,7 +16,10 @@ async function normalizeOptions(host, options) {
|
|
|
16
16
|
});
|
|
17
17
|
options.rootProject = appProjectRoot === '.';
|
|
18
18
|
options.projectNameAndRootFormat = projectNameAndRootFormat;
|
|
19
|
-
|
|
19
|
+
const nxJson = (0, devkit_1.readNxJson)(host);
|
|
20
|
+
const addPlugin = process.env.NX_ADD_PLUGINS !== 'false' &&
|
|
21
|
+
nxJson.useInferencePlugins !== false;
|
|
22
|
+
options.addPlugin ??= addPlugin;
|
|
20
23
|
const e2eProjectName = options.rootProject ? 'e2e' : `${appProjectName}-e2e`;
|
|
21
24
|
const e2eProjectRoot = options.rootProject ? 'e2e' : `${appProjectRoot}-e2e`;
|
|
22
25
|
const name = (0, devkit_1.names)(options.name).fileName;
|
|
@@ -24,7 +24,10 @@ function nextInitGenerator(tree, schema) {
|
|
|
24
24
|
}
|
|
25
25
|
exports.nextInitGenerator = nextInitGenerator;
|
|
26
26
|
async function nextInitGeneratorInternal(host, schema) {
|
|
27
|
-
|
|
27
|
+
const nxJson = (0, devkit_1.readNxJson)(host);
|
|
28
|
+
const addPluginDefault = process.env.NX_ADD_PLUGINS !== 'false' &&
|
|
29
|
+
nxJson.useInferencePlugins !== false;
|
|
30
|
+
schema.addPlugin ??= addPluginDefault;
|
|
28
31
|
if (schema.addPlugin) {
|
|
29
32
|
(0, add_plugin_1.addPlugin)(host);
|
|
30
33
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeOptions = void 0;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
4
5
|
const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
|
|
5
6
|
async function normalizeOptions(host, options) {
|
|
6
7
|
const { projectRoot, importPath, projectNameAndRootFormat } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
|
|
@@ -12,7 +13,10 @@ async function normalizeOptions(host, options) {
|
|
|
12
13
|
callingGenerator: '@nx/next:library',
|
|
13
14
|
});
|
|
14
15
|
options.projectNameAndRootFormat = projectNameAndRootFormat;
|
|
15
|
-
|
|
16
|
+
const nxJson = (0, devkit_1.readNxJson)(host);
|
|
17
|
+
const addPlugin = process.env.NX_ADD_PLUGINS !== 'false' &&
|
|
18
|
+
nxJson.useInferencePlugins !== false;
|
|
19
|
+
options.addPlugin ??= addPlugin;
|
|
16
20
|
return {
|
|
17
21
|
...options,
|
|
18
22
|
importPath,
|