@nx/next 16.0.0-beta.1

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 (213) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +22 -0
  3. package/README.md +63 -0
  4. package/babel.d.ts +0 -0
  5. package/babel.js +13 -0
  6. package/babel.js.map +1 -0
  7. package/executors.json +36 -0
  8. package/generators.json +72 -0
  9. package/index.d.ts +8 -0
  10. package/index.js +20 -0
  11. package/index.js.map +1 -0
  12. package/migrations.json +312 -0
  13. package/package.json +64 -0
  14. package/plugins/with-less.d.ts +2 -0
  15. package/plugins/with-less.js +79 -0
  16. package/plugins/with-less.js.map +1 -0
  17. package/plugins/with-nx.d.ts +13 -0
  18. package/plugins/with-nx.js +278 -0
  19. package/plugins/with-nx.js.map +1 -0
  20. package/plugins/with-stylus.d.ts +2 -0
  21. package/plugins/with-stylus.js +79 -0
  22. package/plugins/with-stylus.js.map +1 -0
  23. package/src/executors/build/build.impl.d.ts +6 -0
  24. package/src/executors/build/build.impl.js +62 -0
  25. package/src/executors/build/build.impl.js.map +1 -0
  26. package/src/executors/build/compat.d.ts +2 -0
  27. package/src/executors/build/compat.js +6 -0
  28. package/src/executors/build/compat.js.map +1 -0
  29. package/src/executors/build/lib/check-project.d.ts +1 -0
  30. package/src/executors/build/lib/check-project.js +13 -0
  31. package/src/executors/build/lib/check-project.js.map +1 -0
  32. package/src/executors/build/lib/create-next-config-file.d.ts +3 -0
  33. package/src/executors/build/lib/create-next-config-file.js +15 -0
  34. package/src/executors/build/lib/create-next-config-file.js.map +1 -0
  35. package/src/executors/build/lib/update-package-json.d.ts +3 -0
  36. package/src/executors/build/lib/update-package-json.js +24 -0
  37. package/src/executors/build/lib/update-package-json.js.map +1 -0
  38. package/src/executors/build/schema.json +68 -0
  39. package/src/executors/export/compat.d.ts +2 -0
  40. package/src/executors/export/compat.js +6 -0
  41. package/src/executors/export/compat.js.map +1 -0
  42. package/src/executors/export/export.impl.d.ts +6 -0
  43. package/src/executors/export/export.impl.js +53 -0
  44. package/src/executors/export/export.impl.js.map +1 -0
  45. package/src/executors/export/schema.json +30 -0
  46. package/src/executors/server/compat.d.ts +2 -0
  47. package/src/executors/server/compat.js +6 -0
  48. package/src/executors/server/compat.js.map +1 -0
  49. package/src/executors/server/lib/default-server.d.ts +6 -0
  50. package/src/executors/server/lib/default-server.js +31 -0
  51. package/src/executors/server/lib/default-server.js.map +1 -0
  52. package/src/executors/server/lib/tsnode-register.d.ts +1 -0
  53. package/src/executors/server/lib/tsnode-register.js +23 -0
  54. package/src/executors/server/lib/tsnode-register.js.map +1 -0
  55. package/src/executors/server/schema.json +56 -0
  56. package/src/executors/server/server.impl.d.ts +7 -0
  57. package/src/executors/server/server.impl.js +114 -0
  58. package/src/executors/server/server.impl.js.map +1 -0
  59. package/src/generators/application/application.d.ts +4 -0
  60. package/src/generators/application/application.js +43 -0
  61. package/src/generators/application/application.js.map +1 -0
  62. package/src/generators/application/files/app/api/hello/route.ts__tmpl__ +4 -0
  63. package/src/generators/application/files/app/global.__stylesExt____tmpl__ +1 -0
  64. package/src/generators/application/files/app/layout.tsx__tmpl__ +22 -0
  65. package/src/generators/application/files/app/page.module.__style__ +1 -0
  66. package/src/generators/application/files/app/page.tsx__tmpl__ +28 -0
  67. package/src/generators/application/files/common/.babelrc__tmpl__ +21 -0
  68. package/src/generators/application/files/common/index.d.ts__tmpl__ +18 -0
  69. package/src/generators/application/files/common/next-env.d.ts__tmpl__ +5 -0
  70. package/src/generators/application/files/common/next.config.js__tmpl__ +112 -0
  71. package/src/generators/application/files/common/public/.gitkeep +0 -0
  72. package/src/generators/application/files/common/public/favicon.ico +0 -0
  73. package/src/generators/application/files/common/specs/__fileName__.spec.tsx__tmpl__ +11 -0
  74. package/src/generators/application/files/common/tsconfig.json__tmpl__ +18 -0
  75. package/src/generators/application/files/pages/__fileName__.module.__style__ +1 -0
  76. package/src/generators/application/files/pages/__fileName__.tsx__tmpl__ +28 -0
  77. package/src/generators/application/files/pages/_app.tsx__tmpl__ +18 -0
  78. package/src/generators/application/files/pages/_document.tsx__tmpl__ +33 -0
  79. package/src/generators/application/files/pages/styles.__stylesExt____tmpl__ +1 -0
  80. package/src/generators/application/lib/add-cypress.d.ts +3 -0
  81. package/src/generators/application/lib/add-cypress.js +18 -0
  82. package/src/generators/application/lib/add-cypress.js.map +1 -0
  83. package/src/generators/application/lib/add-jest.d.ts +3 -0
  84. package/src/generators/application/lib/add-jest.js +36 -0
  85. package/src/generators/application/lib/add-jest.js.map +1 -0
  86. package/src/generators/application/lib/add-linting.d.ts +3 -0
  87. package/src/generators/application/lib/add-linting.js +66 -0
  88. package/src/generators/application/lib/add-linting.js.map +1 -0
  89. package/src/generators/application/lib/add-project.d.ts +3 -0
  90. package/src/generators/application/lib/add-project.js +56 -0
  91. package/src/generators/application/lib/add-project.js.map +1 -0
  92. package/src/generators/application/lib/create-application-files.d.ts +3 -0
  93. package/src/generators/application/lib/create-application-files.helpers.d.ts +2 -0
  94. package/src/generators/application/lib/create-application-files.helpers.js +785 -0
  95. package/src/generators/application/lib/create-application-files.helpers.js.map +1 -0
  96. package/src/generators/application/lib/create-application-files.js +40 -0
  97. package/src/generators/application/lib/create-application-files.js.map +1 -0
  98. package/src/generators/application/lib/normalize-options.d.ts +13 -0
  99. package/src/generators/application/lib/normalize-options.js +35 -0
  100. package/src/generators/application/lib/normalize-options.js.map +1 -0
  101. package/src/generators/application/lib/set-defaults.d.ts +3 -0
  102. package/src/generators/application/lib/set-defaults.js +14 -0
  103. package/src/generators/application/lib/set-defaults.js.map +1 -0
  104. package/src/generators/application/lib/update-jest-config.d.ts +3 -0
  105. package/src/generators/application/lib/update-jest-config.js +16 -0
  106. package/src/generators/application/lib/update-jest-config.js.map +1 -0
  107. package/src/generators/application/schema.d.ts +19 -0
  108. package/src/generators/application/schema.json +131 -0
  109. package/src/generators/component/component.d.ts +15 -0
  110. package/src/generators/component/component.js +34 -0
  111. package/src/generators/component/component.js.map +1 -0
  112. package/src/generators/component/schema.json +119 -0
  113. package/src/generators/custom-server/custom-server.d.ts +4 -0
  114. package/src/generators/custom-server/custom-server.js +79 -0
  115. package/src/generators/custom-server/custom-server.js.map +1 -0
  116. package/src/generators/custom-server/files/server/main.ts__tmpl__ +46 -0
  117. package/src/generators/custom-server/files/tsconfig.server.json__tmpl__ +15 -0
  118. package/src/generators/custom-server/schema.d.ts +4 -0
  119. package/src/generators/custom-server/schema.json +30 -0
  120. package/src/generators/init/init.d.ts +5 -0
  121. package/src/generators/init/init.js +49 -0
  122. package/src/generators/init/init.js.map +1 -0
  123. package/src/generators/init/schema.d.ts +7 -0
  124. package/src/generators/init/schema.json +39 -0
  125. package/src/generators/library/lib/normalize-options.d.ts +7 -0
  126. package/src/generators/library/lib/normalize-options.js +17 -0
  127. package/src/generators/library/lib/normalize-options.js.map +1 -0
  128. package/src/generators/library/library.d.ts +5 -0
  129. package/src/generators/library/library.js +79 -0
  130. package/src/generators/library/library.js.map +1 -0
  131. package/src/generators/library/schema.d.ts +25 -0
  132. package/src/generators/library/schema.json +156 -0
  133. package/src/generators/page/page.d.ts +5 -0
  134. package/src/generators/page/page.js +27 -0
  135. package/src/generators/page/page.js.map +1 -0
  136. package/src/generators/page/schema.d.ts +13 -0
  137. package/src/generators/page/schema.json +107 -0
  138. package/src/migrations/update-12-10-0/fix-page-dir-for-eslint.d.ts +3 -0
  139. package/src/migrations/update-12-10-0/fix-page-dir-for-eslint.js +34 -0
  140. package/src/migrations/update-12-10-0/fix-page-dir-for-eslint.js.map +1 -0
  141. package/src/migrations/update-12-8-0/remove-styled-jsx-babel-plugin.d.ts +3 -0
  142. package/src/migrations/update-12-8-0/remove-styled-jsx-babel-plugin.js +26 -0
  143. package/src/migrations/update-12-8-0/remove-styled-jsx-babel-plugin.js.map +1 -0
  144. package/src/migrations/update-13-0-0/update-emotion-setup.d.ts +3 -0
  145. package/src/migrations/update-13-0-0/update-emotion-setup.js +39 -0
  146. package/src/migrations/update-13-0-0/update-emotion-setup.js.map +1 -0
  147. package/src/migrations/update-13-0-0/update-to-webpack-5.d.ts +3 -0
  148. package/src/migrations/update-13-0-0/update-to-webpack-5.js +32 -0
  149. package/src/migrations/update-13-0-0/update-to-webpack-5.js.map +1 -0
  150. package/src/migrations/update-13-0-3/fix-less.d.ts +3 -0
  151. package/src/migrations/update-13-0-3/fix-less.js +27 -0
  152. package/src/migrations/update-13-0-3/fix-less.js.map +1 -0
  153. package/src/migrations/update-13-1-1/enable-swc.d.ts +3 -0
  154. package/src/migrations/update-13-1-1/enable-swc.js +46 -0
  155. package/src/migrations/update-13-1-1/enable-swc.js.map +1 -0
  156. package/src/migrations/update-14-0-0/add-default-development-configurations.d.ts +3 -0
  157. package/src/migrations/update-14-0-0/add-default-development-configurations.js +36 -0
  158. package/src/migrations/update-14-0-0/add-default-development-configurations.js.map +1 -0
  159. package/src/migrations/update-14-4-3/add-dev-output-path.d.ts +3 -0
  160. package/src/migrations/update-14-4-3/add-dev-output-path.js +24 -0
  161. package/src/migrations/update-14-4-3/add-dev-output-path.js.map +1 -0
  162. package/src/migrations/update-14-5-3/add-gitignore-entry.d.ts +3 -0
  163. package/src/migrations/update-14-5-3/add-gitignore-entry.js +15 -0
  164. package/src/migrations/update-14-5-3/add-gitignore-entry.js.map +1 -0
  165. package/src/migrations/update-14-5-3/update-dev-output-path.d.ts +3 -0
  166. package/src/migrations/update-14-5-3/update-dev-output-path.js +29 -0
  167. package/src/migrations/update-14-5-3/update-dev-output-path.js.map +1 -0
  168. package/src/migrations/update-14-5-7/update-next-eslint.d.ts +3 -0
  169. package/src/migrations/update-14-5-7/update-next-eslint.js +32 -0
  170. package/src/migrations/update-14-5-7/update-next-eslint.js.map +1 -0
  171. package/src/migrations/update-15-8-8/add-style-packages.d.ts +3 -0
  172. package/src/migrations/update-15-8-8/add-style-packages.js +28 -0
  173. package/src/migrations/update-15-8-8/add-style-packages.js.map +1 -0
  174. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
  175. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +13 -0
  176. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js.map +1 -0
  177. package/src/utils/add-gitignore-entry.d.ts +2 -0
  178. package/src/utils/add-gitignore-entry.js +18 -0
  179. package/src/utils/add-gitignore-entry.js.map +1 -0
  180. package/src/utils/config-invalid-function.fixture.d.ts +0 -0
  181. package/src/utils/config-invalid-function.fixture.js +2 -0
  182. package/src/utils/config-invalid-function.fixture.js.map +1 -0
  183. package/src/utils/config-not-a-function.fixture.d.ts +0 -0
  184. package/src/utils/config-not-a-function.fixture.js +2 -0
  185. package/src/utils/config-not-a-function.fixture.js.map +1 -0
  186. package/src/utils/config.d.ts +15 -0
  187. package/src/utils/config.fixture.d.ts +0 -0
  188. package/src/utils/config.fixture.js +4 -0
  189. package/src/utils/config.fixture.js.map +1 -0
  190. package/src/utils/config.js +87 -0
  191. package/src/utils/config.js.map +1 -0
  192. package/src/utils/constants.d.ts +1 -0
  193. package/src/utils/constants.js +5 -0
  194. package/src/utils/constants.js.map +1 -0
  195. package/src/utils/create-copy-plugin.d.ts +2 -0
  196. package/src/utils/create-copy-plugin.js +63 -0
  197. package/src/utils/create-copy-plugin.js.map +1 -0
  198. package/src/utils/generate-globs.d.ts +5 -0
  199. package/src/utils/generate-globs.js +30 -0
  200. package/src/utils/generate-globs.js.map +1 -0
  201. package/src/utils/styles.d.ts +40 -0
  202. package/src/utils/styles.js +56 -0
  203. package/src/utils/styles.js.map +1 -0
  204. package/src/utils/types.d.ts +53 -0
  205. package/src/utils/types.js +3 -0
  206. package/src/utils/types.js.map +1 -0
  207. package/src/utils/versions.d.ts +9 -0
  208. package/src/utils/versions.js +13 -0
  209. package/src/utils/versions.js.map +1 -0
  210. package/tailwind.d.ts +2 -0
  211. package/tailwind.js +7 -0
  212. package/tailwind.js.map +1 -0
  213. package/typings/image.d.ts +12 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withLess = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // Adapted from https://raw.githubusercontent.com/elado/next-with-less/main/src/index.js
