Skip to content

Commit 5fbc251

Browse files
authoredAug 30, 2023
fix(es/module): Don't create absolute paths for jsc.paths on Windows (#7892)
**Related issue:** - Closes #7806
1 parent 766d3e8 commit 5fbc251

File tree

14 files changed

+232
-61
lines changed

14 files changed

+232
-61
lines changed
 

‎bindings/Cargo.lock

+56-56
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎bindings/binding_core_node/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ tracing-chrome = "0.5.0"
5151
tracing-futures = "0.2.5"
5252
tracing-subscriber = { version = "0.3.9", features = ["env-filter"] }
5353

54-
swc_core = { version = "0.81.5", features = [
54+
swc_core = { version = "0.82.6", features = [
5555
"allocator_node",
5656
"ecma_ast",
5757
"ecma_ast_serde",

‎bindings/binding_core_wasm/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ anyhow = "1.0.66"
3535
getrandom = { version = "0.2.10", features = ["js"] }
3636
serde = { version = "1", features = ["derive"] }
3737
serde-wasm-bindgen = "0.4.5"
38-
swc_core = { version = "0.81.5", features = [
38+
swc_core = { version = "0.82.6", features = [
3939
"ecma_ast_serde",
4040
"binding_macro_wasm",
4141
"ecma_transforms",

‎bindings/swc_cli/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ relative-path = "1.6.1"
3030
serde = { version = "1", features = ["derive"] }
3131
serde_json = { version = "1", features = ["unbounded_depth"] }
3232
sourcemap = "6.2.2"
33-
swc_core = { version = "0.81.5", features = [
33+
swc_core = { version = "0.82.6", features = [
3434
"trace_macro",
3535
"common_concurrent",
3636
"base_concurrent",

‎crates/swc/src/config/mod.rs

+16-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use std::{
1010
usize,
1111
};
1212

13-
use anyhow::{bail, Error};
13+
use anyhow::{bail, Context, Error};
1414
use dashmap::DashMap;
1515
use either::Either;
1616
use indexmap::IndexMap;
@@ -1958,10 +1958,24 @@ fn default_env_name() -> String {
19581958
}
19591959
}
19601960

1961-
fn build_resolver(base_url: PathBuf, paths: CompiledPaths) -> Box<SwcImportResolver> {
1961+
fn build_resolver(mut base_url: PathBuf, paths: CompiledPaths) -> Box<SwcImportResolver> {
19621962
static CACHE: Lazy<DashMap<(PathBuf, CompiledPaths), SwcImportResolver, ARandomState>> =
19631963
Lazy::new(Default::default);
19641964

1965+
// On Windows, we need to normalize path as UNC path.
1966+
if cfg!(target_os = "windows") {
1967+
base_url = base_url
1968+
.canonicalize()
1969+
.with_context(|| {
1970+
format!(
1971+
"failed to canonicalize jsc.baseUrl(`{}`)\nThis is required on Windows \
1972+
because of UNC path.",
1973+
base_url.display()
1974+
)
1975+
})
1976+
.unwrap();
1977+
}
1978+
19651979
if let Some(cached) = CACHE.get(&(base_url.clone(), paths.clone())) {
19661980
return Box::new((*cached).clone());
19671981
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"$schema": "https://json.schemastore.org/swcrc",
3+
"module": {
4+
"type": "commonjs"
5+
},
6+
"jsc": {
7+
"target": "es2021",
8+
"parser": {
9+
"syntax": "typescript",
10+
"decorators": true,
11+
"dynamicImport": true
12+
},
13+
"transform": {
14+
"legacyDecorator": true,
15+
"decoratorMetadata": true,
16+
"useDefineForClassFields": false
17+
},
18+
"keepClassNames": true,
19+
"baseUrl": ".",
20+
"paths": {
21+
"@utils/*": [
22+
"src/utils/*"
23+
],
24+
}
25+
},
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { helloWorld } from "@utils/hello-world.utils.js";
2+
3+
console.log(helloWorld());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function helloWorld() {
2+
return "Hello world!";
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", {
3+
value: true
4+
});
5+
const _helloworldutils = require("./utils/hello-world.utils.js");
6+
console.log((0, _helloworldutils.helloWorld)());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", {
3+
value: true
4+
});
5+
Object.defineProperty(exports, "helloWorld", {
6+
enumerable: true,
7+
get: function() {
8+
return helloWorld;
9+
}
10+
});
11+
function helloWorld() {
12+
return "Hello world!";
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import path from "path";
2+
import swc from "../../..";
3+
import { fileURLToPath } from "url";
4+
5+
const __filename = fileURLToPath(import.meta.url);
6+
7+
describe("jsc.paths", () => {
8+
it("should work with process.cwd()", async () => {
9+
console.log(process.cwd());
10+
const f = path.join(
11+
__filename,
12+
"..",
13+
"..",
14+
"..",
15+
"tests",
16+
"swc-path-bug-1",
17+
"src",
18+
"index.ts"
19+
);
20+
console.log(f);
21+
expect(
22+
(
23+
await swc.transformFile(f, {
24+
jsc: {
25+
parser: {
26+
syntax: "typescript",
27+
},
28+
baseUrl: process.cwd(),
29+
paths: {
30+
"@utils/*": ["src/utils/*"],
31+
},
32+
},
33+
})
34+
).code
35+
).toMatchInlineSnapshot(`
36+
"\\"use strict\\";
37+
Object.defineProperty(exports, \\"__esModule\\", {
38+
value: true
39+
});
40+
const _helloworldutils = require(\\"src/utils/hello-world.utils.js\\");
41+
console.log((0, _helloworldutils.helloWorld)());
42+
"
43+
`);
44+
});
45+
46+
it("should work with process.cwd() and relative url", async () => {
47+
console.log(process.cwd());
48+
const f = path.join(
49+
"node-swc",
50+
"tests",
51+
"swc-path-bug-1",
52+
"src",
53+
"index.ts"
54+
);
55+
console.log(f);
56+
expect(
57+
(
58+
await swc.transformFile(f, {
59+
jsc: {
60+
parser: {
61+
syntax: "typescript",
62+
},
63+
baseUrl: process.cwd(),
64+
paths: {
65+
"@utils/*": ["src/utils/*"],
66+
},
67+
},
68+
})
69+
).code
70+
).toMatchInlineSnapshot(`
71+
"\\"use strict\\";
72+
Object.defineProperty(exports, \\"__esModule\\", {
73+
value: true
74+
});
75+
const _helloworldutils = require(\\"src/utils/hello-world.utils.js\\");
76+
console.log((0, _helloworldutils.helloWorld)());
77+
"
78+
`);
79+
});
80+
});

‎node-swc/tests/swc-path-bug-1/.swcrc

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"$schema": "https://json.schemastore.org/swcrc",
3+
"module": {"type": "commonjs"},
4+
"jsc": {
5+
"target": "es2021",
6+
"parser": { "syntax": "typescript", "decorators": true, "dynamicImport": true },
7+
"transform": {
8+
"legacyDecorator": true,
9+
"decoratorMetadata": true,
10+
"useDefineForClassFields": false
11+
},
12+
"keepClassNames": true,
13+
"baseUrl": "./",
14+
"paths": {
15+
"@utils/*": [ "src/utils/*" ]
16+
}
17+
},
18+
"minify": false,
19+
"sourceMaps": true
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { helloWorld } from "@utils/hello-world.utils.js";
2+
3+
console.log(helloWorld());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function helloWorld() {
2+
return "Hello world!";
3+
}

1 commit comments

Comments
 (1)

github-actions[bot] commented on Aug 30, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 5fbc251 Previous: 8db968a Ratio
es/full/bugs-1 295534 ns/iter (± 10332) 289587 ns/iter (± 8574) 1.02
es/full/minify/libraries/antd 1287433065 ns/iter (± 16011923) 1307477861 ns/iter (± 14777675) 0.98
es/full/minify/libraries/d3 271526459 ns/iter (± 4067750) 271250776 ns/iter (± 3773463) 1.00
es/full/minify/libraries/echarts 1032901563 ns/iter (± 3348705) 1037081860 ns/iter (± 5370837) 1.00
es/full/minify/libraries/jquery 83648079 ns/iter (± 90505) 83329372 ns/iter (± 148904) 1.00
es/full/minify/libraries/lodash 96563634 ns/iter (± 312015) 96864275 ns/iter (± 256435) 1.00
es/full/minify/libraries/moment 49404532 ns/iter (± 54777) 49311457 ns/iter (± 76661) 1.00
es/full/minify/libraries/react 17853802 ns/iter (± 51558) 17904183 ns/iter (± 42696) 1.00
es/full/minify/libraries/terser 216185706 ns/iter (± 635810) 215382555 ns/iter (± 473389) 1.00
es/full/minify/libraries/three 379960294 ns/iter (± 1571916) 381401157 ns/iter (± 4094636) 1.00
es/full/minify/libraries/typescript 2610700544 ns/iter (± 7598975) 2617597398 ns/iter (± 10208844) 1.00
es/full/minify/libraries/victory 550248145 ns/iter (± 1962749) 562203434 ns/iter (± 4807051) 0.98
es/full/minify/libraries/vue 117798819 ns/iter (± 237267) 117887359 ns/iter (± 284349) 1.00
es/full/codegen/es3 33671 ns/iter (± 169) 34940 ns/iter (± 76) 0.96
es/full/codegen/es5 33527 ns/iter (± 64) 34886 ns/iter (± 88) 0.96
es/full/codegen/es2015 33579 ns/iter (± 69) 34987 ns/iter (± 130) 0.96
es/full/codegen/es2016 33598 ns/iter (± 70) 34972 ns/iter (± 152) 0.96
es/full/codegen/es2017 33622 ns/iter (± 96) 35097 ns/iter (± 82) 0.96
es/full/codegen/es2018 33582 ns/iter (± 112) 35018 ns/iter (± 147) 0.96
es/full/codegen/es2019 33652 ns/iter (± 130) 34918 ns/iter (± 83) 0.96
es/full/codegen/es2020 33609 ns/iter (± 103) 34927 ns/iter (± 140) 0.96
es/full/all/es3 168654423 ns/iter (± 1645465) 171439564 ns/iter (± 1323992) 0.98
es/full/all/es5 160793169 ns/iter (± 1749270) 163324140 ns/iter (± 958337) 0.98
es/full/all/es2015 120402864 ns/iter (± 700880) 121943894 ns/iter (± 730798) 0.99
es/full/all/es2016 118775327 ns/iter (± 1149100) 121238720 ns/iter (± 783695) 0.98
es/full/all/es2017 118051257 ns/iter (± 799823) 120031820 ns/iter (± 572314) 0.98
es/full/all/es2018 117049071 ns/iter (± 786136) 118231755 ns/iter (± 738093) 0.99
es/full/all/es2019 115904265 ns/iter (± 496237) 117527678 ns/iter (± 292078) 0.99
es/full/all/es2020 110990147 ns/iter (± 565794) 112782526 ns/iter (± 384914) 0.98
es/full/parser 490378 ns/iter (± 5878) 498673 ns/iter (± 6036) 0.98
es/full/base/fixer 17887 ns/iter (± 43) 18329 ns/iter (± 89) 0.98
es/full/base/resolver_and_hygiene 79193 ns/iter (± 130) 80975 ns/iter (± 153) 0.98
serialization of serde 293 ns/iter (± 0) 279 ns/iter (± 0) 1.05
css/minify/libraries/bootstrap 28778211 ns/iter (± 145085) 29235806 ns/iter (± 82142) 0.98
css/visitor/compare/clone 1620359 ns/iter (± 2372) 1616969 ns/iter (± 2615) 1.00
css/visitor/compare/visit_mut_span 1740846 ns/iter (± 4192) 1751052 ns/iter (± 2290) 0.99
css/visitor/compare/visit_mut_span_panic 1814951 ns/iter (± 3513) 1829270 ns/iter (± 4554) 0.99
css/visitor/compare/fold_span 2539796 ns/iter (± 8938) 2545057 ns/iter (± 5153) 1.00
css/visitor/compare/fold_span_panic 2735037 ns/iter (± 6445) 2750558 ns/iter (± 7230) 0.99
css/lexer/bootstrap_5_1_3 4463322 ns/iter (± 27183) 4525500 ns/iter (± 2657) 0.99
css/lexer/foundation_6_7_4 3749572 ns/iter (± 1780) 3808307 ns/iter (± 4212) 0.98
css/lexer/tailwind_3_1_1 711613 ns/iter (± 805) 721185 ns/iter (± 1147) 0.99
css/parser/bootstrap_5_1_3 18759974 ns/iter (± 58896) 19413869 ns/iter (± 41114) 0.97
css/parser/foundation_6_7_4 14982478 ns/iter (± 15846) 15369993 ns/iter (± 102350) 0.97
css/parser/tailwind_3_1_1 2925712 ns/iter (± 4243) 2985325 ns/iter (± 13871) 0.98
es/codegen/colors 732574 ns/iter (± 399654) 732611 ns/iter (± 398111) 1.00
es/codegen/large 3145990 ns/iter (± 1673982) 3115710 ns/iter (± 1640400) 1.01
es/codegen/with-parser/colors 45524 ns/iter (± 452) 45102 ns/iter (± 523) 1.01
es/codegen/with-parser/large 483446 ns/iter (± 811) 483670 ns/iter (± 1453) 1.00
es/minify/libraries/antd 1121835368 ns/iter (± 15930869) 1125297877 ns/iter (± 9385319) 1.00
es/minify/libraries/d3 236087351 ns/iter (± 304199) 237257710 ns/iter (± 635245) 1.00
es/minify/libraries/echarts 881780668 ns/iter (± 4054764) 888334156 ns/iter (± 6011628) 0.99
es/minify/libraries/jquery 72765552 ns/iter (± 181108) 72979823 ns/iter (± 369390) 1.00
es/minify/libraries/lodash 86375360 ns/iter (± 115158) 86362206 ns/iter (± 235520) 1.00
es/minify/libraries/moment 43261510 ns/iter (± 53240) 43260398 ns/iter (± 74805) 1.00
es/minify/libraries/react 15975849 ns/iter (± 37718) 15919936 ns/iter (± 55180) 1.00
es/minify/libraries/terser 182095544 ns/iter (± 397633) 184416417 ns/iter (± 709909) 0.99
es/minify/libraries/three 313701193 ns/iter (± 840488) 317637269 ns/iter (± 1348713) 0.99
es/minify/libraries/typescript 2161518137 ns/iter (± 14609210) 2218603398 ns/iter (± 10102966) 0.97
es/minify/libraries/victory 464037943 ns/iter (± 1132512) 466636885 ns/iter (± 1138608) 0.99
es/minify/libraries/vue 105099313 ns/iter (± 156711) 105641780 ns/iter (± 217258) 0.99
es/visitor/compare/clone 1921050 ns/iter (± 7979) 1913896 ns/iter (± 4654) 1.00
es/visitor/compare/visit_mut_span 2267698 ns/iter (± 3669) 2264193 ns/iter (± 6331) 1.00
es/visitor/compare/visit_mut_span_panic 2303286 ns/iter (± 4166) 2295227 ns/iter (± 1571) 1.00
es/visitor/compare/fold_span 3311467 ns/iter (± 6122) 3312648 ns/iter (± 6625) 1.00
es/visitor/compare/fold_span_panic 3459298 ns/iter (± 6616) 3450762 ns/iter (± 6672) 1.00
es/lexer/colors 13192 ns/iter (± 68) 12849 ns/iter (± 25) 1.03
es/lexer/angular 6144332 ns/iter (± 5007) 6008034 ns/iter (± 20138) 1.02
es/lexer/backbone 787060 ns/iter (± 951) 777837 ns/iter (± 1571) 1.01
es/lexer/jquery 4515129 ns/iter (± 7456) 4405178 ns/iter (± 14138) 1.02
es/lexer/jquery mobile 6914362 ns/iter (± 92929) 6702589 ns/iter (± 11719) 1.03
es/lexer/mootools 3574646 ns/iter (± 16840) 3494670 ns/iter (± 7183) 1.02
es/lexer/underscore 666026 ns/iter (± 2298) 650313 ns/iter (± 3521) 1.02
es/lexer/three 21404097 ns/iter (± 24478) 20978090 ns/iter (± 62703) 1.02
es/lexer/yui 3821840 ns/iter (± 5845) 3753358 ns/iter (± 28118) 1.02
es/parser/colors 27962 ns/iter (± 25) 26720 ns/iter (± 308) 1.05
es/parser/angular 13508891 ns/iter (± 72995) 13273712 ns/iter (± 113613) 1.02
es/parser/backbone 2004527 ns/iter (± 10208) 1944602 ns/iter (± 26214) 1.03
es/parser/jquery 10944260 ns/iter (± 33683) 10607668 ns/iter (± 53661) 1.03
es/parser/jquery mobile 16802240 ns/iter (± 43343) 16542508 ns/iter (± 122488) 1.02
es/parser/mootools 8410119 ns/iter (± 17581) 8259020 ns/iter (± 19023) 1.02
es/parser/underscore 1730216 ns/iter (± 9897) 1701377 ns/iter (± 23374) 1.02
es/parser/three 46656503 ns/iter (± 137422) 46212831 ns/iter (± 216611) 1.01
es/parser/yui 8285310 ns/iter (± 35543) 8107859 ns/iter (± 68626) 1.02
es/preset-env/usage/builtin_type 136133 ns/iter (± 32353) 136757 ns/iter (± 32693) 1.00
es/preset-env/usage/property 16668 ns/iter (± 64) 17025 ns/iter (± 103) 0.98
es/resolver/typescript 87912566 ns/iter (± 1113024) 87640517 ns/iter (± 848250) 1.00
es/fixer/typescript 62782523 ns/iter (± 849147) 62679504 ns/iter (± 310006) 1.00
es/hygiene/typescript 130930640 ns/iter (± 1036139) 129548015 ns/iter (± 741274) 1.01
es/resolver_with_hygiene/typescript 244577299 ns/iter (± 3081418) 241110678 ns/iter (± 750974) 1.01
es/visitor/base-perf/module_clone 60293 ns/iter (± 270) 60313 ns/iter (± 676) 1.00
es/visitor/base-perf/fold_empty 64018 ns/iter (± 142) 64412 ns/iter (± 387) 0.99
es/visitor/base-perf/fold_noop_impl_all 65133 ns/iter (± 342) 64461 ns/iter (± 221) 1.01
es/visitor/base-perf/fold_noop_impl_vec 65442 ns/iter (± 1244) 64530 ns/iter (± 782) 1.01
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 56 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed_clone 39 ns/iter (± 0) 40 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_boxed 108 ns/iter (± 0) 107 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 76 ns/iter (± 0) 77 ns/iter (± 0) 0.99
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2529 ns/iter (± 10) 2526 ns/iter (± 23) 1.00
es/base/parallel/resolver/typescript 4514136434 ns/iter (± 269342311) 3622641874 ns/iter (± 287796129) 1.25
es/base/parallel/hygiene/typescript 1435466786 ns/iter (± 19927319) 1445046034 ns/iter (± 17075492) 0.99
misc/visitors/time-complexity/time 5 132 ns/iter (± 6) 134 ns/iter (± 8) 0.99
misc/visitors/time-complexity/time 10 389 ns/iter (± 6) 393 ns/iter (± 2) 0.99
misc/visitors/time-complexity/time 15 680 ns/iter (± 9) 694 ns/iter (± 20) 0.98
misc/visitors/time-complexity/time 20 1065 ns/iter (± 14) 1052 ns/iter (± 5) 1.01
misc/visitors/time-complexity/time 40 3562 ns/iter (± 8) 4189 ns/iter (± 12) 0.85
misc/visitors/time-complexity/time 60 7334 ns/iter (± 21) 7345 ns/iter (± 54) 1.00
es/full-target/es2016 230731 ns/iter (± 704) 230774 ns/iter (± 1006) 1.00
es/full-target/es2017 219821 ns/iter (± 375) 218817 ns/iter (± 1039) 1.00
es/full-target/es2018 208305 ns/iter (± 360) 208454 ns/iter (± 1356) 1.00
es2020_nullish_coalescing 70736 ns/iter (± 212) 69998 ns/iter (± 382) 1.01
es2020_optional_chaining 82369 ns/iter (± 391) 81878 ns/iter (± 441) 1.01
es2022_class_properties 117415 ns/iter (± 923) 114499 ns/iter (± 437) 1.03
es2018_object_rest_spread 76277 ns/iter (± 310) 74621 ns/iter (± 466) 1.02
es2019_optional_catch_binding 66597 ns/iter (± 351) 65082 ns/iter (± 257) 1.02
es2017_async_to_generator 66249 ns/iter (± 270) 64465 ns/iter (± 394) 1.03
es2016_exponentiation 67415 ns/iter (± 279) 65744 ns/iter (± 294) 1.03
es2015_arrow 73051 ns/iter (± 330) 72143 ns/iter (± 455) 1.01
es2015_block_scoped_fn 70936 ns/iter (± 261) 69468 ns/iter (± 501) 1.02
es2015_block_scoping 125584 ns/iter (± 419) 123690 ns/iter (± 1072) 1.02

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.