@nx/next 16.3.0-beta.4 → 16.3.0-beta.5
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/next",
|
|
3
|
-
"version": "16.3.0-beta.
|
|
3
|
+
"version": "16.3.0-beta.5",
|
|
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": {
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@babel/plugin-proposal-decorators": "^7.14.5",
|
|
38
|
-
"@nrwl/next": "16.3.0-beta.
|
|
39
|
-
"@nx/devkit": "16.3.0-beta.
|
|
40
|
-
"@nx/js": "16.3.0-beta.
|
|
41
|
-
"@nx/linter": "16.3.0-beta.
|
|
42
|
-
"@nx/react": "16.3.0-beta.
|
|
43
|
-
"@nx/workspace": "16.3.0-beta.
|
|
38
|
+
"@nrwl/next": "16.3.0-beta.5",
|
|
39
|
+
"@nx/devkit": "16.3.0-beta.5",
|
|
40
|
+
"@nx/js": "16.3.0-beta.5",
|
|
41
|
+
"@nx/linter": "16.3.0-beta.5",
|
|
42
|
+
"@nx/react": "16.3.0-beta.5",
|
|
43
|
+
"@nx/workspace": "16.3.0-beta.5",
|
|
44
44
|
"@svgr/webpack": "^6.1.2",
|
|
45
45
|
"chalk": "^4.1.0",
|
|
46
46
|
"copy-webpack-plugin": "^10.2.4",
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
62
|
"types": "./index.d.ts",
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "11bb99316d977adfc3e0599076a73461ec8c48a1"
|
|
64
64
|
}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { ExecutorContext } from '@nx/devkit';
|
|
2
2
|
import type { NextBuildBuilderOptions } from '../../../utils/types';
|
|
3
3
|
export declare function createNextConfigFile(options: NextBuildBuilderOptions, context: ExecutorContext): void;
|
|
4
|
-
export declare function getWithNxContent({
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export declare function getWithNxContent({ file, content }?: {
|
|
5
|
+
file: string;
|
|
6
|
+
content: string;
|
|
7
7
|
}): string;
|
|
8
|
+
export declare function findNextConfigPath(dirname: string, userDefinedConfigPath?: string): string;
|
|
9
|
+
export declare function getRelativeFilesToCopy(fileName: string, cwd: string): string[];
|
|
10
|
+
export declare function getRelativeImports({ file, content, }: {
|
|
11
|
+
file: string;
|
|
12
|
+
content: string;
|
|
13
|
+
}): string[];
|
|
14
|
+
export declare function ensureFileExtensions(files: string[], absoluteDir: string): string[];
|
|
@@ -1,51 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getWithNxContent = exports.createNextConfigFile = void 0;
|
|
3
|
+
exports.ensureFileExtensions = exports.getRelativeImports = exports.getRelativeFilesToCopy = exports.findNextConfigPath = exports.getWithNxContent = exports.createNextConfigFile = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const ts = require("typescript");
|
|
6
|
-
const
|
|
6
|
+
const fs_extra_1 = require("fs-extra");
|
|
7
7
|
const path_1 = require("path");
|
|
8
8
|
const typescript_1 = require("nx/src/utils/typescript");
|
|
9
9
|
function createNextConfigFile(options, context) {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const configRelativeToProjectRoot = findNextConfigPath(options.root,
|
|
11
|
+
// If user passed a config then it is relative to the workspace root, need to normalize it to be relative to the project root.
|
|
12
|
+
options.nextConfig ? (0, path_1.relative)(options.root, options.nextConfig) : undefined);
|
|
13
|
+
const configAbsolutePath = (0, path_1.join)(options.root, configRelativeToProjectRoot);
|
|
14
|
+
if (!(0, fs_extra_1.existsSync)(configAbsolutePath)) {
|
|
15
|
+
throw new Error('next.config.js not found');
|
|
16
|
+
}
|
|
13
17
|
// Copy config file and our `.nx-helpers` folder to remove dependency on @nrwl/next for production build.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
(0, fs_1.writeFileSync)((0, path_1.join)(helpersPath, 'compiled.js'), `
|
|
18
|
+
const helpersPath = (0, path_1.join)(options.outputPath, '.nx-helpers');
|
|
19
|
+
(0, fs_extra_1.mkdirSync)(helpersPath, { recursive: true });
|
|
20
|
+
(0, fs_extra_1.copyFileSync)((0, path_1.join)(__dirname, '../../../utils/compose-plugins.js'), (0, path_1.join)(helpersPath, 'compose-plugins.js'));
|
|
21
|
+
(0, fs_extra_1.writeFileSync)((0, path_1.join)(helpersPath, 'with-nx.js'), getWithNxContent());
|
|
22
|
+
(0, fs_extra_1.writeFileSync)((0, path_1.join)(helpersPath, 'compiled.js'), `
|
|
20
23
|
const withNx = require('./with-nx');
|
|
21
24
|
module.exports = withNx;
|
|
22
25
|
module.exports.withNx = withNx;
|
|
23
26
|
module.exports.composePlugins = require('./compose-plugins').composePlugins;
|
|
24
27
|
`);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
(0, fs_extra_1.writeFileSync)((0, path_1.join)(options.outputPath, configRelativeToProjectRoot), (0, fs_extra_1.readFileSync)(configAbsolutePath)
|
|
29
|
+
.toString()
|
|
30
|
+
.replace(/["']@nx\/next["']/, `'./.nx-helpers/compiled.js'`)
|
|
31
|
+
// TODO(v17): Remove this once users have all migrated to new @nx scope and import from '@nx/next' not the deep import paths.
|
|
32
|
+
.replace('@nx/next/plugins/with-nx', './.nx-helpers/compiled.js')
|
|
33
|
+
.replace('@nrwl/next/plugins/with-nx', './.nx-helpers/compiled.js'));
|
|
34
|
+
// Find all relative imports needed by next.config.js and copy them to the dist folder.
|
|
35
|
+
const moduleFilesToCopy = getRelativeFilesToCopy(configRelativeToProjectRoot, options.root);
|
|
36
|
+
for (const moduleFile of moduleFilesToCopy) {
|
|
37
|
+
(0, fs_extra_1.ensureDirSync)((0, path_1.dirname)((0, path_1.join)(context.root, options.outputPath, moduleFile)));
|
|
38
|
+
(0, fs_extra_1.copyFileSync)((0, path_1.join)(context.root, options.root, moduleFile), (0, path_1.join)(context.root, options.outputPath, moduleFile));
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
41
|
exports.createNextConfigFile = createNextConfigFile;
|
|
34
|
-
function readSource() {
|
|
35
|
-
const withNxFile = (0, path_1.join)(__dirname, '../../../../plugins/with-nx.js');
|
|
36
|
-
const withNxContent = (0, fs_1.readFileSync)(withNxFile).toString();
|
|
42
|
+
function readSource(getFile) {
|
|
37
43
|
return {
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
file: getFile(),
|
|
45
|
+
content: (0, fs_extra_1.readFileSync)(getFile()).toString(),
|
|
40
46
|
};
|
|
41
47
|
}
|
|
42
48
|
// Exported for testing
|
|
43
|
-
function getWithNxContent({
|
|
49
|
+
function getWithNxContent({ file, content } = readSource(() => (0, path_1.join)(__dirname, '../../../../plugins/with-nx.js'))) {
|
|
44
50
|
var _a;
|
|
45
|
-
const withNxSource = ts.createSourceFile(
|
|
51
|
+
const withNxSource = ts.createSourceFile(file, content, ts.ScriptTarget.Latest, true);
|
|
46
52
|
const getWithNxContextDeclaration = (_a = (0, typescript_1.findNodes)(withNxSource, ts.SyntaxKind.FunctionDeclaration)) === null || _a === void 0 ? void 0 : _a.find((node) => { var _a; return ((_a = node.name) === null || _a === void 0 ? void 0 : _a.text) === 'getWithNxContext'; });
|
|
47
53
|
if (getWithNxContextDeclaration) {
|
|
48
|
-
|
|
54
|
+
content = (0, devkit_1.applyChangesToString)(content, [
|
|
49
55
|
{
|
|
50
56
|
type: devkit_1.ChangeType.Delete,
|
|
51
57
|
start: getWithNxContextDeclaration.getStart(withNxSource),
|
|
@@ -63,7 +69,87 @@ function getWithNxContent({ withNxFile, withNxContent } = readSource()) {
|
|
|
63
69
|
},
|
|
64
70
|
]);
|
|
65
71
|
}
|
|
66
|
-
return
|
|
72
|
+
return content;
|
|
67
73
|
}
|
|
68
74
|
exports.getWithNxContent = getWithNxContent;
|
|
75
|
+
function findNextConfigPath(dirname, userDefinedConfigPath) {
|
|
76
|
+
if (userDefinedConfigPath) {
|
|
77
|
+
const file = userDefinedConfigPath;
|
|
78
|
+
if ((0, fs_extra_1.existsSync)(file))
|
|
79
|
+
return file;
|
|
80
|
+
throw new Error(`Cannot find the Next.js config file: ${userDefinedConfigPath}. Is the path correct in project.json?`);
|
|
81
|
+
}
|
|
82
|
+
const candidates = ['next.config.js', 'next.config.cjs', 'next.config.mjs'];
|
|
83
|
+
for (const candidate of candidates) {
|
|
84
|
+
if ((0, fs_extra_1.existsSync)((0, path_1.join)(dirname, candidate)))
|
|
85
|
+
return candidate;
|
|
86
|
+
}
|
|
87
|
+
throw new Error(`Cannot find any of the following files in your project: ${candidates.join(', ')}. Is this a Next.js project?`);
|
|
88
|
+
}
|
|
89
|
+
exports.findNextConfigPath = findNextConfigPath;
|
|
90
|
+
// Exported for testing
|
|
91
|
+
function getRelativeFilesToCopy(fileName, cwd) {
|
|
92
|
+
const seen = new Set();
|
|
93
|
+
const collected = new Set();
|
|
94
|
+
function doCollect(currFile) {
|
|
95
|
+
// Prevent circular dependencies from causing infinite loop
|
|
96
|
+
if (seen.has(currFile))
|
|
97
|
+
return;
|
|
98
|
+
seen.add(currFile);
|
|
99
|
+
const absoluteFilePath = (0, path_1.join)(cwd, currFile);
|
|
100
|
+
const content = (0, fs_extra_1.readFileSync)(absoluteFilePath).toString();
|
|
101
|
+
const files = getRelativeImports({ file: currFile, content });
|
|
102
|
+
const modules = ensureFileExtensions(files, (0, path_1.dirname)(absoluteFilePath));
|
|
103
|
+
const relativeDirPath = (0, path_1.dirname)(currFile);
|
|
104
|
+
for (const moduleName of modules) {
|
|
105
|
+
const relativeModulePath = (0, path_1.join)(relativeDirPath, moduleName);
|
|
106
|
+
collected.add(relativeModulePath);
|
|
107
|
+
doCollect(relativeModulePath);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
doCollect(fileName);
|
|
111
|
+
return Array.from(collected);
|
|
112
|
+
}
|
|
113
|
+
exports.getRelativeFilesToCopy = getRelativeFilesToCopy;
|
|
114
|
+
// Exported for testing
|
|
115
|
+
function getRelativeImports({ file, content, }) {
|
|
116
|
+
const source = ts.createSourceFile(file, content, ts.ScriptTarget.Latest, true);
|
|
117
|
+
const callExpressionsOrImportDeclarations = (0, typescript_1.findNodes)(source, [
|
|
118
|
+
ts.SyntaxKind.CallExpression,
|
|
119
|
+
ts.SyntaxKind.ImportDeclaration,
|
|
120
|
+
]);
|
|
121
|
+
const modulePaths = [];
|
|
122
|
+
for (const node of callExpressionsOrImportDeclarations) {
|
|
123
|
+
if (node.kind === ts.SyntaxKind.ImportDeclaration) {
|
|
124
|
+
modulePaths.push(stripOuterQuotes(node.moduleSpecifier.getText(source)));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
if (node.expression.getText(source) === 'require') {
|
|
128
|
+
modulePaths.push(stripOuterQuotes(node.arguments[0].getText(source)));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return modulePaths.filter((path) => path.startsWith('.'));
|
|
133
|
+
}
|
|
134
|
+
exports.getRelativeImports = getRelativeImports;
|
|
135
|
+
function stripOuterQuotes(str) {
|
|
136
|
+
var _a, _b;
|
|
137
|
+
return (_b = (_a = str.match(/^["'](.*)["']/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : str;
|
|
138
|
+
}
|
|
139
|
+
// Exported for testing
|
|
140
|
+
function ensureFileExtensions(files, absoluteDir) {
|
|
141
|
+
const extensions = ['.js', '.cjs', '.mjs'];
|
|
142
|
+
return files.map((file) => {
|
|
143
|
+
if ((0, path_1.extname)(file))
|
|
144
|
+
return file;
|
|
145
|
+
const ext = extensions.find((ext) => (0, fs_extra_1.existsSync)((0, path_1.join)(absoluteDir, file + ext)));
|
|
146
|
+
if (ext) {
|
|
147
|
+
return file + ext;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
throw new Error(`Cannot find file "${file}" with any of the following extensions: ${extensions.join(', ')}`);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
exports.ensureFileExtensions = ensureFileExtensions;
|
|
69
155
|
//# sourceMappingURL=create-next-config-file.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-next-config-file.js","sourceRoot":"","sources":["../../../../../../../packages/next/src/executors/build/lib/create-next-config-file.ts"],"names":[],"mappings":";;;AACA,uCAMoB;AACpB,iCAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"create-next-config-file.js","sourceRoot":"","sources":["../../../../../../../packages/next/src/executors/build/lib/create-next-config-file.ts"],"names":[],"mappings":"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"}
|