6
+ const webpack_merge_1 = require("webpack-merge");
7
+ const addLessToRegExp = (rx) => new RegExp(rx.source.replace('|sass', '|sass|less'), rx.flags);
8
+ function patchNextCSSWithLess(nextCSSModule = require('next/dist/build/webpack/config/blocks/css')) {
9
+ nextCSSModule.regexLikeCss = addLessToRegExp(nextCSSModule.regexLikeCss);
10
+ }
11
+ patchNextCSSWithLess();
12
+ function withLess(configFn) {
13
+ return (phase) => tslib_1.__awaiter(this, void 0, void 0, function* () {
14
+ const _a = yield configFn(phase), { lessLoaderOptions = {} } = _a, nextConfig = tslib_1.__rest(_a, ["lessLoaderOptions"]);
15
+ return Object.assign({}, nextConfig, {
16
+ webpack(config, opts) {
17
+ // there are 2 relevant sass rules in next.js - css modules and global css
18
+ let sassModuleRule;
19
+ // global sass rule (does not exist in server builds)
20
+ let sassGlobalRule;
21
+ const cssRule = config.module.rules.find((rule) => { var _a; return (_a = rule.oneOf) === null || _a === void 0 ? void 0 : _a.find((r) => r === null || r === void 0 ? void 0 : r[Symbol.for('__next_css_remove')]); });
22
+ const addLessToRuleTest = (test) => {
23
+ if (Array.isArray(test)) {
24
+ return test.map((rx) => addLessToRegExp(rx));
25
+ }
26
+ else {
27
+ return addLessToRegExp(test);
28
+ }
29
+ };
30
+ cssRule.oneOf.forEach((rule) => {
31
+ var _a, _b, _c, _d, _e, _f, _g, _h;
32
+ if ((_a = rule.options) === null || _a === void 0 ? void 0 : _a.__next_css_remove)
33
+ return;
34
+ if (((_b = rule.use) === null || _b === void 0 ? void 0 : _b.loader) === 'error-loader') {
35
+ rule.test = addLessToRuleTest(rule.test);
36
+ }
37
+ else if ((_d = (_c = rule.use) === null || _c === void 0 ? void 0 : _c.loader) === null || _d === void 0 ? void 0 : _d.includes('file-loader')) {
38
+ rule.issuer = addLessToRuleTest(rule.issuer);
39
+ }
40
+ else if ((_f = (_e = rule.use) === null || _e === void 0 ? void 0 : _e.includes) === null || _f === void 0 ? void 0 : _f.call(_e, 'ignore-loader')) {
41
+ rule.test = addLessToRuleTest(rule.test);
42
+ }
43
+ else if (((_g = rule.test) === null || _g === void 0 ? void 0 : _g.source) === '\\.module\\.(scss|sass)$') {
44
+ sassModuleRule = rule;
45
+ }
46
+ else if (((_h = rule.test) === null || _h === void 0 ? void 0 : _h.source) === '(?<!\\.module)\\.(scss|sass)$') {
47
+ sassGlobalRule = rule;
48
+ }
49
+ });
50
+ const lessLoader = {
51
+ loader: 'less-loader',
52
+ options: Object.assign(Object.assign({}, lessLoaderOptions), { lessOptions: Object.assign({ javascriptEnabled: true }, lessLoaderOptions.lessOptions) }),
53
+ };
54
+ let lessModuleRule = (0, webpack_merge_1.merge)(sassModuleRule);
55
+ const configureLessRule = (rule) => {
56
+ rule.test = new RegExp(rule.test.source.replace('(scss|sass)', 'less'));
57
+ // replace sass-loader (last entry) with less-loader
58
+ rule.use.splice(-1, 1, lessLoader);
59
+ };
60
+ configureLessRule(lessModuleRule);
61
+ cssRule.oneOf.splice(cssRule.oneOf.indexOf(sassModuleRule) + 1, 0, lessModuleRule);
62
+ if (sassGlobalRule) {
63
+ let lessGlobalRule = (0, webpack_merge_1.merge)(sassGlobalRule);
64
+ configureLessRule(lessGlobalRule);
65
+ cssRule.oneOf.splice(cssRule.oneOf.indexOf(sassGlobalRule) + 1, 0, lessGlobalRule);
66
+ }
67
+ if (typeof nextConfig.webpack === 'function') {
68
+ return nextConfig.webpack(config, opts);
69
+ }
70
+ return config;
71
+ },
72
+ });
73
+ });
74
+ }
75
+ exports.withLess = withLess;
76
+ module.exports = withLess;
77
+ module.exports.withLess = withLess;
78
+ module.exports.patchNext = patchNextCSSWithLess;
79
+ //# sourceMappingURL=with-less.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-less.js","sourceRoot":"","sources":["../../../../packages/next/plugins/with-less.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { NextConfig } from 'next';
2
+ import { NextConfigFn } from '../src/utils/config';
3
+ export interface WithNxOptions extends NextConfig {
4
+ nx?: {
5
+ svgr?: boolean;
6
+ };
7
+ }
8
+ export interface WithNxContext {
9
+ workspaceRoot: string;
10
+ libsDir: string;
11
+ }
12
+ export declare function withNx(_nextConfig?: WithNxOptions, context?: WithNxContext): NextConfigFn;
13
+ export declare function getNextConfig(nextConfig?: WithNxOptions, context?: WithNxContext): NextConfig;
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNextConfig = exports.withNx = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const buildable_libs_utils_1 = require("@nx/js/src/utils/buildable-libs-utils");
7
+ const constants_1 = require("next/constants");
8
+ const path = require("path");
9
+ const config_1 = require("../src/utils/config");
10
+ function regexEqual(x, y) {
11
+ return (x instanceof RegExp &&
12
+ y instanceof RegExp &&
13
+ x.source === y.source &&
14
+ x.global === y.global &&
15
+ x.ignoreCase === y.ignoreCase &&
16
+ x.multiline === y.multiline);
17
+ }
18
+ /**
19
+ * Do not remove or rename this function. Production builds inline `with-nx.js` file with a replacement
20
+ * To this function that hard-codes the libsDir.
21
+ */
22
+ function getWithNxContext() {
23
+ const { workspaceRoot, workspaceLayout } = require('@nx/devkit');
24
+ return {
25
+ workspaceRoot,
26
+ libsDir: workspaceLayout().libsDir,
27
+ };
28
+ }
29
+ function getTargetConfig(graph, target) {
30
+ const projectNode = graph.nodes[target.project];
31
+ return projectNode.data.targets[target.target];
32
+ }
33
+ function getOptions(graph, target) {
34
+ const targetConfig = getTargetConfig(graph, target);
35
+ const options = targetConfig.options;
36
+ if (target.configuration) {
37
+ Object.assign(options, targetConfig.configurations[target.configuration]);
38
+ }
39
+ return options;
40
+ }
41
+ function getNxContext(graph, target) {
42
+ const targetConfig = getTargetConfig(graph, target);
43
+ if ('@nrwl/next:build' === targetConfig.executor) {
44
+ return {
45
+ node: graph.nodes[target.project],
46
+ options: getOptions(graph, target),
47
+ projectName: target.project,
48
+ targetName: target.target,
49
+ configurationName: target.configuration,
50
+ };
51
+ }
52
+ const targetOptions = getOptions(graph, target);
53
+ // If we are running serve or export pull the options from the dependent target first (ex. build)
54
+ if (targetOptions.devServerTarget) {
55
+ const devServerTarget = (0, devkit_1.parseTargetString)(targetOptions.devServerTarget, graph);
56
+ return getNxContext(graph, devServerTarget);
57
+ }
58
+ else if (['@nrwl/next:server', '@nrwl/next:export'].includes(targetConfig.executor)) {
59
+ const buildTarget = (0, devkit_1.parseTargetString)(targetOptions.buildTarget, graph);
60
+ return getNxContext(graph, buildTarget);
61
+ }
62
+ else {
63
+ throw new Error('Could not determine the config for this Next application.');
64
+ }
65
+ }
66
+ /**
67
+ * Try to read output dir from project, and default to '.next' if executing outside of Nx (e.g. dist is added to a docker image).
68
+ */
69
+ function determineDistDirForProdServer(nextConfig) {
70
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
71
+ const project = process.env.NX_TASK_TARGET_PROJECT;
72
+ const target = process.env.NX_TASK_TARGET_TARGET;
73
+ const configuration = process.env.NX_TASK_TARGET_CONFIGURATION;
74
+ if (project && target) {
75
+ const originalTarget = { project, target, configuration };
76
+ const graph = yield (0, devkit_1.createProjectGraphAsync)();
77
+ const { options, node: projectNode } = getNxContext(graph, originalTarget);
78
+ const outputDir = `${(0, devkit_1.offsetFromRoot)(projectNode.data.root)}${options.outputPath}`;
79
+ return nextConfig.distDir && nextConfig.distDir !== '.next'
80
+ ? (0, devkit_1.joinPathFragments)(outputDir, nextConfig.distDir)
81
+ : (0, devkit_1.joinPathFragments)(outputDir, '.next');
82
+ }
83
+ else {
84
+ return '.next';
85
+ }
86
+ });
87
+ }
88
+ function withNx(_nextConfig = {}, context = getWithNxContext()) {
89
+ return (phase) => tslib_1.__awaiter(this, void 0, void 0, function* () {
90
+ if (phase === constants_1.PHASE_PRODUCTION_SERVER) {
91
+ // If we are running an already built production server, just return the configuration.
92
+ const { nx } = _nextConfig, validNextConfig = tslib_1.__rest(_nextConfig, ["nx"]);
93
+ return Object.assign(Object.assign({}, validNextConfig), { distDir: yield determineDistDirForProdServer(validNextConfig) });
94
+ }
95
+ else {
96
+ // Otherwise, add in webpack and eslint configuration for build or test.
97
+ let dependencies = [];
98
+ const graph = yield (0, devkit_1.createProjectGraphAsync)();
99
+ const originalTarget = {
100
+ project: process.env.NX_TASK_TARGET_PROJECT,
101
+ target: process.env.NX_TASK_TARGET_TARGET,
102
+ configuration: process.env.NX_TASK_TARGET_CONFIGURATION,
103
+ };
104
+ const { node: projectNode, options, projectName: project, targetName, configurationName, } = getNxContext(graph, originalTarget);
105
+ const projectDirectory = projectNode.data.root;
106
+ if (options.buildLibsFromSource === false && targetName) {
107
+ const result = (0, buildable_libs_utils_1.calculateProjectDependencies)(graph, devkit_1.workspaceRoot, project, targetName, configurationName);
108
+ dependencies = result.dependencies;
109
+ }
110
+ // Get next config
111
+ const nextConfig = getNextConfig(_nextConfig, context);
112
+ const outputDir = `${(0, devkit_1.offsetFromRoot)(projectDirectory)}${options.outputPath}`;
113
+ nextConfig.distDir =
114
+ nextConfig.distDir && nextConfig.distDir !== '.next'
115
+ ? (0, devkit_1.joinPathFragments)(outputDir, nextConfig.distDir)
116
+ : (0, devkit_1.joinPathFragments)(outputDir, '.next');
117
+ const userWebpackConfig = nextConfig.webpack;
118
+ nextConfig.webpack = (a, b) => (0, config_1.createWebpackConfig)(devkit_1.workspaceRoot, options.root, options.fileReplacements, options.assets, dependencies, path.join(devkit_1.workspaceRoot, context.libsDir))(userWebpackConfig ? userWebpackConfig(a, b) : a, b);
119
+ return nextConfig;
120
+ }
121
+ });
122
+ }
123
+ exports.withNx = withNx;
124
+ function getNextConfig(nextConfig = {}, context = getWithNxContext()) {
125
+ var _a;
126
+ // If `next-compose-plugins` is used, the context argument is invalid.
127
+ if (!context.libsDir || !context.workspaceRoot) {
128
+ context = getWithNxContext();
129
+ }
130
+ const userWebpack = nextConfig.webpack || ((x) => x);
131
+ const { nx } = nextConfig, validNextConfig = tslib_1.__rest(nextConfig, ["nx"]);
132
+ return Object.assign(Object.assign({ eslint: Object.assign({ ignoreDuringBuilds: true }, ((_a = validNextConfig.eslint) !== null && _a !== void 0 ? _a : {})) }, validNextConfig), { webpack: (config, options) => {
133
+ /*
134
+ * Update babel to support our monorepo setup.
135
+ * The 'upward' mode allows the root babel.config.json and per-project .babelrc files to be picked up.
136
+ */
137
+ options.defaultLoaders.babel.options.babelrc = true;
138
+ options.defaultLoaders.babel.options.rootMode = 'upward';
139
+ /*
140
+ * Modify the Next.js webpack config to allow workspace libs to use css modules.
141
+ * Note: This would be easier if Next.js exposes css-loader and sass-loader on `defaultLoaders`.
142
+ */
143
+ // Include workspace libs in css/sass loaders
144
+ const includes = [
145
+ require('path').join(context.workspaceRoot, context.libsDir),
146
+ ];
147
+ const nextCssLoaders = config.module.rules.find((rule) => typeof rule.oneOf === 'object');
148
+ // webpack config is not as expected
149
+ if (!nextCssLoaders)
150
+ return config;
151
+ /*
152
+ * 1. Modify css loader to enable module support for workspace libs
153
+ */
154
+ const nextCssLoader = nextCssLoaders.oneOf.find((rule) => rule.sideEffects === false && regexEqual(rule.test, /\.module\.css$/));
155
+ // Might not be found if Next.js webpack config changes in the future
156
+ if (nextCssLoader && nextCssLoader.issuer) {
157
+ nextCssLoader.issuer.or = nextCssLoader.issuer.and
158
+ ? nextCssLoader.issuer.and.concat(includes)
159
+ : includes;
160
+ delete nextCssLoader.issuer.and;
161
+ }
162
+ /*
163
+ * 2. Modify sass loader to enable module support for workspace libs
164
+ */
165
+ const nextSassLoader = nextCssLoaders.oneOf.find((rule) => rule.sideEffects === false &&
166
+ regexEqual(rule.test, /\.module\.(scss|sass)$/));
167
+ // Might not be found if Next.js webpack config changes in the future
168
+ if (nextSassLoader && nextSassLoader.issuer) {
169
+ nextSassLoader.issuer.or = nextSassLoader.issuer.and
170
+ ? nextSassLoader.issuer.and.concat(includes)
171
+ : includes;
172
+ delete nextSassLoader.issuer.and;
173
+ }
174
+ /*
175
+ * 3. Modify error loader to ignore css modules used by workspace libs
176
+ */
177
+ const nextErrorCssModuleLoader = nextCssLoaders.oneOf.find((rule) => rule.use &&
178
+ rule.use.loader === 'error-loader' &&
179
+ rule.use.options &&
180
+ (rule.use.options.reason ===
181
+ 'CSS Modules \u001b[1mcannot\u001b[22m be imported from within \u001b[1mnode_modules\u001b[22m.\n' +
182
+ 'Read more: https://err.sh/next.js/css-modules-npm' ||
183
+ rule.use.options.reason ===
184
+ 'CSS Modules cannot be imported from within node_modules.\nRead more: https://err.sh/next.js/css-modules-npm'));
185
+ // Might not be found if Next.js webpack config changes in the future
186
+ if (nextErrorCssModuleLoader) {
187
+ nextErrorCssModuleLoader.exclude = includes;
188
+ }
189
+ /**
190
+ * 4. Modify css loader to allow global css from node_modules to be imported from workspace libs
191
+ */
192
+ const nextGlobalCssLoader = nextCssLoaders.oneOf.find((rule) => {
193
+ var _a, _b;
194
+ return (_b = (_a = rule.include) === null || _a === void 0 ? void 0 : _a.and) === null || _b === void 0 ? void 0 : _b.find((include) => regexEqual(include, /node_modules/));
195
+ });
196
+ // Might not be found if Next.js webpack config changes in the future
197
+ if (nextGlobalCssLoader && nextGlobalCssLoader.issuer) {
198
+ nextGlobalCssLoader.issuer.or = nextGlobalCssLoader.issuer.and
199
+ ? nextGlobalCssLoader.issuer.and.concat(includes)
200
+ : includes;
201
+ delete nextGlobalCssLoader.issuer.and;
202
+ }
203
+ /**
204
+ * 5. Add env variables prefixed with NX_
205
+ */
206
+ addNxEnvVariables(config);
207
+ /**
208
+ * 6. Add SVGR support if option is on.
209
+ */
210
+ // Default SVGR support to be on for projects.
211
+ if ((nx === null || nx === void 0 ? void 0 : nx.svgr) !== false) {
212
+ config.module.rules.push({
213
+ test: /\.svg$/,
214
+ oneOf: [
215
+ // If coming from JS/TS file, then transform into React component using SVGR.
216
+ {
217
+ issuer: /\.[jt]sx?$/,
218
+ use: [
219
+ {
220
+ loader: require.resolve('@svgr/webpack'),
221
+ options: {
222
+ svgo: false,
223
+ titleProp: true,
224
+ ref: true,
225
+ },
226
+ },
227
+ {
228
+ loader: require.resolve('url-loader'),
229
+ options: {
230
+ limit: 10000,
231
+ name: '[name].[hash:7].[ext]',
232
+ },
233
+ },
234
+ ],
235
+ },
236
+ // Fallback to plain URL loader if someone just imports the SVG and references it on the <img src> tag
237
+ {
238
+ loader: require.resolve('url-loader'),
239
+ options: {
240
+ limit: 10000,
241
+ name: '[name].[hash:7].[ext]',
242
+ },
243
+ },
244
+ ],
245
+ });
246
+ }
247
+ return userWebpack(config, options);
248
+ } });
249
+ }
250
+ exports.getNextConfig = getNextConfig;
251
+ function getNxEnvironmentVariables() {
252
+ return Object.keys(process.env)
253
+ .filter((env) => /^NX_/i.test(env))
254
+ .reduce((env, key) => {
255
+ env[key] = process.env[key];
256
+ return env;
257
+ }, {});
258
+ }
259
+ function addNxEnvVariables(config) {
260
+ var _a;
261
+ const maybeDefinePlugin = (_a = config.plugins) === null || _a === void 0 ? void 0 : _a.find((plugin) => {
262
+ var _a;
263
+ return (_a = plugin.definitions) === null || _a === void 0 ? void 0 : _a['process.env.NODE_ENV'];
264
+ });
265
+ if (maybeDefinePlugin) {
266
+ const env = getNxEnvironmentVariables();
267
+ Object.entries(env)
268
+ .map(([name, value]) => [`process.env.${name}`, `"${value}"`])
269
+ .filter(([name]) => !maybeDefinePlugin.definitions[name])
270
+ .forEach(([name, value]) => (maybeDefinePlugin.definitions[name] = value));
271
+ }
272
+ }
273
+ // Support for older generated code: `const withNx = require('@nx/next/plugins/with-nx');`
274
+ module.exports = withNx;
275
+ // Support for newer generated code: `const { withNx } = require(...);`
276
+ module.exports.withNx = withNx;
277
+ module.exports.getNextConfig = getNextConfig;
278
+ //# sourceMappingURL=with-nx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-nx.js","sourceRoot":"","sources":["../../../../packages/next/plugins/with-nx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { NextConfigFn } from '../src/utils/config';
2
+ export declare function withStylus(configFn: NextConfigFn): NextConfigFn;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withStylus = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // Adapted from https://raw.githubusercontent.com/elado/next-with-less/main/src/index.js
6
+ const webpack_merge_1 = require("webpack-merge");
7
+ const addStylusToRegExp = (rx) => new RegExp(rx.source.replace('|sass', '|sass|styl'), rx.flags);
8
+ function patchNextCSSWithStylus(nextCSSModule = require('next/dist/build/webpack/config/blocks/css')) {
9
+ nextCSSModule.regexLikeCss = addStylusToRegExp(nextCSSModule.regexLikeCss);
10
+ }
11
+ patchNextCSSWithStylus();
12
+ function withStylus(configFn) {
13
+ return (phase) => tslib_1.__awaiter(this, void 0, void 0, function* () {
14
+ const _a = yield configFn(phase), { stylusLoaderOptions = {} } = _a, nextConfig = tslib_1.__rest(_a, ["stylusLoaderOptions"]);
15
+ return Object.assign({}, nextConfig, {
16
+ webpack(config, opts) {
17
+ // there are 2 relevant sass rules in next.js - css modules and global css
18
+ let sassModuleRule;
19
+ // global sass rule (does not exist in server builds)
20
+ let sassGlobalRule;
21
+ const cssRule = config.module.rules.find((rule) => { var _a; return (_a = rule.oneOf) === null || _a === void 0 ? void 0 : _a.find((r) => r === null || r === void 0 ? void 0 : r[Symbol.for('__next_css_remove')]); });
22
+ const addStylusRuleToTest = (test) => {
23
+ if (Array.isArray(test)) {
24
+ return test.map((rx) => addStylusToRegExp(rx));
25
+ }
26
+ else {
27
+ return addStylusToRegExp(test);
28
+ }
29
+ };
30
+ cssRule.oneOf.forEach((rule) => {
31
+ var _a, _b, _c, _d, _e, _f, _g, _h;
32
+ if ((_a = rule.options) === null || _a === void 0 ? void 0 : _a.__next_css_remove)
33
+ return;
34
+ if (((_b = rule.use) === null || _b === void 0 ? void 0 : _b.loader) === 'error-loader') {
35
+ rule.test = addStylusRuleToTest(rule.test);
36
+ }
37
+ else if ((_d = (_c = rule.use) === null || _c === void 0 ? void 0 : _c.loader) === null || _d === void 0 ? void 0 : _d.includes('file-loader')) {
38
+ rule.issuer = addStylusRuleToTest(rule.issuer);
39
+ }
40
+ else if ((_f = (_e = rule.use) === null || _e === void 0 ? void 0 : _e.includes) === null || _f === void 0 ? void 0 : _f.call(_e, 'ignore-loader')) {
41
+ rule.test = addStylusRuleToTest(rule.test);
42
+ }
43
+ else if (((_g = rule.test) === null || _g === void 0 ? void 0 : _g.source) === '\\.module\\.(scss|sass)$') {
44
+ sassModuleRule = rule;
45
+ }
46
+ else if (((_h = rule.test) === null || _h === void 0 ? void 0 : _h.source) === '(?<!\\.module)\\.(scss|sass)$') {
47
+ sassGlobalRule = rule;
48
+ }
49
+ });
50
+ const stylusLoader = {
51
+ loader: 'stylus-loader',
52
+ options: Object.assign(Object.assign({}, stylusLoaderOptions), { stylusOptions: Object.assign({ javascriptEnabled: true }, stylusLoaderOptions.stylusOptions) }),
53
+ };
54
+ let stylusModuleRule = (0, webpack_merge_1.merge)({}, sassModuleRule);
55
+ const configureStylusRule = (rule) => {
56
+ rule.test = new RegExp(rule.test.source.replace('(scss|sass)', 'styl'));
57
+ // replace sass-loader (last entry) with stylus-loader
58
+ rule.use.splice(-1, 1, stylusLoader);
59
+ };
60
+ configureStylusRule(stylusModuleRule);
61
+ cssRule.oneOf.splice(cssRule.oneOf.indexOf(sassModuleRule) + 1, 0, stylusModuleRule);
62
+ if (sassGlobalRule) {
63
+ let stylusGlobalRule = (0, webpack_merge_1.merge)({}, sassGlobalRule);
64
+ configureStylusRule(stylusGlobalRule);
65
+ cssRule.oneOf.splice(cssRule.oneOf.indexOf(sassGlobalRule) + 1, 0, stylusGlobalRule);
66
+ }
67
+ if (typeof nextConfig.webpack === 'function') {
68
+ return nextConfig.webpack(config, opts);
69
+ }
70
+ return config;
71
+ },
72
+ });
73
+ });
74
+ }
75
+ exports.withStylus = withStylus;
76
+ module.exports = withStylus;
77
+ module.exports.withStylus = withStylus;
78
+ module.exports.patchNext = patchNextCSSWithStylus;
79
+ //# sourceMappingURL=with-stylus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-stylus.js","sourceRoot":"","sources":["../../../../packages/next/plugins/with-stylus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import 'dotenv/config';
2
+ import { ExecutorContext } from '@nx/devkit';
3
+ import { NextBuildBuilderOptions } from '../../utils/types';
4
+ export default function buildExecutor(options: NextBuildBuilderOptions, context: ExecutorContext): Promise<{
5
+ success: boolean;
6
+ }>;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ require("dotenv/config");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const js_1 = require("@nx/js");
7
+ const build_1 = require("next/dist/build");
8
+ const path_1 = require("path");
9
+ const fs_extra_1 = require("fs-extra");
10
+ const semver_1 = require("semver");
11
+ const fileutils_1 = require("@nx/workspace/src/utilities/fileutils");
12
+ const semver_2 = require("@nx/devkit/src/utils/semver");
13
+ const update_package_json_1 = require("./lib/update-package-json");
14
+ const create_next_config_file_1 = require("./lib/create-next-config-file");
15
+ const check_project_1 = require("./lib/check-project");
16
+ const lock_file_1 = require("nx/src/plugins/js/lock-file/lock-file");
17
+ function buildExecutor(options, context) {
18
+ var _a, _b, _c;
19
+ var _d, _e;
20
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ // Cast to any to overwrite NODE_ENV
22
+ (_d = process.env).NODE_ENV || (_d.NODE_ENV = 'production');
23
+ const root = (0, path_1.resolve)(context.root, options.root);
24
+ (0, check_project_1.checkPublicDirectory)(root);
25
+ // Set `__NEXT_REACT_ROOT` based on installed ReactDOM version
26
+ const packageJsonPath = (0, path_1.join)(root, 'package.json');
27
+ const packageJson = (0, fs_extra_1.existsSync)(packageJsonPath)
28
+ ? (0, devkit_1.readJsonFile)(packageJsonPath)
29
+ : undefined;
30
+ const rootPackageJson = (0, devkit_1.readJsonFile)((0, path_1.join)(devkit_1.workspaceRoot, 'package.json'));
31
+ const reactDomVersion = (_b = (_a = packageJson === null || packageJson === void 0 ? void 0 : packageJson.dependencies) === null || _a === void 0 ? void 0 : _a['react-dom']) !== null && _b !== void 0 ? _b : (_c = rootPackageJson.dependencies) === null || _c === void 0 ? void 0 : _c['react-dom'];
32
+ const hasReact18 = reactDomVersion &&
33
+ (0, semver_1.gte)((0, semver_2.checkAndCleanWithSemver)('react-dom', reactDomVersion), '18.0.0');
34
+ if (hasReact18) {
35
+ (_e = process.env).__NEXT_REACT_ROOT || (_e.__NEXT_REACT_ROOT = 'true');
36
+ }
37
+ yield (0, build_1.default)(root);
38
+ if (!(0, fileutils_1.directoryExists)(options.outputPath)) {
39
+ (0, fs_extra_1.mkdir)(options.outputPath);
40
+ }
41
+ const builtPackageJson = (0, js_1.createPackageJson)(context.projectName, context.projectGraph, {
42
+ target: context.targetName,
43
+ root: context.root,
44
+ isProduction: !options.includeDevDependenciesInPackageJson, // By default we remove devDependencies since this is a production build.
45
+ });
46
+ (0, update_package_json_1.updatePackageJson)(builtPackageJson, context);
47
+ (0, devkit_1.writeJsonFile)(`${options.outputPath}/package.json`, builtPackageJson);
48
+ if (options.generateLockfile) {
49
+ const lockFile = (0, js_1.createLockFile)(builtPackageJson);
50
+ (0, fs_extra_1.writeFileSync)(`${options.outputPath}/${(0, lock_file_1.getLockFileName)()}`, lockFile, {
51
+ encoding: 'utf-8',
52
+ });
53
+ }
54
+ (0, create_next_config_file_1.createNextConfigFile)(options, context);
55
+ (0, fs_extra_1.copySync)((0, path_1.join)(root, 'public'), (0, path_1.join)(options.outputPath, 'public'), {
56
+ dereference: true,
57
+ });
58
+ return { success: true };
59
+ });
60
+ }
61
+ exports.default = buildExecutor;
62
+ //# sourceMappingURL=build.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.impl.js","sourceRoot":"","sources":["../../../../../../packages/next/src/executors/build/build.impl.ts"],"names":[],"mappings":";;;AAAA,yBAAuB;AACvB,uCAKoB;AACpB,+BAA2D;AAC3D,2CAAoC;AACpC,+BAAqC;AACrC,uCAAsE;AACtE,mCAA6B;AAC7B,qEAAwE;AACxE,wDAAsE;AAEtE,mEAA8D;AAC9D,2EAAqE;AACrE,uDAA2D;AAG3D,qEAAwE;AAExE,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,MAAC,OAAO,CAAC,GAAW,EAAC,iBAAiB,QAAjB,iBAAiB,GAAK,MAAM,EAAC;SACnD;QAED,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QAElB,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,2BAAe,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;AA3DD,gCA2DC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ const build_impl_1 = require("./build.impl");
5
+ exports.default = (0, devkit_1.convertNxExecutor)(build_impl_1.default);
6
+ //# sourceMappingURL=compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../packages/next/src/executors/build/compat.ts"],"names":[],"mappings":";;AAAA,uCAA+C;AAE/C,6CAAyC;AAEzC,kBAAe,IAAA,0BAAiB,EAAC,oBAAa,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function checkPublicDirectory(root: string): void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkPublicDirectory = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const fs_extra_1 = require("fs-extra");
6
+ const path_1 = require("path");
7
+ function checkPublicDirectory(root) {
8
+ if ((0, fs_extra_1.readdirSync)((0, path_1.join)(root, 'public')).length === 0) {
9
+ devkit_1.logger.warn('public directory cannot be empty. This may result in errors during the deployment. Consider adding a public/.gitkeep file');
10
+ }
11
+ }
12
+ exports.checkPublicDirectory = checkPublicDirectory;
13
+ //# sourceMappingURL=check-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-project.js","sourceRoot":"","sources":["../../../../../../../packages/next/src/executors/build/lib/check-project.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,uCAAuC;AACvC,+BAA4B;AAE5B,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAA,sBAAW,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAClD,eAAM,CAAC,IAAI,CACT,2HAA2H,CAC5H,CAAC;KACH;AACH,CAAC;AAND,oDAMC"}
@@ -0,0 +1,3 @@
1
+ import { ExecutorContext } from '@nx/devkit';
2
+ import type { NextBuildBuilderOptions } from '../../../utils/types';
3
+ export declare function createNextConfigFile(options: NextBuildBuilderOptions, context: ExecutorContext): void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNextConfigFile = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ function createNextConfigFile(options, context) {
7
+ const nextConfigPath = options.nextConfig
8
+ ? (0, path_1.join)(context.root, options.nextConfig)
9
+ : (0, path_1.join)(context.root, options.root, 'next.config.js');
10
+ if ((0, fs_1.existsSync)(nextConfigPath)) {
11
+ (0, fs_1.copyFileSync)(nextConfigPath, (0, path_1.join)(options.outputPath, 'next.config.js'));
12
+ }
13
+ }
14
+ exports.createNextConfigFile = createNextConfigFile;
15
+ //# sourceMappingURL=create-next-config-file.js.map
@@ -0,0 +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":";;;AAEA,2BAA8C;AAC9C,+BAA4B;AAI5B,SAAgB,oBAAoB,CAClC,OAAgC,EAChC,OAAwB;IAExB,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU;QACvC,CAAC,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC;QACxC,CAAC,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAEvD,IAAI,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE;QAC9B,IAAA,iBAAY,EAAC,cAAc,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;KAC1E;AACH,CAAC;AAXD,oDAWC"}
@@ -0,0 +1,3 @@
1
+ import type { ExecutorContext } from '@nx/devkit';
2
+ import type { PackageJson } from 'nx/src/utils/package-json';
3
+ export declare function updatePackageJson(packageJson: PackageJson, context: ExecutorContext): void;