@nx/next 16.3.0-beta.0 → 16.3.0-beta.11

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.0",
3
+ "version": "16.3.0-beta.11",
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,13 +35,14 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@babel/plugin-proposal-decorators": "^7.14.5",
38
- "@nrwl/next": "16.3.0-beta.0",
39
- "@nx/devkit": "16.3.0-beta.0",
40
- "@nx/js": "16.3.0-beta.0",
41
- "@nx/linter": "16.3.0-beta.0",
42
- "@nx/react": "16.3.0-beta.0",
43
- "@nx/workspace": "16.3.0-beta.0",
44
- "@svgr/webpack": "^6.1.2",
38
+ "@nrwl/next": "16.3.0-beta.11",
39
+ "@nx/devkit": "16.3.0-beta.11",
40
+ "@nx/js": "16.3.0-beta.11",
41
+ "@nx/linter": "16.3.0-beta.11",
42
+ "@nx/react": "16.3.0-beta.11",
43
+ "@nx/web": "16.3.0-beta.11",
44
+ "@nx/workspace": "16.3.0-beta.11",
45
+ "@svgr/webpack": "^8.0.1",
45
46
  "chalk": "^4.1.0",
46
47
  "copy-webpack-plugin": "^10.2.4",
47
48
  "dotenv": "~10.0.0",
@@ -60,5 +61,5 @@
60
61
  "access": "public"
61
62
  },
62
63
  "types": "./index.d.ts",
63
- "gitHead": "74c5ad330622238c7f80df55454e9dbdc792cb22"
64
+ "gitHead": "6b9d24c7b65961c10ba21f1e62ffe06477d02394"
64
65
  }
@@ -36,7 +36,7 @@ function buildExecutor(options, context) {
36
36
  }
37
37
  const { experimentalAppOnly, profile, debug } = options;
38
38
  const args = (0, create_cli_options_1.createCliOptions)({ experimentalAppOnly, profile, debug });
