@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.
- package/CHANGELOG.md +8 -0
- package/LICENSE +22 -0
- package/README.md +63 -0
- package/babel.d.ts +0 -0
- package/babel.js +13 -0
- package/babel.js.map +1 -0
- package/executors.json +36 -0
- package/generators.json +72 -0
- package/index.d.ts +8 -0
- package/index.js +20 -0
- package/index.js.map +1 -0
- package/migrations.json +312 -0
- package/package.json +64 -0
- package/plugins/with-less.d.ts +2 -0
- package/plugins/with-less.js +79 -0
- package/plugins/with-less.js.map +1 -0
- package/plugins/with-nx.d.ts +13 -0
- package/plugins/with-nx.js +278 -0
- package/plugins/with-nx.js.map +1 -0
- package/plugins/with-stylus.d.ts +2 -0
- package/plugins/with-stylus.js +79 -0
- package/plugins/with-stylus.js.map +1 -0
- package/src/executors/build/build.impl.d.ts +6 -0
- package/src/executors/build/build.impl.js +62 -0
- package/src/executors/build/build.impl.js.map +1 -0
- package/src/executors/build/compat.d.ts +2 -0
- package/src/executors/build/compat.js +6 -0
- package/src/executors/build/compat.js.map +1 -0
- package/src/executors/build/lib/check-project.d.ts +1 -0
- package/src/executors/build/lib/check-project.js +13 -0
- package/src/executors/build/lib/check-project.js.map +1 -0
- package/src/executors/build/lib/create-next-config-file.d.ts +3 -0
- package/src/executors/build/lib/create-next-config-file.js +15 -0
- package/src/executors/build/lib/create-next-config-file.js.map +1 -0
- package/src/executors/build/lib/update-package-json.d.ts +3 -0
- package/src/executors/build/lib/update-package-json.js +24 -0
- package/src/executors/build/lib/update-package-json.js.map +1 -0
- package/src/executors/build/schema.json +68 -0
- package/src/executors/export/compat.d.ts +2 -0
- package/src/executors/export/compat.js +6 -0
- package/src/executors/export/compat.js.map +1 -0
- package/src/executors/export/export.impl.d.ts +6 -0
- package/src/executors/export/export.impl.js +53 -0
- package/src/executors/export/export.impl.js.map +1 -0
- package/src/executors/export/schema.json +30 -0
- package/src/executors/server/compat.d.ts +2 -0
- package/src/executors/server/compat.js +6 -0
- package/src/executors/server/compat.js.map +1 -0
- package/src/executors/server/lib/default-server.d.ts +6 -0
- package/src/executors/server/lib/default-server.js +31 -0
- package/src/executors/server/lib/default-server.js.map +1 -0
- package/src/executors/server/lib/tsnode-register.d.ts +1 -0
- package/src/executors/server/lib/tsnode-register.js +23 -0
- package/src/executors/server/lib/tsnode-register.js.map +1 -0
- package/src/executors/server/schema.json +56 -0
- package/src/executors/server/server.impl.d.ts +7 -0
- package/src/executors/server/server.impl.js +114 -0
- package/src/executors/server/server.impl.js.map +1 -0
- package/src/generators/application/application.d.ts +4 -0
- package/src/generators/application/application.js +43 -0
- package/src/generators/application/application.js.map +1 -0
- package/src/generators/application/files/app/api/hello/route.ts__tmpl__ +4 -0
- package/src/generators/application/files/app/global.__stylesExt____tmpl__ +1 -0
- package/src/generators/application/files/app/layout.tsx__tmpl__ +22 -0
- package/src/generators/application/files/app/page.module.__style__ +1 -0
- package/src/generators/application/files/app/page.tsx__tmpl__ +28 -0
- package/src/generators/application/files/common/.babelrc__tmpl__ +21 -0
- package/src/generators/application/files/common/index.d.ts__tmpl__ +18 -0
- package/src/generators/application/files/common/next-env.d.ts__tmpl__ +5 -0
- package/src/generators/application/files/common/next.config.js__tmpl__ +112 -0
- package/src/generators/application/files/common/public/.gitkeep +0 -0
- package/src/generators/application/files/common/public/favicon.ico +0 -0
- package/src/generators/application/files/common/specs/__fileName__.spec.tsx__tmpl__ +11 -0
- package/src/generators/application/files/common/tsconfig.json__tmpl__ +18 -0
- package/src/generators/application/files/pages/__fileName__.module.__style__ +1 -0
- package/src/generators/application/files/pages/__fileName__.tsx__tmpl__ +28 -0
- package/src/generators/application/files/pages/_app.tsx__tmpl__ +18 -0
- package/src/generators/application/files/pages/_document.tsx__tmpl__ +33 -0
- package/src/generators/application/files/pages/styles.__stylesExt____tmpl__ +1 -0
- package/src/generators/application/lib/add-cypress.d.ts +3 -0
- package/src/generators/application/lib/add-cypress.js +18 -0
- package/src/generators/application/lib/add-cypress.js.map +1 -0
- package/src/generators/application/lib/add-jest.d.ts +3 -0
- package/src/generators/application/lib/add-jest.js +36 -0
- package/src/generators/application/lib/add-jest.js.map +1 -0
- package/src/generators/application/lib/add-linting.d.ts +3 -0
- package/src/generators/application/lib/add-linting.js +66 -0
- package/src/generators/application/lib/add-linting.js.map +1 -0
- package/src/generators/application/lib/add-project.d.ts +3 -0
- package/src/generators/application/lib/add-project.js +56 -0
- package/src/generators/application/lib/add-project.js.map +1 -0
- package/src/generators/application/lib/create-application-files.d.ts +3 -0
- package/src/generators/application/lib/create-application-files.helpers.d.ts +2 -0
- package/src/generators/application/lib/create-application-files.helpers.js +785 -0
- package/src/generators/application/lib/create-application-files.helpers.js.map +1 -0
- package/src/generators/application/lib/create-application-files.js +40 -0
- package/src/generators/application/lib/create-application-files.js.map +1 -0
- package/src/generators/application/lib/normalize-options.d.ts +13 -0
- package/src/generators/application/lib/normalize-options.js +35 -0
- package/src/generators/application/lib/normalize-options.js.map +1 -0
- package/src/generators/application/lib/set-defaults.d.ts +3 -0
- package/src/generators/application/lib/set-defaults.js +14 -0
- package/src/generators/application/lib/set-defaults.js.map +1 -0
- package/src/generators/application/lib/update-jest-config.d.ts +3 -0
- package/src/generators/application/lib/update-jest-config.js +16 -0
- package/src/generators/application/lib/update-jest-config.js.map +1 -0
- package/src/generators/application/schema.d.ts +19 -0
- package/src/generators/application/schema.json +131 -0
- package/src/generators/component/component.d.ts +15 -0
- package/src/generators/component/component.js +34 -0
- package/src/generators/component/component.js.map +1 -0
- package/src/generators/component/schema.json +119 -0
- package/src/generators/custom-server/custom-server.d.ts +4 -0
- package/src/generators/custom-server/custom-server.js +79 -0
- package/src/generators/custom-server/custom-server.js.map +1 -0
- package/src/generators/custom-server/files/server/main.ts__tmpl__ +46 -0
- package/src/generators/custom-server/files/tsconfig.server.json__tmpl__ +15 -0
- package/src/generators/custom-server/schema.d.ts +4 -0
- package/src/generators/custom-server/schema.json +30 -0
- package/src/generators/init/init.d.ts +5 -0
- package/src/generators/init/init.js +49 -0
- package/src/generators/init/init.js.map +1 -0
- package/src/generators/init/schema.d.ts +7 -0
- package/src/generators/init/schema.json +39 -0
- package/src/generators/library/lib/normalize-options.d.ts +7 -0
- package/src/generators/library/lib/normalize-options.js +17 -0
- package/src/generators/library/lib/normalize-options.js.map +1 -0
- package/src/generators/library/library.d.ts +5 -0
- package/src/generators/library/library.js +79 -0
- package/src/generators/library/library.js.map +1 -0
- package/src/generators/library/schema.d.ts +25 -0
- package/src/generators/library/schema.json +156 -0
- package/src/generators/page/page.d.ts +5 -0
- package/src/generators/page/page.js +27 -0
- package/src/generators/page/page.js.map +1 -0
- package/src/generators/page/schema.d.ts +13 -0
- package/src/generators/page/schema.json +107 -0
- package/src/migrations/update-12-10-0/fix-page-dir-for-eslint.d.ts +3 -0
- package/src/migrations/update-12-10-0/fix-page-dir-for-eslint.js +34 -0
- package/src/migrations/update-12-10-0/fix-page-dir-for-eslint.js.map +1 -0
- package/src/migrations/update-12-8-0/remove-styled-jsx-babel-plugin.d.ts +3 -0
- package/src/migrations/update-12-8-0/remove-styled-jsx-babel-plugin.js +26 -0
- package/src/migrations/update-12-8-0/remove-styled-jsx-babel-plugin.js.map +1 -0
- package/src/migrations/update-13-0-0/update-emotion-setup.d.ts +3 -0
- package/src/migrations/update-13-0-0/update-emotion-setup.js +39 -0
- package/src/migrations/update-13-0-0/update-emotion-setup.js.map +1 -0
- package/src/migrations/update-13-0-0/update-to-webpack-5.d.ts +3 -0
- package/src/migrations/update-13-0-0/update-to-webpack-5.js +32 -0
- package/src/migrations/update-13-0-0/update-to-webpack-5.js.map +1 -0
- package/src/migrations/update-13-0-3/fix-less.d.ts +3 -0
- package/src/migrations/update-13-0-3/fix-less.js +27 -0
- package/src/migrations/update-13-0-3/fix-less.js.map +1 -0
- package/src/migrations/update-13-1-1/enable-swc.d.ts +3 -0
- package/src/migrations/update-13-1-1/enable-swc.js +46 -0
- package/src/migrations/update-13-1-1/enable-swc.js.map +1 -0
- package/src/migrations/update-14-0-0/add-default-development-configurations.d.ts +3 -0
- package/src/migrations/update-14-0-0/add-default-development-configurations.js +36 -0
- package/src/migrations/update-14-0-0/add-default-development-configurations.js.map +1 -0
- package/src/migrations/update-14-4-3/add-dev-output-path.d.ts +3 -0
- package/src/migrations/update-14-4-3/add-dev-output-path.js +24 -0
- package/src/migrations/update-14-4-3/add-dev-output-path.js.map +1 -0
- package/src/migrations/update-14-5-3/add-gitignore-entry.d.ts +3 -0
- package/src/migrations/update-14-5-3/add-gitignore-entry.js +15 -0
- package/src/migrations/update-14-5-3/add-gitignore-entry.js.map +1 -0
- package/src/migrations/update-14-5-3/update-dev-output-path.d.ts +3 -0
- package/src/migrations/update-14-5-3/update-dev-output-path.js +29 -0
- package/src/migrations/update-14-5-3/update-dev-output-path.js.map +1 -0
- package/src/migrations/update-14-5-7/update-next-eslint.d.ts +3 -0
- package/src/migrations/update-14-5-7/update-next-eslint.js +32 -0
- package/src/migrations/update-14-5-7/update-next-eslint.js.map +1 -0
- package/src/migrations/update-15-8-8/add-style-packages.d.ts +3 -0
- package/src/migrations/update-15-8-8/add-style-packages.js +28 -0
- package/src/migrations/update-15-8-8/add-style-packages.js.map +1 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +13 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js.map +1 -0
- package/src/utils/add-gitignore-entry.d.ts +2 -0
- package/src/utils/add-gitignore-entry.js +18 -0
- package/src/utils/add-gitignore-entry.js.map +1 -0
- package/src/utils/config-invalid-function.fixture.d.ts +0 -0
- package/src/utils/config-invalid-function.fixture.js +2 -0
- package/src/utils/config-invalid-function.fixture.js.map +1 -0
- package/src/utils/config-not-a-function.fixture.d.ts +0 -0
- package/src/utils/config-not-a-function.fixture.js +2 -0
- package/src/utils/config-not-a-function.fixture.js.map +1 -0
- package/src/utils/config.d.ts +15 -0
- package/src/utils/config.fixture.d.ts +0 -0
- package/src/utils/config.fixture.js +4 -0
- package/src/utils/config.fixture.js.map +1 -0
- package/src/utils/config.js +87 -0
- package/src/utils/config.js.map +1 -0
- package/src/utils/constants.d.ts +1 -0
- package/src/utils/constants.js +5 -0
- package/src/utils/constants.js.map +1 -0
- package/src/utils/create-copy-plugin.d.ts +2 -0
- package/src/utils/create-copy-plugin.js +63 -0
- package/src/utils/create-copy-plugin.js.map +1 -0
- package/src/utils/generate-globs.d.ts +5 -0
- package/src/utils/generate-globs.js +30 -0
- package/src/utils/generate-globs.js.map +1 -0
- package/src/utils/styles.d.ts +40 -0
- package/src/utils/styles.js +56 -0
- package/src/utils/styles.js.map +1 -0
- package/src/utils/types.d.ts +53 -0
- package/src/utils/types.js +3 -0
- package/src/utils/types.js.map +1 -0
- package/src/utils/versions.d.ts +9 -0
- package/src/utils/versions.js +13 -0
- package/src/utils/versions.js.map +1 -0
- package/tailwind.d.ts +2 -0
- package/tailwind.js +7 -0
- package/tailwind.js.map +1 -0
- 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,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":";;;;AAAA,wFAAwF;AACxF,iDAAsC;AAGtC,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE,CAC/B,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAEjE,SAAS,sBAAsB,CAC7B,gBAAgB,OAAO,CAAC,2CAA2C,CAAQ;IAE3E,aAAa,CAAC,YAAY,GAAG,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAC7E,CAAC;AAED,sBAAsB,EAAE,CAAC;AAEzB,SAAgB,UAAU,CAAC,QAAsB;IAC/C,OAAO,CAAO,KAAa,EAAE,EAAE;QAC7B,MAAM,KAA8C,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAnE,EAAE,mBAAmB,GAAG,EAAE,OAAyC,EAApC,UAAU,sBAAzC,uBAA2C,CAAwB,CAAC;QAE1E,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE;YACnC,OAAO,CAAC,MAAM,EAAE,IAAI;gBAClB,0EAA0E;gBAC1E,IAAI,cAAc,CAAC;gBACnB,qDAAqD;gBACrD,IAAI,cAAc,CAAC;gBAEnB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,WAChD,OAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA,EAAA,CAC9D,CAAC;gBAEF,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,EAAE;oBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;qBAChD;yBAAM;wBACL,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;qBAChC;gBACH,CAAC,CAAC;gBAEF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;oBAC7B,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,iBAAiB;wBAAE,OAAO;oBAE5C,IAAI,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,MAAM,MAAK,cAAc,EAAE;wBACvC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC5C;yBAAM,IAAI,MAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,MAAM,0CAAE,QAAQ,CAAC,aAAa,CAAC,EAAE;wBACpD,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBAChD;yBAAM,IAAI,MAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,mDAAG,eAAe,CAAC,EAAE;wBAChD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC5C;yBAAM,IAAI,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,MAAK,0BAA0B,EAAE;wBAC3D,cAAc,GAAG,IAAI,CAAC;qBACvB;yBAAM,IAAI,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,MAAK,+BAA+B,EAAE;wBAChE,cAAc,GAAG,IAAI,CAAC;qBACvB;gBACH,CAAC,CAAC,CAAC;gBAEH,MAAM,YAAY,GAAG;oBACnB,MAAM,EAAE,eAAe;oBACvB,OAAO,kCACF,mBAAmB,KACtB,aAAa,kBACX,iBAAiB,EAAE,IAAI,IACpB,mBAAmB,CAAC,aAAa,IAEvC;iBACF,CAAC;gBAEF,IAAI,gBAAgB,GAAG,IAAA,qBAAK,EAAC,EAAE,EAAE,cAAc,CAAC,CAAC;gBAEjD,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,EAAE;oBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAChD,CAAC;oBACF,sDAAsD;oBACtD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;gBACvC,CAAC,CAAC;gBAEF,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;gBACtC,OAAO,CAAC,KAAK,CAAC,MAAM,CAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EACzC,CAAC,EACD,gBAAgB,CACjB,CAAC;gBAEF,IAAI,cAAc,EAAE;oBAClB,IAAI,gBAAgB,GAAG,IAAA,qBAAK,EAAC,EAAE,EAAE,cAAc,CAAC,CAAC;oBACjD,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;oBACtC,OAAO,CAAC,KAAK,CAAC,MAAM,CAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EACzC,CAAC,EACD,gBAAgB,CACjB,CAAC;iBACH;gBAED,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;oBAC5C,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBACzC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAA,CAAC;AACJ,CAAC;AArFD,gCAqFC;AAED,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;AAC5B,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,sBAAsB,CAAC"}
|
|
@@ -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,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,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"}
|