Skip to content

Commit c1ebe80

Browse files
authored
feat(core): expose swc/register via tao (#9142)
1 parent 229f71e commit c1ebe80

File tree

6 files changed

+126
-47
lines changed

6 files changed

+126
-47
lines changed

package.json

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
"@storybook/core": "~6.4.12",
9191
"@storybook/react": "~6.4.12",
9292
"@svgr/webpack": "^6.1.2",
93+
"@swc/core": "^1.2.146",
9394
"@swc-node/register": "^1.4.2",
9495
"@testing-library/react": "11.2.6",
9596
"@testing-library/react-hooks": "7.0.1",
@@ -258,12 +259,6 @@
258259
"yargs-parser": "20.0.0",
259260
"zone.js": "~0.11.4"
260261
},
261-
"optionalDependencies": {
262-
"@swc/core-linux-arm64-gnu": "^1.2.136",
263-
"@swc/core-linux-arm64-musl": "^1.2.136",
264-
"@swc/core-linux-x64-gnu": "^1.2.136",
265-
"@swc/core-linux-x64-musl": "^1.2.136"
266-
},
267262
"author": "Victor Savkin",
268263
"license": "MIT",
269264
"config": {

packages/eslint-plugin-nx/package.json

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,8 @@
3434
"dependencies": {
3535
"@nrwl/devkit": "*",
3636
"@nrwl/workspace": "*",
37-
"@swc-node/register": "^1.4.2",
3837
"@typescript-eslint/experimental-utils": "~5.10.0",
3938
"chalk": "4.1.0",
40-
"confusing-browser-globals": "^1.0.9",
41-
"tsconfig-paths": "^3.9.0"
42-
},
43-
"optionalDependencies": {
44-
"@swc/core-linux-x64-musl": "^1.2.136",
45-
"@swc/core-linux-x64-gnu": "^1.2.136",
46-
"@swc/core-linux-arm64-gnu": "^1.2.136",
47-
"@swc/core-linux-arm64-musl": "^1.2.136"
39+
"confusing-browser-globals": "^1.0.9"
4840
}
4941
}

packages/eslint-plugin-nx/src/resolve-workspace-rules.ts

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,17 @@
11
import type { TSESLint } from '@typescript-eslint/experimental-utils';
22
import { existsSync } from 'fs';
3-
import { join } from 'path';
43
import { WORKSPACE_PLUGIN_DIR, WORKSPACE_RULE_NAMESPACE } from './constants';
5-
import { readDefaultTsConfig } from '@swc-node/register/read-default-tsconfig';
6-
import { register } from '@swc-node/register/register';
4+
import { registerTsProject } from '@nrwl/tao/src/utils/register';
75

86
type ESLintRules = Record<string, TSESLint.RuleModule<string, unknown[]>>;
97