39
- const command = `npx next build ${args}`;
39
+ const command = `npx next build ${args.join(' ')}`;
40
40
  const execSyncOptions = {
41
41
  stdio: 'inherit',
42
42
  encoding: 'utf-8',
@@ -1 +1 @@
1
- {"version":3,"file":"build.impl.js","sourceRoot":"","sources":["../../../../../../packages/next/src/executors/build/build.impl.ts"],"names":[],"mappings":";;;AAAA,yBAAuB;AACvB,uCAMoB;AACpB,+BAA4E;AAC5E,+BAAqC;AACrC,uCAAsE;AACtE,mCAAiC;AACjC,qEAAwE;AACxE,wDAAsE;AAEtE,mEAA8D;AAC9D,2EAAqE;AACrE,uDAA2D;AAE3D,iDAA0D;AAC1D,uEAAkE;AAElE,SAA8B,aAAa,CACzC,OAAgC,EAChC,OAAwB;;;;QAExB,oCAAoC;QACpC,MAAC,OAAO,CAAC,GAAW,EAAC,QAAQ,QAAR,QAAQ,GAAK,YAAY,EAAC;QAE/C,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAA,oCAAoB,EAAC,IAAI,CAAC,CAAC;QAE3B,8DAA8D;QAC9D,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,IAAA,qBAAU,EAAC,eAAe,CAAC;YAC7C,CAAC,CAAC,IAAA,qBAAY,EAAC,eAAe,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,eAAe,GAAG,IAAA,qBAAY,EAAC,IAAA,WAAI,EAAC,sBAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1E,MAAM,eAAe,GACnB,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,0CAAG,WAAW,CAAC,mCACxC,MAAA,eAAe,CAAC,YAAY,0CAAG,WAAW,CAAC,CAAC;QAC9C,MAAM,UAAU,GACd,eAAe;YACf,IAAA,YAAG,EAAC,IAAA,gCAAuB,EAAC,WAAW,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,UAAU,EAAE;YACd,MAAA,OAAO,CAAC,GAAG,EAAC,mBAAmB,SAAnB,mBAAmB,IAAM,MAAM,EAAC;SAC7C;QAED,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAExD,MAAM,IAAI,GAAG,IAAA,qCAAgB,EAAC,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,kBAAkB,IAAI,EAAE,CAAC;QACzC,MAAM,eAAe,GAAoB;YACvC,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,OAAO;YACjB,GAAG,EAAE,IAAI;SACV,CAAC;QACF,IAAI;YACF,IAAA,wBAAQ,EAAC,OAAO,EAAE,eAAe,CAAC,CAAC;SACpC;QAAC,OAAO,KAAK,EAAE;YACd,eAAM,CAAC,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;YAClE,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,IAAA,2BAAe,EAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACxC,IAAA,gBAAK,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAC3B;QAED,MAAM,gBAAgB,GAAG,IAAA,sBAAiB,EACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;YACE,MAAM,EAAE,OAAO,CAAC,UAAU;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,YAAY,EAAE,CAAC,OAAO,CAAC,mCAAmC,EAAE,yEAAyE;SACtI,CACF,CAAC;QACF,IAAA,uCAAiB,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAA,sBAAa,EAAC,GAAG,OAAO,CAAC,UAAU,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAA,mBAAc,EAAC,gBAAgB,CAAC,CAAC;YAClD,IAAA,wBAAa,EAAC,GAAG,OAAO,CAAC,UAAU,IAAI,IAAA,oBAAe,GAAE,EAAE,EAAE,QAAQ,EAAE;gBACpE,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;SACJ;QAED,IAAA,8CAAoB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvC,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;YACjE,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;CAC1B;AA1ED,gCA0EC"}
1
+ {"version":3,"file":"build.impl.js","sourceRoot":"","sources":["../../../../../../packages/next/src/executors/build/build.impl.ts"],"names":[],"mappings":";;;AAAA,yBAAuB;AACvB,uCAMoB;AACpB,+BAA4E;AAC5E,+BAAqC;AACrC,uCAAsE;AACtE,mCAAiC;AACjC,qEAAwE;AACxE,wDAAsE;AAEtE,mEAA8D;AAC9D,2EAAqE;AACrE,uDAA2D;AAE3D,iDAA0D;AAC1D,uEAAkE;AAElE,SAA8B,aAAa,CACzC,OAAgC,EAChC,OAAwB;;;;QAExB,oCAAoC;QACpC,MAAC,OAAO,CAAC,GAAW,EAAC,QAAQ,QAAR,QAAQ,GAAK,YAAY,EAAC;QAE/C,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAA,oCAAoB,EAAC,IAAI,CAAC,CAAC;QAE3B,8DAA8D;QAC9D,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,IAAA,qBAAU,EAAC,eAAe,CAAC;YAC7C,CAAC,CAAC,IAAA,qBAAY,EAAC,eAAe,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,eAAe,GAAG,IAAA,qBAAY,EAAC,IAAA,WAAI,EAAC,sBAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1E,MAAM,eAAe,GACnB,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,0CAAG,WAAW,CAAC,mCACxC,MAAA,eAAe,CAAC,YAAY,0CAAG,WAAW,CAAC,CAAC;QAC9C,MAAM,UAAU,GACd,eAAe;YACf,IAAA,YAAG,EAAC,IAAA,gCAAuB,EAAC,WAAW,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,UAAU,EAAE;YACd,MAAA,OAAO,CAAC,GAAG,EAAC,mBAAmB,SAAnB,mBAAmB,IAAM,MAAM,EAAC;SAC7C;QAED,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAExD,MAAM,IAAI,GAAG,IAAA,qCAAgB,EAAC,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,kBAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,eAAe,GAAoB;YACvC,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,OAAO;YACjB,GAAG,EAAE,IAAI;SACV,CAAC;QACF,IAAI;YACF,IAAA,wBAAQ,EAAC,OAAO,EAAE,eAAe,CAAC,CAAC;SACpC;QAAC,OAAO,KAAK,EAAE;YACd,eAAM,CAAC,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;YAClE,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,IAAA,2BAAe,EAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACxC,IAAA,gBAAK,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAC3B;QAED,MAAM,gBAAgB,GAAG,IAAA,sBAAiB,EACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;YACE,MAAM,EAAE,OAAO,CAAC,UAAU;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,YAAY,EAAE,CAAC,OAAO,CAAC,mCAAmC,EAAE,yEAAyE;SACtI,CACF,CAAC;QACF,IAAA,uCAAiB,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAA,sBAAa,EAAC,GAAG,OAAO,CAAC,UAAU,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAA,mBAAc,EAAC,gBAAgB,CAAC,CAAC;YAClD,IAAA,wBAAa,EAAC,GAAG,OAAO,CAAC,UAAU,IAAI,IAAA,oBAAe,GAAE,EAAE,EAAE,QAAQ,EAAE;gBACpE,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;SACJ;QAED,IAAA,8CAAoB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvC,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;YACjE,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;CAC1B;AA1ED,gCA0EC"}
@@ -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({ withNxFile, withNxContent }?: {
5
- withNxFile: string;
6
- withNxContent: string;
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 fs_1 = require("fs");
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 nextConfigPath = options.nextConfig
11
- ? (0, path_1.join)(context.root, options.nextConfig)
12
- : (0, path_1.join)(context.root, options.root, 'next.config.js');
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
- if ((0, fs_1.existsSync)(nextConfigPath)) {
15
- const helpersPath = (0, path_1.join)(options.outputPath, '.nx-helpers');
16
- (0, fs_1.mkdirSync)(helpersPath, { recursive: true });
17
- (0, fs_1.copyFileSync)((0, path_1.join)(__dirname, '../../../utils/compose-plugins.js'), (0, path_1.join)(helpersPath, 'compose-plugins.js'));
18
- (0, fs_1.writeFileSync)((0, path_1.join)(helpersPath, 'with-nx.js'), getWithNxContent());
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
- (0, fs_1.writeFileSync)((0, path_1.join)(options.outputPath, 'next.config.js'), (0, fs_1.readFileSync)(nextConfigPath)
26
- .toString()
27
- .replace(/["']@nx\/next["']/, `'./.nx-helpers/compiled.js'`)
28
- // TODO(v17): Remove this once users have all migrated to new @nx scope and import from '@nx/next' not the deep import paths.
29
- .replace('@nx/next/plugins/with-nx', './.nx-helpers/compiled.js')
30
- .replace('@nrwl/next/plugins/with-nx', './.nx-helpers/compiled.js'));
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
- withNxFile,
39
- withNxContent,
44
+ file: getFile(),
45
+ content: (0, fs_extra_1.readFileSync)(getFile()).toString(),
40
46
  };
41
47
  }
42
48
  // Exported for testing
43
- function getWithNxContent({ withNxFile, withNxContent } = readSource()) {
49
+ function getWithNxContent({ file, content } = readSource(() => (0, path_1.join)(__dirname, '../../../../plugins/with-nx.js'))) {
44
50
  var _a;
45
- const withNxSource = ts.createSourceFile(withNxFile, withNxContent, ts.ScriptTarget.Latest, true);
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
- withNxContent = (0, devkit_1.applyChangesToString)(withNxContent, [
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,88 @@ function getWithNxContent({ withNxFile, withNxContent } = readSource()) {
63
69
  },
64
70
  ]);
65
71
  }
66
- return withNxContent;
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
+ const providedExt = (0, path_1.extname)(file);
144
+ if (providedExt && extensions.includes(providedExt))
145
+ return file;
146
+ const ext = extensions.find((ext) => (0, fs_extra_1.existsSync)((0, path_1.join)(absoluteDir, file + ext)));
147
+ if (ext) {
148
+ return file + ext;
149
+ }
150
+ else {
151
+ throw new Error(`Cannot find file "${file}" with any of the following extensions: ${extensions.join(', ')}`);
152
+ }
153
+ });
154
+ }
155
+ exports.ensureFileExtensions = ensureFileExtensions;
69
156
  //# 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":"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"}
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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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 2,
3
- "outputCapture": "direct-nodejs",
3
+ "outputCapture": "pipe",
4
4
  "$schema": "http://json-schema.org/schema",
5
5
  "cli": "nx",
6
6
  "title": "Next Build",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 2,
3
- "outputCapture": "direct-nodejs",
3
+ "outputCapture": "pipe",
4
4
  "cli": "nx",
5
5
  "title": "Next Export",
6
6
  "description": "Export a Next.js application. The exported application is located at `dist/$outputPath/exported`.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 2,
3
- "outputCapture": "direct-nodejs",
3
+ "outputCapture": "pipe",
4
4
  "cli": "nx",
5
5
  "title": "Next Serve",
6
6
  "description": "Serve a Next.js app.",
@@ -54,6 +54,10 @@
54
54
  "keepAliveTimeout": {
55
55
  "type": "number",
56
56
  "description": "Max milliseconds to wait before closing inactive connection."
57
+ },
58
+ "turbo": {
59
+ "type": "boolean",
60
+ "description": "Activate the incremental bundler for Next.js, which is implemented in Rust. Please note, this feature is exclusively available in development mode."
57
61
  }
58
62
  },
59
63
  "required": ["buildTarget"]
@@ -2,18 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  require("dotenv/config");
5
- const net = require("net");
6
5
  const devkit_1 = require("@nx/devkit");
7
6
  const path_1 = require("path");
8
7
  const child_process_1 = require("child_process");
9
8
  const custom_server_impl_1 = require("./custom-server.impl");
10
9
  const create_cli_options_1 = require("../../utils/create-cli-options");
11
10
  const async_iterable_1 = require("@nx/devkit/src/utils/async-iterable");
11
+ const wait_for_port_open_1 = require("@nx/web/src/utils/wait-for-port-open");
12
12
  function serveExecutor(options, context) {
13
13
  return tslib_1.__asyncGenerator(this, arguments, function* serveExecutor_1() {
14
14
  if (options.customServerTarget) {
15
15
  return yield tslib_1.__await(yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues((0, custom_server_impl_1.default)(options, context)))));
16
16
  }
17
+ const buildOptions = (0, devkit_1.readTargetOptions)((0, devkit_1.parseTargetString)(options.buildTarget, context.projectGraph), context);
18
+ const root = (0, path_1.resolve)(context.root, buildOptions.root);
19
+ const { port, keepAliveTimeout, hostname } = options;
20
+ // This is required for the default custom server to work. See the @nx/next:app generator.
21
+ process.env.NX_NEXT_DIR = root;
17
22
  // Cast to any to overwrite NODE_ENV
18
23
  process.env.NODE_ENV = process.env.NODE_ENV
19
24
  ? process.env.NODE_ENV
@@ -21,52 +26,19 @@ function serveExecutor(options, context) {
21
26
  ? 'development'
22
27
  : 'production';
23
28
  // Setting port that the custom server should use.
24
- process.env.PORT = options.port;
25
- const buildOptions = (0, devkit_1.readTargetOptions)((0, devkit_1.parseTargetString)(options.buildTarget, context.projectGraph), context);
26
- const root = (0, path_1.resolve)(context.root, buildOptions.root);
27
- const { port, keepAliveTimeout, hostname } = options;
29
+ process.env.PORT = `${options.port}`;
28
30
  const args = (0, create_cli_options_1.createCliOptions)({ port, keepAliveTimeout, hostname });
29
31
  const nextDir = (0, path_1.resolve)(context.root, buildOptions.outputPath);
30
- const command = `npx next ${options.dev ? `dev ${args}` : `start ${args}`}`;
31
- yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues((0, async_iterable_1.createAsyncIterable)(({ done, next, error }) => {
32
- // Client to check if server is ready.
33
- const client = new net.Socket();
34
- const cleanupClient = () => {
35
- client.removeAllListeners('connect');
36
- client.removeAllListeners('error');
37
- client.end();
38
- client.destroy();
39
- client.unref();
40
- };
41
- const waitForServerReady = (retries = 30) => {
42
- const allowedErrorCodes = ['ECONNREFUSED', 'ECONNRESET'];
43
- client.once('connect', () => {
44
- var _a;
45
- cleanupClient();
46
- next({
47
- success: true,
48
- baseUrl: `http://${(_a = options.hostname) !== null && _a !== void 0 ? _a : 'localhost'}:${port}`,
49
- });
50
- });
51
- client.on('error', (err) => {
52
- if (retries === 0 || !allowedErrorCodes.includes(err['code'])) {
53
- cleanupClient();
54
- error(err);
55
- }
56
- else {
57
- setTimeout(() => waitForServerReady(retries - 1), 1000);
58
- }
59
- });
60
- client.connect({ port, host: '127.0.0.1' });
61
- };
62
- const server = (0, child_process_1.spawn)(command, {
32
+ const mode = options.dev ? 'dev' : 'start';
33
+ const turbo = options.turbo && options.dev ? '--turbo' : '';
34
+ const nextBin = require.resolve('next/dist/bin/next');
35
+ yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues((0, async_iterable_1.createAsyncIterable)(({ done, next, error }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
36
+ var _a;
37
+ const server = (0, child_process_1.fork)(nextBin, [mode, ...args, turbo], {
63
38
  cwd: options.dev ? root : nextDir,
64
39
  stdio: 'inherit',
65
- shell: true,
66
40
  });
67
- waitForServerReady();
68
41
  server.once('exit', (code) => {
69
- cleanupClient();
70
42
  if (code === 0) {
71
43
  done();
72
44
  }
@@ -74,18 +46,21 @@ function serveExecutor(options, context) {
74
46
  error(new Error(`Next.js app exited with code ${code}`));
75
47
  }
76
48
  });
77
- process.on('exit', (code) => tslib_1.__awaiter(this, void 0, void 0, function* () {
78
- if (code === 128 + 2) {
79
- server.kill('SIGINT');
80
- }
81
- else if (code === 128 + 1) {
82
- server.kill('SIGHUP');
83
- }
84
- else {
49
+ const killServer = () => {
50
+ if (server.connected) {
85
51
  server.kill('SIGTERM');
86
52
  }
87
- }));
88
- }))));
53
+ };
54
+ process.on('exit', () => killServer());
55
+ process.on('SIGINT', () => killServer());
56
+ process.on('SIGTERM', () => killServer());
57
+ process.on('SIGHUP', () => killServer());
58
+ yield (0, wait_for_port_open_1.waitForPortOpen)(port);
59
+ next({
60
+ success: true,
61
+ baseUrl: `http://${(_a = options.hostname) !== null && _a !== void 0 ? _a : 'localhost'}:${port}`,
62
+ });
63
+ })))));
89
64
  });
