@nrwl/js 14.8.8 → 14.9.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 +1 -1
- package/LICENSE +22 -22
- package/README.md +5 -26
- package/babel.d.ts +10 -0
- package/babel.js +89 -0
- package/babel.js.map +1 -0
- package/generators.json +4 -2
- package/migrations.json +20 -1
- package/package.json +19 -10
- package/src/executors/node/node.impl.js +36 -28
- package/src/executors/node/node.impl.js.map +1 -1
- package/src/executors/node/schema.json +3 -1
- package/src/executors/swc/schema.json +39 -5
- package/src/executors/swc/swc.impl.d.ts +4 -0
- package/src/executors/swc/swc.impl.js +56 -6
- package/src/executors/swc/swc.impl.js.map +1 -1
- package/src/executors/tsc/schema.json +36 -3
- package/src/executors/tsc/tsc.impl.d.ts +2 -5
- package/src/executors/tsc/tsc.impl.js +35 -13
- package/src/executors/tsc/tsc.impl.js.map +1 -1
- package/src/generators/convert-to-swc/convert-to-swc.js +2 -4
- package/src/generators/convert-to-swc/convert-to-swc.js.map +1 -1
- package/src/generators/init/files/__fileName__ +20 -0
- package/src/generators/init/init.d.ts +4 -2
- package/src/generators/init/init.js +59 -2
- package/src/generators/init/init.js.map +1 -1
- package/src/generators/init/schema.d.ts +6 -0
- package/src/generators/init/schema.json +24 -1
- package/src/generators/library/files/jest-config/jest.config.__ext__ +8 -1
- package/src/generators/library/files/lib/tsconfig.lib.json__tmpl__ +2 -2
- package/src/generators/library/library.js +136 -85
- package/src/generators/library/library.js.map +1 -1
- package/src/generators/library/schema.json +29 -19
- package/src/index.d.ts +8 -0
- package/src/index.js +12 -1
- package/src/index.js.map +1 -1
- package/src/migrations/update-13-10-1/update-lib-swcrc-exclude.js +1 -1
- package/src/migrations/update-13-10-1/update-lib-swcrc-exclude.js.map +1 -1
- package/src/migrations/update-13-8-5/update-swcrc.js +2 -2
- package/src/migrations/update-13-8-5/update-swcrc.js.map +1 -1
- package/src/migrations/update-14-0-0/exclude-jest-config-swcrc.js +1 -1
- package/src/migrations/update-14-0-0/exclude-jest-config-swcrc.js.map +1 -1
- package/src/migrations/update-14-1-5/update-swcrc-path.js +1 -1
- package/src/migrations/update-14-1-5/update-swcrc-path.js.map +1 -1
- package/src/migrations/update-15-8-0/rename-swcrc-config.d.ts +2 -0
- package/src/migrations/update-15-8-0/rename-swcrc-config.js +81 -0
- package/src/migrations/update-15-8-0/rename-swcrc-config.js.map +1 -0
- package/src/utils/add-babel-inputs.d.ts +2 -0
- package/src/utils/add-babel-inputs.js +27 -0
- package/src/utils/add-babel-inputs.js.map +1 -0
- package/src/utils/assets/copy-assets-handler.d.ts +2 -2
- package/src/utils/assets/copy-assets-handler.js +12 -5
- package/src/utils/assets/copy-assets-handler.js.map +1 -1
- package/src/utils/assets/index.js +11 -14
- package/src/utils/assets/index.js.map +1 -1
- package/src/utils/buildable-libs-utils.d.ts +32 -0
- package/src/utils/buildable-libs-utils.js +309 -0
- package/src/utils/buildable-libs-utils.js.map +1 -0
- package/src/utils/check-dependencies.d.ts +2 -2
- package/src/utils/check-dependencies.js +1 -1
- package/src/utils/check-dependencies.js.map +1 -1
- package/src/utils/code-frames/identifiers.d.ts +0 -20
- package/src/utils/code-frames/identifiers.js +38 -184
- package/src/utils/code-frames/identifiers.js.map +1 -1
- package/src/utils/compiler-helper-dependency.d.ts +1 -1
- package/src/utils/compiler-helper-dependency.js +2 -2
- package/src/utils/compiler-helper-dependency.js.map +1 -1
- package/src/utils/generate-globs.d.ts +6 -0
- package/src/utils/generate-globs.js +81 -0
- package/src/utils/generate-globs.js.map +1 -0
- package/src/utils/inline.d.ts +19 -0
- package/src/utils/inline.js +210 -0
- package/src/utils/inline.js.map +1 -0
- package/src/utils/package-json/index.d.ts +2 -1
- package/src/utils/package-json/index.js +6 -5
- package/src/utils/package-json/index.js.map +1 -1
- package/src/utils/package-json/update-package-json.d.ts +4 -2
- package/src/utils/package-json/update-package-json.js +96 -16
- package/src/utils/package-json/update-package-json.js.map +1 -1
- package/src/utils/prettier.d.ts +6 -0
- package/src/utils/prettier.js +38 -0
- package/src/utils/prettier.js.map +1 -0
- package/src/utils/schema.d.ts +8 -3
- package/src/utils/swc/add-swc-config.d.ts +1 -1
- package/src/utils/swc/add-swc-config.js +7 -7
- package/src/utils/swc/add-swc-config.js.map +1 -1
- package/src/utils/swc/compile-swc.d.ts +4 -0
- package/src/utils/swc/compile-swc.js +10 -7
- package/src/utils/swc/compile-swc.js.map +1 -1
- package/src/utils/swc/get-swcrc-path.d.ts +1 -1
- package/src/utils/swc/get-swcrc-path.js +7 -4
- package/src/utils/swc/get-swcrc-path.js.map +1 -1
- package/src/utils/swc/inline.d.ts +2 -0
- package/src/utils/swc/inline.js +13 -0
- package/src/utils/swc/inline.js.map +1 -0
- package/src/utils/typescript/ast-utils.d.ts +22 -0
- package/src/utils/typescript/ast-utils.js +199 -0
- package/src/utils/typescript/ast-utils.js.map +1 -0
- package/src/utils/typescript/compile-typescript-files.d.ts +6 -2
- package/src/utils/typescript/compile-typescript-files.js +16 -10
- package/src/utils/typescript/compile-typescript-files.js.map +1 -1
- package/src/utils/typescript/create-ts-config.d.ts +17 -0
- package/src/utils/typescript/create-ts-config.js +48 -0
- package/src/utils/typescript/create-ts-config.js.map +1 -0
- package/src/utils/typescript/ensure-typescript.d.ts +1 -0
- package/src/utils/typescript/ensure-typescript.js +10 -0
- package/src/utils/typescript/ensure-typescript.js.map +1 -0
- package/src/utils/typescript/get-source-nodes.d.ts +2 -0
- package/src/utils/typescript/get-source-nodes.js +19 -0
- package/src/utils/typescript/get-source-nodes.js.map +1 -0
- package/src/utils/typescript/run-type-check.d.ts +2 -2
- package/src/utils/typescript/run-type-check.js +7 -5
- package/src/utils/typescript/run-type-check.js.map +1 -1
- package/src/utils/typescript/ts-config.d.ts +11 -0
- package/src/utils/typescript/ts-config.js +55 -0
- package/src/utils/typescript/ts-config.js.map +1 -0
- package/src/utils/typescript/types.d.ts +2 -2
- package/src/utils/versions.d.ts +4 -2
- package/src/utils/versions.js +5 -3
- package/src/utils/versions.js.map +1 -1
- package/src/utils/watch-for-single-file-changes.d.ts +1 -1
- package/src/utils/watch-for-single-file-changes.js +11 -13
- package/src/utils/watch-for-single-file-changes.js.map +1 -1
- package/src/utils/code-frames/code-frames.d.ts +0 -14
- package/src/utils/code-frames/code-frames.js +0 -125
- package/src/utils/code-frames/code-frames.js.map +0 -1
- package/src/utils/create-async-iterable/create-async-iteratable.d.ts +0 -6
- package/src/utils/create-async-iterable/create-async-iteratable.js +0 -62
- package/src/utils/create-async-iterable/create-async-iteratable.js.map +0 -1
|
@@ -2,14 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.swcExecutor = exports.normalizeOptions = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const devkit_1 = require("@nrwl/devkit");
|
|
5
6
|
const assets_1 = require("@nrwl/workspace/src/utilities/assets");
|
|
7
|
+
const fs_extra_1 = require("fs-extra");
|
|
6
8
|
const path_1 = require("path");
|
|
9
|
+
const assets_2 = require("../../utils/assets");
|
|
7
10
|
const check_dependencies_1 = require("../../utils/check-dependencies");
|
|
8
11
|
const compiler_helper_dependency_1 = require("../../utils/compiler-helper-dependency");
|
|
12
|
+
const inline_1 = require("../../utils/inline");
|
|
13
|
+
const package_json_1 = require("../../utils/package-json");
|
|
9
14
|
const compile_swc_1 = require("../../utils/swc/compile-swc");
|
|
10
15
|
const get_swcrc_path_1 = require("../../utils/swc/get-swcrc-path");
|
|
11
|
-
const
|
|
12
|
-
const package_json_1 = require("../../utils/package-json");
|
|
16
|
+
const inline_2 = require("../../utils/swc/inline");
|
|
13
17
|
function normalizeOptions(options, contextRoot, sourceRoot, projectRoot) {
|
|
14
18
|
const outputPath = (0, path_1.join)(contextRoot, options.outputPath);
|
|
15
19
|
if (options.skipTypeCheck == null) {
|
|
@@ -18,6 +22,18 @@ function normalizeOptions(options, contextRoot, sourceRoot, projectRoot) {
|
|
|
18
22
|
if (options.watch == null) {
|
|
19
23
|
options.watch = false;
|
|
20
24
|
}
|
|
25
|
+
// TODO: put back when inlining story is more stable
|
|
26
|
+
// if (options.external == null) {
|
|
27
|
+
// options.external = 'all';
|
|
28
|
+
// } else if (Array.isArray(options.external) && options.external.length === 0) {
|
|
29
|
+
// options.external = 'none';
|
|
30
|
+
// }
|
|
31
|
+
if (Array.isArray(options.external) && options.external.length > 0) {
|
|
32
|
+
const firstItem = options.external[0];
|
|
33
|
+
if (firstItem === 'all' || firstItem === 'none') {
|
|
34
|
+
options.external = firstItem;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
21
37
|
const files = (0, assets_1.assetGlobsToFiles)(options.assets, contextRoot, outputPath);
|
|
22
38
|
const projectRootParts = projectRoot.split('/');
|
|
23
39
|
// We pop the last part of the `projectRoot` to pass
|
|
@@ -26,7 +42,19 @@ function normalizeOptions(options, contextRoot, sourceRoot, projectRoot) {
|
|
|
26
42
|
// default to current directory if projectRootParts is [].
|
|
27
43
|
// Eg: when a project is at the root level, outside of layout dir
|
|
28
44
|
const swcCwd = projectRootParts.join('/') || '.';
|
|
29
|
-
|
|
45
|
+
let swcrcPath = (0, get_swcrc_path_1.getSwcrcPath)(options, contextRoot, projectRoot);
|
|
46
|
+
try {
|
|
47
|
+
const swcrcContent = (0, devkit_1.readJsonFile)(swcrcPath);
|
|
48
|
+
// if we have path mappings setup but baseUrl isn't specified, then we're proceeding with the following logic
|
|
49
|
+
if (swcrcContent.jsc &&
|
|
50
|
+
swcrcContent.jsc.paths &&
|
|
51
|
+
!swcrcContent.jsc.baseUrl) {
|
|
52
|
+
swcrcContent.jsc.baseUrl = `./${projectDir}`;
|
|
53
|
+
swcrcPath = (0, get_swcrc_path_1.getSwcrcPath)(options, contextRoot, projectRoot, true);
|
|
54
|
+
(0, devkit_1.writeJsonFile)(swcrcPath, swcrcContent);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (e) { }
|
|
30
58
|
const swcCliOptions = {
|
|
31
59
|
srcPath: projectDir,
|
|
32
60
|
destPath: (0, path_1.relative)((0, path_1.join)(contextRoot, swcCwd), outputPath),
|
|
@@ -34,13 +62,12 @@ function normalizeOptions(options, contextRoot, sourceRoot, projectRoot) {
|
|
|
34
62
|
swcrcPath,
|
|
35
63
|
};
|
|
36
64
|
return Object.assign(Object.assign({}, options), { mainOutputPath: (0, path_1.resolve)(outputPath, options.main.replace(`${projectRoot}/`, '').replace('.ts', '.js')), files, root: contextRoot, sourceRoot,
|
|
37
|
-
projectRoot,
|
|
38
|
-
outputPath, tsConfig: (0, path_1.join)(contextRoot, options.tsConfig), swcCliOptions });
|
|
65
|
+
projectRoot, originalProjectRoot: projectRoot, outputPath, tsConfig: (0, path_1.join)(contextRoot, options.tsConfig), swcCliOptions });
|
|
39
66
|
}
|
|
40
67
|
exports.normalizeOptions = normalizeOptions;
|
|
41
68
|
function swcExecutor(_options, context) {
|
|
42
69
|
return tslib_1.__asyncGenerator(this, arguments, function* swcExecutor_1() {
|
|
43
|
-
const { sourceRoot, root } = context.
|
|
70
|
+
const { sourceRoot, root } = context.projectsConfigurations.projects[context.projectName];
|
|
44
71
|
const options = normalizeOptions(_options, context.root, sourceRoot, root);
|
|
45
72
|
const { tmpTsConfig, dependencies } = (0, check_dependencies_1.checkDependencies)(context, options.tsConfig);
|
|
46
73
|
if (tmpTsConfig) {
|
|
@@ -50,6 +77,21 @@ function swcExecutor(_options, context) {
|
|
|
50
77
|
if (swcHelperDependency) {
|
|
51
78
|
dependencies.push(swcHelperDependency);
|
|
52
79
|
}
|
|
80
|
+
const inlineProjectGraph = (0, inline_1.handleInliningBuild)(context, options, options.tsConfig);
|
|
81
|
+
if (!(0, inline_1.isInlineGraphEmpty)(inlineProjectGraph)) {
|
|
82
|
+
options.projectRoot = '.'; // set to root of workspace to include other libs for type check
|
|
83
|
+
// remap paths for SWC compilation
|
|
84
|
+
options.swcCliOptions.srcPath = options.swcCliOptions.swcCwd;
|
|
85
|
+
options.swcCliOptions.swcCwd = '.';
|
|
86
|
+
options.swcCliOptions.destPath = options.swcCliOptions.destPath
|
|
87
|
+
.split('../')
|
|
88
|
+
.at(-1)
|
|
89
|
+
.concat('/', options.swcCliOptions.srcPath);
|
|
90
|
+
// tmp swcrc with dependencies to exclude
|
|
91
|
+
// - buildable libraries
|
|
92
|
+
// - other libraries that are not dependent on the current project
|
|
93
|
+
options.swcCliOptions.swcrcPath = (0, inline_2.generateTmpSwcrc)(inlineProjectGraph, options.swcCliOptions.swcrcPath);
|
|
94
|
+
}
|
|
53
95
|
if (options.watch) {
|
|
54
96
|
let disposeFn;
|
|
55
97
|
process.on('SIGINT', () => disposeFn());
|
|
@@ -57,6 +99,7 @@ function swcExecutor(_options, context) {
|
|
|
57
99
|
return yield tslib_1.__await(yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues((0, compile_swc_1.compileSwcWatch)(context, options, () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
58
100
|
const assetResult = yield (0, assets_2.copyAssets)(options, context);
|
|
59
101
|
const packageJsonResult = yield (0, package_json_1.copyPackageJson)(Object.assign(Object.assign({}, options), { skipTypings: !options.skipTypeCheck }), context);
|
|
102
|
+
removeTmpSwcrc(options.swcCliOptions.swcrcPath);
|
|
60
103
|
disposeFn = () => {
|
|
61
104
|
assetResult === null || assetResult === void 0 ? void 0 : assetResult.stop();
|
|
62
105
|
packageJsonResult === null || packageJsonResult === void 0 ? void 0 : packageJsonResult.stop();
|
|
@@ -67,10 +110,17 @@ function swcExecutor(_options, context) {
|
|
|
67
110
|
return yield tslib_1.__await(yield yield tslib_1.__await((0, compile_swc_1.compileSwc)(context, options, () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
68
111
|
yield (0, assets_2.copyAssets)(options, context);
|
|
69
112
|
yield (0, package_json_1.copyPackageJson)(Object.assign(Object.assign({}, options), { generateExportsField: true, skipTypings: !options.skipTypeCheck, extraDependencies: swcHelperDependency ? [swcHelperDependency] : [] }), context);
|
|
113
|
+
removeTmpSwcrc(options.swcCliOptions.swcrcPath);
|
|
114
|
+
(0, inline_1.postProcessInlinedDependencies)(options.outputPath, options.originalProjectRoot, inlineProjectGraph);
|
|
70
115
|
}))));
|
|
71
116
|
}
|
|
72
117
|
});
|
|
73
118
|
}
|
|
74
119
|
exports.swcExecutor = swcExecutor;
|
|
120
|
+
function removeTmpSwcrc(swcrcPath) {
|
|
121
|
+
if (swcrcPath.includes('tmp/') && swcrcPath.includes('.generated.swcrc')) {
|
|
122
|
+
(0, fs_extra_1.removeSync)((0, path_1.dirname)(swcrcPath));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
75
125
|
exports.default = swcExecutor;
|
|
76
126
|
//# sourceMappingURL=swc.impl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swc.impl.js","sourceRoot":"","sources":["../../../../../../packages/js/src/executors/swc/swc.impl.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"swc.impl.js","sourceRoot":"","sources":["../../../../../../packages/js/src/executors/swc/swc.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"outputCapture": "direct-nodejs",
|
|
2
4
|
"title": "Typescript Build Target",
|
|
3
5
|
"description": "Builds using TypeScript.",
|
|
4
6
|
"cli": "nx",
|
|
@@ -49,11 +51,12 @@
|
|
|
49
51
|
"default": [],
|
|
50
52
|
"items": {
|
|
51
53
|
"$ref": "#/definitions/transformerPattern"
|
|
52
|
-
}
|
|
54
|
+
},
|
|
55
|
+
"x-priority": "important"
|
|
53
56
|
},
|
|
54
57
|
"updateBuildableProjectDepsInPackageJson": {
|
|
55
58
|
"type": "boolean",
|
|
56
|
-
"description": "Whether to update the buildable project dependencies in
|
|
59
|
+
"description": "Whether to update the buildable project dependencies in the build output package.json.",
|
|
57
60
|
"default": true
|
|
58
61
|
},
|
|
59
62
|
"buildableProjectDepsInPackageJsonType": {
|
|
@@ -61,6 +64,35 @@
|
|
|
61
64
|
"description": "When `updateBuildableProjectDepsInPackageJson` is `true`, this adds dependencies to either `peerDependencies` or `dependencies`.",
|
|
62
65
|
"enum": ["dependencies", "peerDependencies"],
|
|
63
66
|
"default": "peerDependencies"
|
|
67
|
+
},
|
|
68
|
+
"external": {
|
|
69
|
+
"description": "A list projects to be treated as external. This feature is experimental",
|
|
70
|
+
"oneOf": [
|
|
71
|
+
{
|
|
72
|
+
"type": "string",
|
|
73
|
+
"enum": ["all", "none"]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"type": "array",
|
|
77
|
+
"items": {
|
|
78
|
+
"type": "string"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"externalBuildTargets": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"items": {
|
|
86
|
+
"type": "string"
|
|
87
|
+
},
|
|
88
|
+
"description": "List of target names that annotate a build target for a project",
|
|
89
|
+
"default": ["build"]
|
|
90
|
+
},
|
|
91
|
+
"generateLockfile": {
|
|
92
|
+
"type": "boolean",
|
|
93
|
+
"description": "Generate a lockfile (e.g. yarn.lock) that matches the workspace lockfile to ensure package versions match.",
|
|
94
|
+
"default": false,
|
|
95
|
+
"x-priority": "internal"
|
|
64
96
|
}
|
|
65
97
|
},
|
|
66
98
|
"required": ["main", "outputPath", "tsConfig"],
|
|
@@ -119,5 +151,6 @@
|
|
|
119
151
|
}
|
|
120
152
|
]
|
|
121
153
|
}
|
|
122
|
-
}
|
|
154
|
+
},
|
|
155
|
+
"examplesFile": "../../../docs/tsc-examples.md"
|
|
123
156
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { ExecutorContext } from '@nrwl/devkit';
|
|
2
|
-
import { TypeScriptCompilationOptions } from '@nrwl/workspace/src/utilities/typescript/compilation';
|
|
2
|
+
import type { TypeScriptCompilationOptions } from '@nrwl/workspace/src/utilities/typescript/compilation';
|
|
3
3
|
import { ExecutorOptions, NormalizedExecutorOptions } from '../../utils/schema';
|
|
4
4
|
export declare function normalizeOptions(options: ExecutorOptions, contextRoot: string, sourceRoot: string, projectRoot: string): NormalizedExecutorOptions;
|
|
5
5
|
export declare function createTypeScriptCompilationOptions(normalizedOptions: NormalizedExecutorOptions, context: ExecutorContext): TypeScriptCompilationOptions;
|
|
6
|
-
export declare function tscExecutor(_options: ExecutorOptions, context: ExecutorContext): AsyncGenerator<
|
|
7
|
-
success: boolean;
|
|
8
|
-
outfile: string;
|
|
9
|
-
}, any, undefined>;
|
|
6
|
+
export declare function tscExecutor(_options: ExecutorOptions, context: ExecutorContext): AsyncGenerator<import("../../utils/typescript/compile-typescript-files").TypescriptCompilationResult, any, undefined>;
|
|
10
7
|
export default tscExecutor;
|
|
@@ -4,12 +4,13 @@ exports.tscExecutor = exports.createTypeScriptCompilationOptions = exports.norma
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const assets_1 = require("@nrwl/workspace/src/utilities/assets");
|
|
6
6
|
const path_1 = require("path");
|
|
7
|
+
const copy_assets_handler_1 = require("../../utils/assets/copy-assets-handler");
|
|
7
8
|
const check_dependencies_1 = require("../../utils/check-dependencies");
|
|
8
9
|
const compiler_helper_dependency_1 = require("../../utils/compiler-helper-dependency");
|
|
9
|
-
const
|
|
10
|
+
const inline_1 = require("../../utils/inline");
|
|
11
|
+
const update_package_json_1 = require("../../utils/package-json/update-package-json");
|
|
10
12
|
const compile_typescript_files_1 = require("../../utils/typescript/compile-typescript-files");
|
|
11
13
|
const load_ts_transformers_1 = require("../../utils/typescript/load-ts-transformers");
|
|
12
|
-
const update_package_json_1 = require("../../utils/package-json/update-package-json");
|
|
13
14
|
const watch_for_single_file_changes_1 = require("../../utils/watch-for-single-file-changes");
|
|
14
15
|
function normalizeOptions(options, contextRoot, sourceRoot, projectRoot) {
|
|
15
16
|
const outputPath = (0, path_1.join)(contextRoot, options.outputPath);
|
|
@@ -19,6 +20,18 @@ function normalizeOptions(options, contextRoot, sourceRoot, projectRoot) {
|
|
|
19
20
|
if (options.watch == null) {
|
|
20
21
|
options.watch = false;
|
|
21
22
|
}
|
|
23
|
+
// TODO: put back when inlining story is more stable
|
|
24
|
+
// if (options.external == null) {
|
|
25
|
+
// options.external = 'all';
|
|
26
|
+
// } else if (Array.isArray(options.external) && options.external.length === 0) {
|
|
27
|
+
// options.external = 'none';
|
|
28
|
+
// }
|
|
29
|
+
if (Array.isArray(options.external) && options.external.length > 0) {
|
|
30
|
+
const firstItem = options.external[0];
|
|
31
|
+
if (firstItem === 'all' || firstItem === 'none') {
|
|
32
|
+
options.external = firstItem;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
22
35
|
const files = (0, assets_1.assetGlobsToFiles)(options.assets, contextRoot, outputPath);
|
|
23
36
|
return Object.assign(Object.assign({}, options), { root: contextRoot, sourceRoot,
|
|
24
37
|
projectRoot,
|
|
@@ -47,7 +60,7 @@ function createTypeScriptCompilationOptions(normalizedOptions, context) {
|
|
|
47
60
|
exports.createTypeScriptCompilationOptions = createTypeScriptCompilationOptions;
|
|
48
61
|
function tscExecutor(_options, context) {
|
|
49
62
|
return tslib_1.__asyncGenerator(this, arguments, function* tscExecutor_1() {
|
|
50
|
-
const { sourceRoot, root } = context.
|
|
63
|
+
const { sourceRoot, root } = context.projectsConfigurations.projects[context.projectName];
|
|
51
64
|
const options = normalizeOptions(_options, context.root, sourceRoot, root);
|
|
52
65
|
const { projectRoot, tmpTsConfig, target, dependencies } = (0, check_dependencies_1.checkDependencies)(context, _options.tsConfig);
|
|
53
66
|
if (tmpTsConfig) {
|
|
@@ -63,20 +76,29 @@ function tscExecutor(_options, context) {
|
|
|
63
76
|
outputDir: _options.outputPath,
|
|
64
77
|
assets: _options.assets,
|
|
65
78
|
});
|
|
79
|
+
const tsCompilationOptions = createTypeScriptCompilationOptions(options, context);
|
|
80
|
+
const inlineProjectGraph = (0, inline_1.handleInliningBuild)(context, options, tsCompilationOptions.tsConfig);
|
|
81
|
+
if (!(0, inline_1.isInlineGraphEmpty)(inlineProjectGraph)) {
|
|
82
|
+
tsCompilationOptions.rootDir = '.';
|
|
83
|
+
}
|
|
84
|
+
const typescriptCompilation = (0, compile_typescript_files_1.compileTypeScriptFiles)(options, tsCompilationOptions, () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
yield assetHandler.processAllAssetsOnce();
|
|
86
|
+
(0, update_package_json_1.updatePackageJson)(options, context, target, dependencies);
|
|
87
|
+
(0, inline_1.postProcessInlinedDependencies)(tsCompilationOptions.outputPath, tsCompilationOptions.projectRoot, inlineProjectGraph);
|
|
88
|
+
}));
|
|
66
89
|
if (options.watch) {
|
|
67
90
|
const disposeWatchAssetChanges = yield tslib_1.__await(assetHandler.watchAndProcessOnAssetChange());
|
|
68
|
-
const disposePackageJsonChanges = yield tslib_1.__await((0, watch_for_single_file_changes_1.watchForSingleFileChanges)(
|
|
69
|
-
const handleTermination = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
yield
|
|
71
|
-
|
|
91
|
+
const disposePackageJsonChanges = yield tslib_1.__await((0, watch_for_single_file_changes_1.watchForSingleFileChanges)(context.projectName, options.projectRoot, 'package.json', () => (0, update_package_json_1.updatePackageJson)(options, context, target, dependencies)));
|
|
92
|
+
const handleTermination = (exitCode) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
yield typescriptCompilation.close();
|
|
94
|
+
disposeWatchAssetChanges();
|
|
95
|
+
disposePackageJsonChanges();
|
|
96
|
+
process.exit(exitCode);
|
|
72
97
|
});
|
|
73
|
-
process.on('SIGINT', () => handleTermination());
|
|
74
|
-
process.on('SIGTERM', () => handleTermination());
|
|
98
|
+
process.on('SIGINT', () => handleTermination(128 + 2));
|
|
99
|
+
process.on('SIGTERM', () => handleTermination(128 + 15));
|
|
75
100
|
}
|
|
76
|
-
return yield tslib_1.__await(yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(
|
|
77
|
-
yield assetHandler.processAllAssetsOnce();
|
|
78
|
-
(0, update_package_json_1.updatePackageJson)(options, context, target, dependencies);
|
|
79
|
-
}))))));
|
|
101
|
+
return yield tslib_1.__await(yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(typescriptCompilation.iterator))));
|
|
80
102
|
});
|
|
81
103
|
}
|
|
82
104
|
exports.tscExecutor = tscExecutor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsc.impl.js","sourceRoot":"","sources":["../../../../../../packages/js/src/executors/tsc/tsc.impl.ts"],"names":[],"mappings":";;;;AACA,iEAG8C;AAE9C,+BAAqC;AAOrC,uEAAmE;AACnE,uFAGgD;AAChD,
|
|
1
|
+
{"version":3,"file":"tsc.impl.js","sourceRoot":"","sources":["../../../../../../packages/js/src/executors/tsc/tsc.impl.ts"],"names":[],"mappings":";;;;AACA,iEAG8C;AAE9C,+BAAqC;AAOrC,gFAA2E;AAC3E,uEAAmE;AACnE,uFAGgD;AAChD,+CAI4B;AAC5B,sFAAiF;AAEjF,8FAAyF;AACzF,sFAAiF;AACjF,6FAAsF;AAEtF,SAAgB,gBAAgB,CAC9B,OAAwB,EACxB,WAAmB,EACnB,UAAkB,EAClB,WAAmB;IAEnB,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;QAC7B,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;QACpC,CAAC,CAAC,WAAW,CAAC;IAEhB,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;QACzB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;KACvB;IAED,oDAAoD;IACpD,kCAAkC;IAClC,8BAA8B;IAC9B,iFAAiF;IACjF,+BAA+B;IAC/B,IAAI;IAEJ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QAClE,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,EAAE;YAC/C,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;SAC9B;KACF;IAED,MAAM,KAAK,GAAsB,IAAA,0BAAiB,EAChD,OAAO,CAAC,MAAM,EACd,WAAW,EACX,UAAU,CACX,CAAC;IAEF,uCACK,OAAO,KACV,IAAI,EAAE,WAAW,EACjB,UAAU;QACV,WAAW;QACX,KAAK;QACL,UAAU,EACV,QAAQ,EAAE,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC7C,OAAO,EACP,cAAc,EAAE,IAAA,cAAO,EACrB,UAAU,EACV,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAClE,IACD;AACJ,CAAC;AAjDD,4CAiDC;AAED,SAAgB,kCAAkC,CAChD,iBAA4C,EAC5C,OAAwB;IAExB,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAA,yCAAkB,EAChD,iBAAiB,CAAC,YAAY,CAC/B,CAAC;IACF,MAAM,qBAAqB,GAAG,CAAC,OAAgB,EAAsB,EAAE,CAAC,CAAC;QACvE,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAC,GAAG,CACzC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAmC,CAC1D;QACD,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CACvC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAmC,CAC1D;QACD,iBAAiB,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,GAAG,CAC/D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAmC,CAC1D;KACF,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,iBAAiB,CAAC,UAAU;QACxC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,iBAAiB,CAAC,WAAW;QAC1C,OAAO,EAAE,iBAAiB,CAAC,OAAO;QAClC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;QACpC,KAAK,EAAE,iBAAiB,CAAC,KAAK;QAC9B,gBAAgB,EAAE,iBAAiB,CAAC,KAAK;QACzC,qBAAqB;KACtB,CAAC;AACJ,CAAC;AA7BD,gFA6BC;AAED,SAAuB,WAAW,CAChC,QAAyB,EACzB,OAAwB;;QAExB,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GACxB,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAE3E,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,sCAAiB,EAC1E,OAAO,EACP,QAAQ,CAAC,QAAQ,CAClB,CAAC;QAEF,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC;SAChC;QAED,MAAM,eAAe,GAAG,IAAA,gDAAmB,EACzC,6CAAgB,CAAC,GAAG,EACpB,OAAO,CAAC,QAAQ,EAChB,YAAY,EACZ,OAAO,CAAC,YAAY,CACrB,CAAC;QAEF,IAAI,eAAe,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACpC;QAED,MAAM,YAAY,GAAG,IAAI,uCAAiB,CAAC;YACzC,UAAU,EAAE,WAAW;YACvB,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,SAAS,EAAE,QAAQ,CAAC,UAAU;YAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,kCAAkC,CAC7D,OAAO,EACP,OAAO,CACR,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAA,4BAAmB,EAC5C,OAAO,EACP,OAAO,EACP,oBAAoB,CAAC,QAAQ,CAC9B,CAAC;QAEF,IAAI,CAAC,IAAA,2BAAkB,EAAC,kBAAkB,CAAC,EAAE;YAC3C,oBAAoB,CAAC,OAAO,GAAG,GAAG,CAAC;SACpC;QAED,MAAM,qBAAqB,GAAG,IAAA,iDAAsB,EAClD,OAAO,EACP,oBAAoB,EACpB,GAAS,EAAE;YACT,MAAM,YAAY,CAAC,oBAAoB,EAAE,CAAC;YAC1C,IAAA,uCAAiB,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YAC1D,IAAA,uCAA8B,EAC5B,oBAAoB,CAAC,UAAU,EAC/B,oBAAoB,CAAC,WAAW,EAChC,kBAAkB,CACnB,CAAC;QACJ,CAAC,CAAA,CACF,CAAC;QAEF,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,MAAM,wBAAwB,GAC5B,sBAAM,YAAY,CAAC,4BAA4B,EAAE,CAAA,CAAC;YACpD,MAAM,yBAAyB,GAAG,sBAAM,IAAA,yDAAyB,EAC/D,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,WAAW,EACnB,cAAc,EACd,GAAG,EAAE,CAAC,IAAA,uCAAiB,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAChE,CAAA,CAAC;YACF,MAAM,iBAAiB,GAAG,CAAO,QAAgB,EAAE,EAAE;gBACnD,MAAM,qBAAqB,CAAC,KAAK,EAAE,CAAC;gBACpC,wBAAwB,EAAE,CAAC;gBAC3B,yBAAyB,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC,CAAA,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;SAC1D;QAED,6BAAO,sBAAA,KAAK,CAAC,CAAC,yBAAA,sBAAA,qBAAqB,CAAC,QAAQ,CAAA,CAAA,CAAA,EAAC;IAC/C,CAAC;CAAA;AApFD,kCAoFC;AAED,kBAAe,WAAW,CAAC"}
|
|
@@ -33,7 +33,7 @@ function updateProjectBuildTargets(tree, projectConfiguration, projectName, proj
|
|
|
33
33
|
(0, devkit_1.updateProjectConfiguration)(tree, projectName, projectConfiguration);
|
|
34
34
|
}
|
|
35
35
|
function checkSwcDependencies(tree, projectConfiguration) {
|
|
36
|
-
const isSwcrcPresent = tree.exists((0, path_1.join)(projectConfiguration.root, '.
|
|
36
|
+
const isSwcrcPresent = tree.exists((0, path_1.join)(projectConfiguration.root, '.swcrc'));
|
|
37
37
|
const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
|
|
38
38
|
const projectPackageJsonPath = (0, path_1.join)(projectConfiguration.root, 'package.json');
|
|
39
39
|
const projectPackageJson = (0, devkit_1.readJson)(tree, projectPackageJsonPath);
|
|
@@ -49,9 +49,7 @@ function checkSwcDependencies(tree, projectConfiguration) {
|
|
|
49
49
|
(0, add_swc_dependencies_1.addSwcDependencies)(tree);
|
|
50
50
|
}
|
|
51
51
|
if (!hasSwcHelpers) {
|
|
52
|
-
(0, devkit_1.addDependenciesToPackageJson)(tree, {
|
|
53
|
-
'@swc/helpers': versions_1.swcHelpersVersion,
|
|
54
|
-
}, {}, projectPackageJsonPath);
|
|
52
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, { '@swc/helpers': versions_1.swcHelpersVersion }, {}, projectPackageJsonPath);
|
|
55
53
|
}
|
|
56
54
|
return () => {
|
|
57
55
|
if (!hasSwcDependency) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-to-swc.js","sourceRoot":"","sources":["../../../../../../packages/js/src/generators/convert-to-swc/convert-to-swc.ts"],"names":[],"mappings":";;;;AAAA,yCASsB;AACtB,+BAA4B;AAC5B,mEAA8D;AAC9D,+EAA0E;AAC1E,mDAAyD;AAGzD,SAAsB,qBAAqB,CACzC,IAAU,EACV,MAAmC;;QAEnC,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,oBAAoB,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE7E,yBAAyB,CACvB,IAAI,EACJ,oBAAoB,EACpB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;QACF,OAAO,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC1D,CAAC;CAAA;AAdD,sDAcC;AAED,SAAS,gBAAgB,CACvB,MAAmC;IAEnC,MAAM,OAAO,qBAAQ,MAAM,CAAE,CAAC;IAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,OAAO,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KAC7B;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAU,EACV,oBAA0C,EAC1C,WAAmB,EACnB,cAAwB;IAExB,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE;QACnC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,QAAQ,KAAK,cAAc;YACzE,SAAS;QACX,mBAAmB,CAAC,QAAQ,GAAG,cAAc,CAAC;KAC/C;IAED,IAAA,mCAA0B,EAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAU,EACV,oBAA0C;IAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"convert-to-swc.js","sourceRoot":"","sources":["../../../../../../packages/js/src/generators/convert-to-swc/convert-to-swc.ts"],"names":[],"mappings":";;;;AAAA,yCASsB;AACtB,+BAA4B;AAC5B,mEAA8D;AAC9D,+EAA0E;AAC1E,mDAAyD;AAGzD,SAAsB,qBAAqB,CACzC,IAAU,EACV,MAAmC;;QAEnC,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,oBAAoB,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE7E,yBAAyB,CACvB,IAAI,EACJ,oBAAoB,EACpB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;QACF,OAAO,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC1D,CAAC;CAAA;AAdD,sDAcC;AAED,SAAS,gBAAgB,CACvB,MAAmC;IAEnC,MAAM,OAAO,qBAAQ,MAAM,CAAE,CAAC;IAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,OAAO,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KAC7B;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAU,EACV,oBAA0C,EAC1C,WAAmB,EACnB,cAAwB;IAExB,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE;QACnC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,QAAQ,KAAK,cAAc;YACzE,SAAS;QACX,mBAAmB,CAAC,QAAQ,GAAG,cAAc,CAAC;KAC/C;IAED,IAAA,mCAA0B,EAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAU,EACV,oBAA0C;IAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAA,WAAI,EAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE9E,MAAM,WAAW,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,sBAAsB,GAAG,IAAA,WAAI,EACjC,oBAAoB,CAAC,IAAI,EACzB,cAAc,CACf,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAElE,MAAM,gBAAgB,GACpB,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAEpE,MAAM,aAAa,GACjB,kBAAkB,CAAC,YAAY;QAC/B,kBAAkB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAElD,IAAI,cAAc,IAAI,gBAAgB,IAAI,aAAa;QAAE,OAAO;IAEhE,IAAI,CAAC,cAAc,EAAE;QACnB,IAAA,6BAAY,EAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;KAC/C;IAED,IAAI,CAAC,gBAAgB,EAAE;QACrB,IAAA,yCAAkB,EAAC,IAAI,CAAC,CAAC;KAC1B;IAED,IAAI,CAAC,aAAa,EAAE;QAClB,IAAA,qCAA4B,EAC1B,IAAI,EACJ,EAAE,cAAc,EAAE,4BAAiB,EAAE,EACrC,EAAE,EACF,sBAAsB,CACvB,CAAC;KACH;IAED,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,gBAAgB,EAAE;YACrB,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC,CAAC;AACJ,CAAC;AAED,kBAAe,qBAAqB,CAAC;AACxB,QAAA,qBAAqB,GAAG,IAAA,2BAAkB,EAAC,qBAAqB,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compileOnSave": false,
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"rootDir": ".",
|
|
5
|
+
"sourceMap": true,
|
|
6
|
+
"declaration": false,
|
|
7
|
+
"moduleResolution": "node",
|
|
8
|
+
"emitDecoratorMetadata": true,
|
|
9
|
+
"experimentalDecorators": true,
|
|
10
|
+
"importHelpers": true,
|
|
11
|
+
"target": "es2015",
|
|
12
|
+
"module": "esnext",
|
|
13
|
+
"lib": ["es2017", "dom"],
|
|
14
|
+
"skipLibCheck": true,
|
|
15
|
+
"skipDefaultLibCheck": true,
|
|
16
|
+
"baseUrl": ".",
|
|
17
|
+
"paths": {}
|
|
18
|
+
},
|
|
19
|
+
"exclude": ["node_modules", "tmp"]
|
|
20
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { GeneratorCallback, Tree } from '@nrwl/devkit';
|
|
2
|
+
import { InitSchema } from './schema';
|
|
3
|
+
export declare function initGenerator(tree: Tree, schema: InitSchema): Promise<GeneratorCallback>;
|
|
2
4
|
export default initGenerator;
|
|
3
|
-
export declare const initSchematic: (generatorOptions:
|
|
5
|
+
export declare const initSchematic: (generatorOptions: InitSchema) => (tree: any, context: any) => Promise<any>;
|
|
@@ -3,9 +3,66 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.initSchematic = exports.initGenerator = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const devkit_1 = require("@nrwl/devkit");
|
|
6
|
-
|
|
6
|
+
const ts_config_1 = require("../../utils/typescript/ts-config");
|
|
7
|
+
const versions_1 = require("../../utils/versions");
|
|
8
|
+
let formatTaskAdded = false;
|
|
9
|
+
function initGenerator(tree, schema) {
|
|
10
|
+
var _a;
|
|
7
11
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
8
|
-
|
|
12
|
+
// add tsconfig.base.json
|
|
13
|
+
if (!(0, ts_config_1.getRootTsConfigFileName)(tree)) {
|
|
14
|
+
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, './files'), '.', {
|
|
15
|
+
fileName: (_a = schema.tsConfigName) !== null && _a !== void 0 ? _a : 'tsconfig.base.json',
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const devDependencies = {
|
|
19
|
+
'@nrwl/js': versions_1.nxVersion,
|
|
20
|
+
prettier: versions_1.prettierVersion,
|
|
21
|
+
};
|
|
22
|
+
if (!schema.js) {
|
|
23
|
+
devDependencies['typescript'] = versions_1.typescriptVersion;
|
|
24
|
+
}
|
|
25
|
+
if (!tree.exists(`.prettierrc`)) {
|
|
26
|
+
(0, devkit_1.writeJson)(tree, '.prettierrc', {
|
|
27
|
+
singleQuote: true,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (!tree.exists(`.prettierignore`)) {
|
|
31
|
+
tree.write('.prettierignore', (0, devkit_1.stripIndents) `
|
|
32
|
+
# Add files here to ignore them from prettier formatting
|
|
33
|
+
/dist
|
|
34
|
+
/coverage
|
|
35
|
+
`);
|
|
36
|
+
}
|
|
37
|
+
if (tree.exists('.vscode/extensions.json')) {
|
|
38
|
+
(0, devkit_1.updateJson)(tree, '.vscode/extensions.json', (json) => {
|
|
39
|
+
var _a;
|
|
40
|
+
(_a = json.recommendations) !== null && _a !== void 0 ? _a : (json.recommendations = []);
|
|
41
|
+
const extension = 'esbenp.prettier-vscode';
|
|
42
|
+
if (!json.recommendations.includes(extension)) {
|
|
43
|
+
json.recommendations.push(extension);
|
|
44
|
+
}
|
|
45
|
+
return json;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const installTask = !schema.skipPackageJson
|
|
49
|
+
? (0, devkit_1.addDependenciesToPackageJson)(tree, {}, devDependencies)
|
|
50
|
+
: () => { };
|
|
51
|
+
return () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
yield installTask();
|
|
53
|
+
// Run Prettier once on all non-ignored files because some files may not be changed in the tree. e.g. nx.json
|
|
54
|
+
// TODO(jack): Once we create @nrwl/prettier:init we can move this logic there with --formatExistingFiles option.
|
|
55
|
+
if (!formatTaskAdded) {
|
|
56
|
+
formatTaskAdded = true;
|
|
57
|
+
try {
|
|
58
|
+
const prettierCli = yield Promise.resolve().then(() => require('prettier/cli'));
|
|
59
|
+
yield prettierCli.run(['.', '--write']);
|
|
60
|
+
}
|
|
61
|
+
catch (_b) {
|
|
62
|
+
// If --skipPackageJson is passed then prettier is not installed.
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
9
66
|
});
|
|
10
67
|
}
|
|
11
68
|
exports.initGenerator = initGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../packages/js/src/generators/init/init.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../packages/js/src/generators/init/init.ts"],"names":[],"mappings":";;;;AAAA,yCAUsB;AACtB,gEAA2E;AAC3E,mDAI8B;AAG9B,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,SAAsB,aAAa,CACjC,IAAU,EACV,MAAkB;;;QAElB,yBAAyB;QACzB,IAAI,CAAC,IAAA,mCAAuB,EAAC,IAAI,CAAC,EAAE;YAClC,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAA,0BAAiB,EAAC,SAAS,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE;gBAChE,QAAQ,EAAE,MAAA,MAAM,CAAC,YAAY,mCAAI,oBAAoB;aACtD,CAAC,CAAC;SACJ;QACD,MAAM,eAAe,GAAG;YACtB,UAAU,EAAE,oBAAS;YACrB,QAAQ,EAAE,0BAAe;SAC1B,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YACd,eAAe,CAAC,YAAY,CAAC,GAAG,4BAAiB,CAAC;SACnD;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;YAC/B,IAAA,kBAAS,EAAC,IAAI,EAAE,aAAa,EAAE;gBAC7B,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;YACnC,IAAI,CAAC,KAAK,CACR,iBAAiB,EACjB,IAAA,qBAAY,EAAA;;;;OAIX,CACF,CAAC;SACH;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE;YAC1C,IAAA,mBAAU,EAAC,IAAI,EAAE,yBAAyB,EAAE,CAAC,IAAI,EAAE,EAAE;;gBACnD,MAAA,IAAI,CAAC,eAAe,oCAApB,IAAI,CAAC,eAAe,GAAK,EAAE,EAAC;gBAC5B,MAAM,SAAS,GAAG,wBAAwB,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACtC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;SACJ;QAED,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,eAAe;YACzC,CAAC,CAAC,IAAA,qCAA4B,EAAC,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC;YACzD,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;QAEb,OAAO,GAAS,EAAE;YAChB,MAAM,WAAW,EAAE,CAAC;YAEpB,6GAA6G;YAC7G,iHAAiH;YACjH,IAAI,CAAC,eAAe,EAAE;gBACpB,eAAe,GAAG,IAAI,CAAC;gBACvB,IAAI;oBACF,MAAM,WAAW,GAAG,2CAAa,cAAc,EAAC,CAAC;oBACjD,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;iBACzC;gBAAC,WAAM;oBACN,iEAAiE;iBAClE;aACF;QACH,CAAC,CAAA,CAAC;;CACH;AAjED,sCAiEC;AAED,kBAAe,aAAa,CAAC;AAEhB,QAAA,aAAa,GAAG,IAAA,2BAAkB,EAAC,aAAa,CAAC,CAAC"}
|
|
@@ -3,5 +3,28 @@
|
|
|
3
3
|
"$id": "NxTypescriptInit",
|
|
4
4
|
"cli": "nx",
|
|
5
5
|
"title": "Init nrwl/js",
|
|
6
|
-
"description": "Init generator placeholder for nrwl/js."
|
|
6
|
+
"description": "Init generator placeholder for nrwl/js.",
|
|
7
|
+
"properties": {
|
|
8
|
+
"js": {
|
|
9
|
+
"type": "boolean",
|
|
10
|
+
"default": false,
|
|
11
|
+
"description": "Use JavaScript instead of TypeScript"
|
|
12
|
+
},
|
|
13
|
+
"skipFormat": {
|
|
14
|
+
"type": "boolean",
|
|
15
|
+
"aliases": ["skip-format"],
|
|
16
|
+
"description": "Skip formatting files.",
|
|
17
|
+
"x-priority": "internal"
|
|
18
|
+
},
|
|
19
|
+
"skipPackageJson": {
|
|
20
|
+
"type": "boolean",
|
|
21
|
+
"description": "Skip adding package.json dependencies",
|
|
22
|
+
"x-priority": "internal"
|
|
23
|
+
},
|
|
24
|
+
"tsConfigName": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Customize the generated tsconfig file name.",
|
|
27
|
+
"x-priority": "internal"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
7
30
|
}
|
|
@@ -4,8 +4,15 @@
|
|
|
4
4
|
// Reading the SWC compilation config and remove the "exclude"
|
|
5
5
|
// for the test files to be compiled by SWC
|
|
6
6
|
const { exclude: _, ...swcJestConfig } = JSON.parse(
|
|
7
|
-
readFileSync(`${__dirname}/.
|
|
7
|
+
readFileSync(`${__dirname}/.swcrc`, 'utf-8')
|
|
8
8
|
);
|
|
9
|
+
|
|
10
|
+
// disable .swcrc look-up by SWC core because we're passing in swcJestConfig ourselves.
|
|
11
|
+
// If we do not disable this, SWC Core will read .swcrc and won't transform our test files due to "exclude"
|
|
12
|
+
if (swcJestConfig.swcrc === undefined) {
|
|
13
|
+
swcJestConfig.swcrc = false;
|
|
14
|
+
}
|
|
15
|
+
|
|
9
16
|
<% if(js) {%>module.exports =<% } else { %>export default<% } %> {
|
|
10
17
|
displayName: '<%= project %>',
|
|
11
18
|
preset: '<%= offsetFromRoot %>jest.preset.js',
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"declaration": true,
|
|
6
6
|
"types": ["node"]
|
|
7
7
|
},
|
|
8
|
-
"include": ["
|
|
9
|
-
"exclude": ["jest.config.ts", "
|
|
8
|
+
"include": ["src/**/*.ts"<% if (js) { %>, "src/**/*.js"<% } %>],
|
|
9
|
+
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"<% if (js) { %>, "src/**/*.spec.js", "src/**/*.test.js"<% } %>]
|
|
10
10
|
}
|