10-
/**
11-
* Optionally, if ts-node and tsconfig-paths are available in the current workspace, apply the require
12-
* register hooks so that .ts files can be used for writing workspace lint rules.
13-
*
14-
* If ts-node and tsconfig-paths are not available, the user can still provide an index.js file in
15-
* tools/eslint-rules and write their rules in JavaScript and the fundamentals will still work (but
16-
* workspace path mapping will not, for example).
17-
*/
18-
function registerTSWorkspaceLint() {
19-
try {
20-
register(readDefaultTsConfig(join(WORKSPACE_PLUGIN_DIR, 'tsconfig.json')));
21-
22-
const tsconfigPaths = require('tsconfig-paths');
23-
24-
// Load the tsconfig from tools/eslint-rules/tsconfig.json
25-
const tsConfigResult = tsconfigPaths.loadConfig(WORKSPACE_PLUGIN_DIR);
26-
27-
/**
28-
* Register the custom workspace path mappings with node so that workspace libraries
29-
* can be imported and used within custom workspace lint rules.
30-
*/
31-
return tsconfigPaths.register({
32-
baseUrl: tsConfigResult.absoluteBaseUrl,
33-
paths: tsConfigResult.paths,
34-
});
35-
} catch (err) {}
36-
}
37-
388
export const workspaceRules = ((): ESLintRules => {
399
// If `tools/eslint-rules` folder doesn't exist, there is no point trying to register and load it
4010
if (!existsSync(WORKSPACE_PLUGIN_DIR)) {
4111
return {};
4212
}
4313
// Register `tools/eslint-rules` for TS transpilation
44-
const registrationCleanup = registerTSWorkspaceLint();
14+
const registrationCleanup = registerTsProject(WORKSPACE_PLUGIN_DIR);
4515
try {
4616
/**
4717
* Currently we only support applying the rules from the user's workspace plugin object

packages/tao/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
},
3131
"homepage": "https://nx.dev",
3232
"dependencies": {
33+
"@swc/core": "^1.2.146",
34+
"@swc-node/register": "^1.4.2",
3335
"chalk": "4.1.0",
3436
"enquirer": "~2.3.6",
3537
"fast-glob": "3.2.7",
@@ -41,6 +43,7 @@
4143
"semver": "7.3.4",
4244
"tmp": "~0.2.1",
4345
"tslib": "^2.3.0",
46+
"tsconfig-paths": "^3.9.0",
4447
"yargs-parser": "20.0.0"
4548
}
4649
}

packages/tao/src/utils/register.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { readDefaultTsConfig } from '@swc-node/register/read-default-tsconfig';
2+
import { register } from '@swc-node/register/register';
3+
import { join } from 'path';
4+
5+
/**
6+
* Optionally, if swc-node and tsconfig-paths are available in the current workspace, apply the require
7+
* register hooks so that .ts files can be used for writing custom workspace projects.
8+
*
9+
* If ts-node and tsconfig-paths are not available, the user can still provide an index.js file in
10+
* the root of their project and the fundamentals will still work (but
11+
* workspace path mapping will not, for example).
12+
*/
13+
export const registerTsProject = (
14+
path: string,
15+
configFilename = 'tsconfig.json'
16+
) => {
17+
try {
18+
const tsConfig = readDefaultTsConfig(join(path, configFilename));
19+
register(tsConfig);
20+
21+
/**
22+
* Load the ts config from the source project
23+
*/
24+
const tsconfigPaths = require('tsconfig-paths');
25+
const tsConfigResult = tsconfigPaths.loadConfig(path);
26+
/**
27+
* Register the custom workspace path mappings with node so that workspace libraries
28+
* can be imported and used within project
29+
*/
30+
return tsconfigPaths.register({
31+
baseUrl: tsConfigResult.absoluteBaseUrl,
32+
paths: tsConfigResult.paths,
33+
});
34+
} catch (err) {}
35+
};

yarn.lock

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5496,36 +5496,71 @@
54965496
resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.133.tgz#dea04365897889c6f827ceb544ea241c90f02709"
54975497
integrity sha512-S6gc8Z1zhkDmMRwjeGp5Wf8zE+Vwc5m3weSltUTxbO27r48X6A8R2egM48ci/muPTPA6mOWQTViTFcq/hEgV2w==
54985498

5499+
"@swc/core-android-arm-eabi@1.2.146":
5500+
version "1.2.146"
5501+
resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.146.tgz#027c9b0c57377ce6cf4c7806ba07acf156e70d3a"
5502+
integrity sha512-vRlxDksEDdprqfj9VACYUGyCJr/tYLetNjhjel46qmKoXU5uAib1WLWWgMB1Ur+oh8eCSTN8cnOblOziqfC1Rw==
5503+
54995504
"@swc/core-android-arm64@1.2.133":
55005505
version "1.2.133"
55015506
resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.133.tgz#9467327193885692d6b9204599bcb16863e3ccab"
55025507
integrity sha512-rlsJ+UCk6QOUVde2l4yeM32R04KbnOM6a2WBw43f5IA8M8PDlWdRNHFE3jiwCIwBoG6MJ+EJE2PPmjxr3iSWvw==
55035508

5509+
"@swc/core-android-arm64@1.2.146":
5510+
version "1.2.146"
5511+
resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.146.tgz#e906088244bab3672ef4c40bd0631d2a09ab51fd"
5512+
integrity sha512-YoJygRvjZ6IXvWstYZHGThEj1aWshzoMohX0i6WH5NIZhkzeF0UhRu/IZoS9VcQsd0WtDEMQe0G0wcrd/FToNg==
5513+
55045514
"@swc/core-darwin-arm64@1.2.133":
55055515
version "1.2.133"
55065516
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.133.tgz#95e6d46a8406c4b09e96eec4a3f0bad270285744"
55075517
integrity sha512-COktqzeii453+JCGwgIM8vs4y4bgbIzY2lvSEYQmxZRVMAkqQVviLqG4cjm9tYHrW0o+9zpw+XTgpdPpkg32Yg==
55085518

5519+
"@swc/core-darwin-arm64@1.2.146":
5520+
version "1.2.146"
5521+
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.146.tgz#e47a8f5c1b18278c1005007121553a3d01d15622"
5522+
integrity sha512-ftAyhczQHSUQo1Mox/VyZ3YL9KtG0LgOFUUUuLD3Pb9zKQB20Jc/Dfnh/bFktemVG8XiH0rOyR9yEI2EANHuEA==
5523+
55095524
"@swc/core-darwin-x64@1.2.133":
55105525
version "1.2.133"
55115526
resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.133.tgz#d40999cb465a160c1226fef42df31c7be1ed4999"
55125527
integrity sha512-H5Hk+qWotdgVQOuQZdSMmIo4KUGxJjfVVBBbKe+TG1Vqyo5SQderc9TUZH8UzMP/tlX83Nzin0FHB+Ui9UhYqA==
55135528

5529+
"@swc/core-darwin-x64@1.2.146":
5530+
version "1.2.146"
5531+
resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.146.tgz#5e9a2d9fe1049ec8cdaec265b73781eb08579365"
5532+
integrity sha512-mYRN/WTS7TfYt3jqJYghcrpAW7zkpjdeEx9Rot8rmUEmk97luh9Bcwqafzjb9ndoG1mAiaTQcqvs/QqT2efS5Q==
5533+
55145534
"@swc/core-freebsd-x64@1.2.133":
55155535
version "1.2.133"
55165536
resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.133.tgz#0968766e4ff69509ae347e4fed3accb1f1e97c53"
55175537
integrity sha512-eFYkZLyAghY90w7CfwHsQ7/doJ46QSlmMGA9qR9NEuPt9MthM84ZXE6d20BvOid0zeib2o6HdFzfaAkS09/hvA==
55185538

5539+
"@swc/core-freebsd-x64@1.2.146":
5540+
version "1.2.146"
5541+
resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.146.tgz#6bda670ae5abb05abecb51d832950b3c159289d1"
5542+
integrity sha512-eYU5g7p/dY98+hvg3VJtwiX+btRWnq+WO4y4M+X1nguqghvuTv6jtVLeHDNr8FEhc+FMSJPYKO321ZVa0xCKXw==
5543+
55195544
"@swc/core-linux-arm-gnueabihf@1.2.133":
55205545
version "1.2.133"
55215546
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.133.tgz#fcbefd1783c8fbde44d965ec0fb051387c3c92a9"
55225547
integrity sha512-oB9L0Xs6cfOYUr7Qc8tpPd3IpY3dXIaJZ/OZQqFhIQFzeMZVApaLBeyfX+gwH8d8wgceuPj4HeyZE+IWw2GTJQ==
55235548

5549+
"@swc/core-linux-arm-gnueabihf@1.2.146":
5550+
version "1.2.146"
5551+
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.146.tgz#f37f6876cfd42bb58037f7c3b2dd13b58f1cf40d"
5552+
integrity sha512-ahKwlP9b41HUlwY+0eRJjgG4yJZN+uT16iBB2X7VedipmRO0aOOaP8xLReDjn4Z13DL14iAPC6Jnxiaw5rl8LQ==
5553+
55245554
"@swc/core-linux-arm64-gnu@1.2.133":
55255555
version "1.2.133"
55265556
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.133.tgz#2d2986824aaf1dd58c4b4e173d6186b7e2073d54"
55275557
integrity sha512-SF0Yviv+9L1ELsn578/TJd44rIhqbGGAD+AgpyJB8YGoFTAFUTnoAhFYNEPOEfbf/IQyWcyHk3vAZ7a2VPRIFg==
55285558

5559+
"@swc/core-linux-arm64-gnu@1.2.146":
5560+
version "1.2.146"
5561+
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.146.tgz#9daed25cbcc3fcfbf792fadc26b0d13a1bd8a130"
5562+
integrity sha512-S/0EJI8BWBQtsyIuYwVg+Gq03NlGl/xWOJgwLJss5+DawvxK8YZFteczw7M/bN/E5D2TqZRyybLM6baQozgDAg==
5563+
55295564
"@swc/core-linux-arm64-gnu@^1.2.136":
55305565
version "1.2.136"
55315566
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.136.tgz#111a008e54d1e38b33a0d3d3134309a002f6a3b7"
@@ -5536,6 +5571,11 @@
55365571
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.133.tgz#9daae6e86b9c692aecdaa6109721a5ff00d114ad"
55375572
integrity sha512-tZiqwz7dTOxnGMwnYguULKl6gNom6CQWXoUyoliksaZA6+uNALO1/PNh/ctzuDbu2Agj4ltsmoevhZlrzC3geA==
55385573

5574+
"@swc/core-linux-arm64-musl@1.2.146":
5575+
version "1.2.146"
5576+
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.146.tgz#af5bdc23160fbb9db49ea1f05580000baabde063"
5577+
integrity sha512-tOHcanuqgniMwUWMwjA+zr/hZyVn931l8DiIi3Mthyplp/PDY68PVAUJ8miJd4C5XDPcYfPOe5kRyXsFrdZzhw==
5578+
55395579
"@swc/core-linux-arm64-musl@^1.2.136":
55405580
version "1.2.136"
55415581
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.136.tgz#86d3a207ba519ce38410bb0f896baa6279de4051"
@@ -5546,6 +5586,11 @@
55465586
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.133.tgz#77439a67f2e39125b2f6c5c62d70accaf5140323"
55475587
integrity sha512-xXx+/x9y803chUtOqsETvZjimCEiFNcYobsV4wDzlO/E9njrDhmteGcHOv5C6cGSfP6H8tG+hL1JlqJQm+hPSQ==
55485588

5589+
"@swc/core-linux-x64-gnu@1.2.146":
5590+
version "1.2.146"
5591+
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.146.tgz#aeef122f0b313fb95438e209f22697ddb3da5c7d"
5592+
integrity sha512-w9jHnFe1XLYfQYWkaJwKgmtb/HKsgyFy0sCQpVjgDq/+ds8PPyACthDINpiEMsAOFN+IfE59HDn4A2gN3qyVgg==
5593+
55495594
"@swc/core-linux-x64-gnu@^1.2.136":
55505595
version "1.2.136"
55515596
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.136.tgz#91a44b439743e59b1e1d649a87032db44d2214d3"
@@ -5556,6 +5601,11 @@
55565601
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.133.tgz#f37122c608d9392a3dbda4189e1d68db46f49614"
55575602
integrity sha512-LnLY5MnwG/L7U+FC/k5LU4K7h+kz5/fo8DC507BncSZj5LLxT9ohhCxO+iUp7qKGw+UQFgSUgUinh1I8FfV6cQ==
55585603

5604+
"@swc/core-linux-x64-musl@1.2.146":
5605+
version "1.2.146"
5606+
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.146.tgz#d146fd167e9d84a08637a9e1d535b04f2204bd99"
5607+
integrity sha512-iwKiHvV8p48/82+eJRCy/WcnAZBOFr2ZJ5VLtRuV+sz0mkWjoimnLZ8SEshoru9PVoKF7hfG7AMqKaVOUjSJFg==
5608+
55595609
"@swc/core-linux-x64-musl@^1.2.136":
55605610
version "1.2.136"
55615611
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.136.tgz#0bdde1359245642f6126d6f62e8abe0a1c791f0a"
@@ -5566,16 +5616,31 @@
55665616
resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.133.tgz#322ea6234182005a81a2b3e64d3e35273057bd8c"
55675617
integrity sha512-Fk4D8v56TOhoP5lRFSoZqWXt8enCdHGbZsSIdz7DSjQyS/VeePXdoZI8vmWUcuy2OSquQ4hpS2o1v3wVSREWiw==
55685618

5619+
"@swc/core-win32-arm64-msvc@1.2.146":
5620+
version "1.2.146"
5621+
resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.146.tgz#23b52c4fdcf1395861eb915924285b7857c3db68"
5622+
integrity sha512-n21riIEGTPim19Y0mrBIDVZfOrYdfd2W8QEgbiG/f+kcOlWckvyh9ZKexd6D8QpHe73C4lOX1RrmH3DgnPGhqA==
5623+
55695624
"@swc/core-win32-ia32-msvc@1.2.133":
55705625
version "1.2.133"
55715626
resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.133.tgz#b9766f17821ce3ae7010577174df2549f92a8a07"
55725627
integrity sha512-Sf9UmXSPFr7308OSDfIIU0iLRfzilWlnVfVzUfWLd02Z9t5awBxNYCAZrXxny4FUvTDK9qL+/uY378bFH6tYiw==
55735628

5629+
"@swc/core-win32-ia32-msvc@1.2.146":
5630+
version "1.2.146"
5631+
resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.146.tgz#3e56db016661cf877b8ae39056fadbb14ec17eef"
5632+
integrity sha512-5b99VzxvTqTQCZDmpKrGevUc9SK0QBiGZG4Oeh5CnSJyx8SZU0A3R7rbMoSR5/raP9OA/0ZvlXefUDXIsKNadA==
5633+
55745634
"@swc/core-win32-x64-msvc@1.2.133":
55755635
version "1.2.133"
55765636
resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.133.tgz#5afc09724bac622e6f40ce6cd5e901e1458aad98"
55775637
integrity sha512-nXZJihzwUjzzF78ipPp+uUWmLQtbFzuR5eADNk1MsnHgWflKaL5OXNVz5c8+qyTl5/c3/W1b4GSevFOfEuApxw==
55785638

5639+
"@swc/core-win32-x64-msvc@1.2.146":
5640+
version "1.2.146"
5641+
resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.146.tgz#e9010b06fbfebdc745d2dd324b752ddd4f685bc9"
5642+
integrity sha512-P45vAh0hR9dISIceSv6MkypjT0WduLWB4U8LPoCneeAw7mA1U7liS0Uu1PeiafxQVMWg8SNyIJFDcSg/haLJgg==
5643+
55795644
"@swc/core@^1.2.119":
55805645
version "1.2.133"
55815646
resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.133.tgz#2d0654b2135ea822e2933c02e150563165bdefff"
@@ -5595,6 +5660,25 @@
55955660
"@swc/core-win32-ia32-msvc" "1.2.133"
55965661
"@swc/core-win32-x64-msvc" "1.2.133"
55975662

5663+
"@swc/core@^1.2.146":
5664+
version "1.2.146"
5665+
resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.146.tgz#dd86c65d101e1414f9d5a14a22c3541dd4dcfeef"
5666+
integrity sha512-axIapm2mReT45ILuYxwe0xEWqtITj3dyfDIGIgdC8Tx7ss5vpXvr22UbDSUTRIS+nypFy6hViIR1RhXE1hXnig==
5667+
optionalDependencies:
5668+
"@swc/core-android-arm-eabi" "1.2.146"
5669+
"@swc/core-android-arm64" "1.2.146"
5670+
"@swc/core-darwin-arm64" "1.2.146"
5671+
"@swc/core-darwin-x64" "1.2.146"
5672+
"@swc/core-freebsd-x64" "1.2.146"
5673+
"@swc/core-linux-arm-gnueabihf" "1.2.146"
5674+
"@swc/core-linux-arm64-gnu" "1.2.146"
5675+
"@swc/core-linux-arm64-musl" "1.2.146"
5676+
"@swc/core-linux-x64-gnu" "1.2.146"
5677+
"@swc/core-linux-x64-musl" "1.2.146"
5678+
"@swc/core-win32-arm64-msvc" "1.2.146"
5679+
"@swc/core-win32-ia32-msvc" "1.2.146"
5680+
"@swc/core-win32-x64-msvc" "1.2.146"
5681+
55985682
"@szmarczak/http-timer@^1.1.2":
55995683
version "1.1.2"
56005684
resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz"

0 commit comments

Comments
 (0)