90
65
  }
91
66
  exports.default = serveExecutor;
@@ -1 +1 @@
1
- {"version":3,"file":"server.impl.js","sourceRoot":"","sources":["../../../../../../packages/next/src/executors/server/server.impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.impl.js","sourceRoot":"","sources":["../../../../../../packages/next/src/executors/server/server.impl.ts"],"names":[],"mappings":";;;AAAA,yBAAuB;AACvB,uCAIoB;AACpB,+BAAqC;AAMrC,iDAAqC;AACrC,6DAAgD;AAChD,uEAAkE;AAClE,wEAA0E;AAC1E,6EAAuE;AAEvE,SAA+B,aAAa,CAC1C,OAAgC,EAChC,OAAwB;;QAExB,IAAI,OAAO,CAAC,kBAAkB,EAAE;YAC9B,6BAAO,sBAAA,KAAK,CAAC,CAAC,yBAAA,sBAAA,IAAA,4BAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA,CAAA,CAAA,EAAC;SAC9C;QAED,MAAM,YAAY,GAAG,IAAA,0BAAiB,EACpC,IAAA,0BAAiB,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,EAC5D,OAAO,CACR,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAErD,0FAA0F;QAC1F,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;QAE/B,oCAAoC;QACnC,OAAO,CAAC,GAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ;YAClD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;YACtB,CAAC,CAAC,OAAO,CAAC,GAAG;gBACb,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,YAAY,CAAC;QAEjB,kDAAkD;QAClD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAErC,MAAM,IAAI,GAAG,IAAA,qCAAgB,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEpE,MAAM,OAAO,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAEtD,sBAAA,KAAK,CAAC,CAAC,yBAAA,sBAAA,IAAA,oCAAmB,EACxB,CAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;;YAC9B,MAAM,MAAM,GAAG,IAAA,oBAAI,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE;gBACnD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;gBACjC,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC3B,IAAI,IAAI,KAAK,CAAC,EAAE;oBACd,IAAI,EAAE,CAAC;iBACR;qBAAM;oBACL,KAAK,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;iBAC1D;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,GAAG,EAAE;gBACtB,IAAI,MAAM,CAAC,SAAS,EAAE;oBACpB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACxB;YACH,CAAC,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;YAEzC,MAAM,IAAA,oCAAe,EAAC,IAAI,CAAC,CAAC;YAE5B,IAAI,CAAC;gBACH,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,UAAU,MAAA,OAAO,CAAC,QAAQ,mCAAI,WAAW,IAAI,IAAI,EAAE;aAC7D,CAAC,CAAC;QACL,CAAC,CAAA,CACF,CAAA,CAAA,CAAA,CAAC;IACJ,CAAC;CAAA;AAtED,gCAsEC"}
@@ -1,19 +1,20 @@
1
- <% if (styledModule && (styledModule === 'styled-jsx' || styledModule === 'styled-components')) {%>
2
- 'use client';
3
- <% }%>
4
- <% if (styledModule && styledModule !== 'styled-jsx') {
5
- var wrapper = 'StyledPage';
6
- %>import styled from '<%= styledModule %>';<% } else {
7
- var wrapper = 'div';
8
- %>
9
- <%- style !== 'styled-jsx' ? `import styles from './page.module.${style}';` : '' %>
10
- <% }
11
- %>
12
-
13
- <% if (styledModule && styledModule !== 'styled-jsx') { %>
14
- const StyledPage = styled.div`<%- pageStyleContent %>`;
15
- <% }%>
1
+ <% if (style !== 'none') { %>
2
+ <% if (styledModule && (styledModule === 'styled-jsx' || styledModule === 'styled-components')) {%>
3
+ 'use client';
4
+ <% }%>
5
+ <% if (styledModule && styledModule !== 'styled-jsx') {
6
+ var wrapper = 'StyledPage';
7
+ %>import styled from '<%= styledModule %>';<% } else {
8
+ var wrapper = 'div';
9
+ %>
10
+ <%- style !== 'styled-jsx' ? `import styles from './page.module.${style}';` : '' %>
11
+ <% }
12
+ %>
16
13
 
14
+ <% if (styledModule && styledModule !== 'styled-jsx') { %>
15
+ const StyledPage = styled.div`<%- pageStyleContent %>`;
16
+ <% }%>
17
+ <% } %>
17
18
  export default async function Index() {
18
19
  /*
19
20
  * Replace the elements below with your own.
@@ -22,7 +23,7 @@ export default async function Index() {
22
23
  */
23
24
  return (
24
25
  <<%= wrapper %><% if (!styledModule) {%> className={styles.page}<% } %>>
25
- <%- styledModule === 'styled-jsx' ? `<style jsx>{\`${pageStyleContent}\`}</style>` : `` %>
26
+ <%- styledModule === 'styled-jsx' && style !== 'none' ? `<style jsx>{\`${pageStyleContent}\`}</style>` : `` %>
26
27
  <%- appContent %>
27
28
  </<%= wrapper %>>
28
29
  );
@@ -1,15 +1,17 @@
1
- <% if (styledModule && styledModule !== 'styled-jsx') {
2
- var wrapper = 'StyledPage';
3
- %>import styled from '<%= styledModule %>';<% } else {
4
- var wrapper = 'div';
5
- %>
6
- <%- style !== 'styled-jsx' ? `import styles from './${fileName}.module.${style}';` : '' %>
7
- <% }
8
- %>
1
+ <% if (style !== 'none') { %>
2
+ <% if (styledModule && styledModule !== 'styled-jsx') {
3
+ var wrapper = 'StyledPage';
4
+ %>import styled from '<%= styledModule %>';<% } else {
5
+ var wrapper = 'div';
6
+ %>
7
+ <%- style !== 'styled-jsx' ? `import styles from './${fileName}.module.${style}';` : '' %>
8
+ <% }
9
+ %>
9
10
 
10
- <% if (styledModule && styledModule !== 'styled-jsx') { %>
11
- const StyledPage = styled.div`<%- pageStyleContent %>`;
12
- <% }%>
11
+ <% if (styledModule && styledModule !== 'styled-jsx') { %>
12
+ const StyledPage = styled.div`<%- pageStyleContent %>`;
13
+ <% }%>
14
+ <% } %>
13
15
 
14
16
  export function Index() {
15
17
  /*
@@ -19,7 +21,7 @@ export function Index() {
19
21
  */
20
22
  return (
21
23
  <<%= wrapper %><% if (!styledModule) {%> className={styles.page}<% } %>>
22
- <%- styledModule === 'styled-jsx' ? `<style jsx>{\`${pageStyleContent}\`}</style>` : `` %>
24
+ <%- styledModule === 'styled-jsx' && style !== 'none' ? `<style jsx>{\`${pageStyleContent}\`}</style>` : `` %>
23
25
  <%- appContent %>
24
26
  </<%= wrapper %>>
25
27
  );
@@ -1,3 +1 @@
1
- export declare function createCliOptions(obj: {
2
- [key: string]: any;
3
- }): string;
1
+ export declare function createCliOptions(obj: Record<string, string | number | boolean>): string[];
@@ -2,17 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createCliOptions = void 0;
4
4
  function createCliOptions(obj) {
5
- return Object.entries(obj)
6
- .reduce((arr, [key, value]) => {
5
+ return Object.entries(obj).reduce((arr, [key, value]) => {
7
6
  if (value !== undefined) {
8
7
  const kebabCase = key.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());
9
- return `${arr}--${kebabCase}=${value} `;
8
+ arr.push(`--${kebabCase}=${value}`);
10
9
  }
11
- else {
12
- return arr;
13
- }
14
- }, '')
15
- .trim();
10
+ return arr;
11
+ }, []);
16
12
  }
17
13
  exports.createCliOptions = createCliOptions;
18
14
  //# sourceMappingURL=create-cli-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-cli-options.js","sourceRoot":"","sources":["../../../../../packages/next/src/utils/create-cli-options.ts"],"names":[],"mappings":";;;AAAA,SAAgB,gBAAgB,CAAC,GAA2B;IAC1D,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SACvB,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACtE,OAAO,GAAG,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC;SACzC;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC,EAAE,EAAE,CAAC;SACL,IAAI,EAAE,CAAC;AACZ,CAAC;AAXD,4CAWC"}
1
+ {"version":3,"file":"create-cli-options.js","sourceRoot":"","sources":["../../../../../packages/next/src/utils/create-cli-options.ts"],"names":[],"mappings":";;;AAAA,SAAgB,gBAAgB,CAC9B,GAA8C;IAE9C,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACtD,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;SACrC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAVD,4CAUC"}
@@ -45,6 +45,7 @@ export interface NextServeBuilderOptions {
45
45
  proxyConfig?: string;
46
46
  buildLibsFromSource?: boolean;
47
47
  keepAliveTimeout?: number;
48
+ turbo?: boolean;
48
49
  }
49
50
  export interface NextExportBuilderOptions {
50
51
  buildTarget: string;