Skip to content

Commit e1cfe2f

Browse files
cursoragentn3ps
andcommitted
feat: add ~ui and ~shared import alias infrastructure
Configure all build systems to resolve ~ui and ~shared aliases: - tsconfig.json: add paths for ~ui/* and ~shared/* - webpack: add resolve.alias entries - babel: add babel-plugin-module-resolver (used by browserify via babelify) - jest: add moduleNameMapper in both unit and integration configs No existing imports are changed. Both relative and aliased imports work simultaneously, enabling gradual opt-in adoption. Co-authored-by: Francis Nepomuceno <n3ps@users.noreply.github.com>
1 parent 2ddb15e commit e1cfe2f

File tree

7 files changed

+81
-3
lines changed

7 files changed

+81
-3
lines changed

babel.config.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@ module.exports = function (api) {
2121
},
2222
],
2323
plugins: [
24+
[
25+
'module-resolver',
26+
{
27+
alias: {
28+
'~ui': './ui',
29+
'~shared': './shared',
30+
},
31+
},
32+
],
2433
// `browserify` is old and busted, and doesn't support `??=` (and other
2534
// logical assignment operators). This plugin lets us target es2020-level
2635
// browsers (except we do still end up with transpiled logical assignment

development/webpack/webpack.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,8 @@ const config = {
313313
context,
314314
'../ui/__mocks__/perps/perps-controller',
315315
),
316+
'~ui': join(context, '../ui'),
317+
'~shared': join(context, '../shared'),
316318
},
317319
// use `fallback` to redirect module requests when normal resolving fails,
318320
// good for polyfill-ing built-in node modules that aren't available in

jest.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ module.exports = {
1919
// Map @metamask/perps-controller to local mock
2020
'^@metamask/perps-controller$':
2121
'<rootDir>/ui/__mocks__/perps/perps-controller/index.ts',
22+
'^~ui/(.*)$': '<rootDir>/ui/$1',
23+
'^~shared/(.*)$': '<rootDir>/shared/$1',
2224
},
2325
// The path to the Prettier executable used to format snapshots
2426
// Jest doesn't support Prettier 3 yet, so we use Prettier 2

jest.integration.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ module.exports = {
1313
// Map @metamask/perps-controller to local mock
1414
'^@metamask/perps-controller$':
1515
'<rootDir>/ui/__mocks__/perps/perps-controller/index.ts',
16+
'^~ui/(.*)$': '<rootDir>/ui/$1',
17+
'^~shared/(.*)$': '<rootDir>/shared/$1',
1618
},
1719
// The path to the Prettier executable used to format snapshots
1820
// Jest doesn't support Prettier 3 yet, so we use Prettier 2

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,7 @@
604604
"addons-linter": "^9.5.0",
605605
"autoprefixer": "^10.4.19",
606606
"axios": "patch:axios@npm%3A1.13.5#~/.yarn/patches/axios-npm-1.13.5-ed8865f696.patch",
607+
"babel-plugin-module-resolver": "^5.0.2",
607608
"babel-plugin-react-compiler": "^1.0.0",
608609
"babelify": "^10.0.0",
609610
"bify-module-groups": "^2.0.0",

tsconfig.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@
2727
"baseUrl": ".",
2828
// Path mappings for module resolution
2929
"paths": {
30-
"@metamask/perps-controller": ["ui/__mocks__/perps/perps-controller"]
30+
"@metamask/perps-controller": ["ui/__mocks__/perps/perps-controller"],
31+
"~ui/*": ["ui/*"],
32+
"~shared/*": ["shared/*"]
3133
}
3234
},
3335
"exclude": [

yarn.lock

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18999,6 +18999,19 @@ __metadata:
1899918999
languageName: node
1900019000
linkType: hard
1900119001

19002+
"babel-plugin-module-resolver@npm:^5.0.2":
19003+
version: 5.0.2
19004+
resolution: "babel-plugin-module-resolver@npm:5.0.2"
19005+
dependencies:
19006+
find-babel-config: "npm:^2.1.1"
19007+
glob: "npm:^9.3.3"
19008+
pkg-up: "npm:^3.1.0"
19009+
reselect: "npm:^4.1.7"
19010+
resolve: "npm:^1.22.8"
19011+
checksum: 10/8084fa8a4cd96aaa861e5fe765a6cd03accef64d21d4108e314029bcd5f3a7fd96faf0c877c575a6a24d4fe0d87458d49748ca56faa4c77b2b812e4ed6023768
19012+
languageName: node
19013+
linkType: hard
19014+
1900219015
"babel-plugin-polyfill-corejs2@npm:^0.4.10":
1900319016
version: 0.4.11
1900419017
resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11"
@@ -25897,6 +25910,15 @@ __metadata:
2589725910
languageName: node
2589825911
linkType: hard
2589925912

25913+
"find-babel-config@npm:^2.1.1":
25914+
version: 2.1.2
25915+
resolution: "find-babel-config@npm:2.1.2"
25916+
dependencies:
25917+
json5: "npm:^2.2.3"
25918+
checksum: 10/f0fae1a9125a379cf660fc1b5ca7c1fc1edac5f47e521a89e4c2b92865c8e57101a9152ee503eef9f33e16f196182f2cff03d7768b7caf5eef81c80f1c124a2f
25919+
languageName: node
25920+
linkType: hard
25921+
2590025922
"find-cache-dir@npm:^2.0.0":
2590125923
version: 2.1.0
2590225924
resolution: "find-cache-dir@npm:2.1.0"
@@ -27014,6 +27036,18 @@ __metadata:
2701427036
languageName: node
2701527037
linkType: hard
2701627038

27039+
"glob@npm:^9.3.3":
27040+
version: 9.3.5
27041+
resolution: "glob@npm:9.3.5"
27042+
dependencies:
27043+
fs.realpath: "npm:^1.0.0"
27044+
minimatch: "npm:^8.0.2"
27045+
minipass: "npm:^4.2.4"
27046+
path-scurry: "npm:^1.6.1"
27047+
checksum: 10/e5fa8a58adf53525bca42d82a1fad9e6800032b7e4d372209b80cfdca524dd9a7dbe7d01a92d7ed20d89c572457f12c250092bc8817cb4f1c63efefdf9b658c0
27048+
languageName: node
27049+
linkType: hard
27050+
2701727051
"global-agent@npm:^3.0.0":
2701827052
version: 3.0.0
2701927053
resolution: "global-agent@npm:3.0.0"
@@ -33130,6 +33164,7 @@ __metadata:
3313033164
autoprefixer: "npm:^10.4.19"
3313133165
await-semaphore: "npm:^0.1.3"
3313233166
axios: "patch:axios@npm%3A1.13.5#~/.yarn/patches/axios-npm-1.13.5-ed8865f696.patch"
33167+
babel-plugin-module-resolver: "npm:^5.0.2"
3313333168
babel-plugin-react-compiler: "npm:^1.0.0"
3313433169
babelify: "npm:^10.0.0"
3313533170
base32-encode: "npm:^1.2.0"
@@ -33615,6 +33650,15 @@ __metadata:
3361533650
languageName: node
3361633651
linkType: hard
3361733652

33653+
"minimatch@npm:^8.0.2":
33654+
version: 8.0.7
33655+
resolution: "minimatch@npm:8.0.7"
33656+
dependencies:
33657+
brace-expansion: "npm:^2.0.1"
33658+
checksum: 10/dead7be9ad3eac2b0f9796373aa345a194aed608622880621ce53e100d75ace295ed68b9ae59c2a4de0854435b8dcd56fb7692812dda1c439463ba44dae5252c
33659+
languageName: node
33660+
linkType: hard
33661+
3361833662
"minimatch@npm:^9.0.0, minimatch@npm:^9.0.4":
3361933663
version: 9.0.5
3362033664
resolution: "minimatch@npm:9.0.5"
@@ -33702,6 +33746,13 @@ __metadata:
3370233746
languageName: node
3370333747
linkType: hard
3370433748

33749+
"minipass@npm:^4.2.4":
33750+
version: 4.2.8
33751+
resolution: "minipass@npm:4.2.8"
33752+
checksum: 10/e148eb6dcb85c980234cad889139ef8ddf9d5bdac534f4f0268446c8792dd4c74f4502479be48de3c1cce2f6450f6da4d0d4a86405a8a12be04c1c36b339569a
33753+
languageName: node
33754+
linkType: hard
33755+
3370533756
"minipass@npm:^5.0.0":
3370633757
version: 5.0.0
3370733758
resolution: "minipass@npm:5.0.0"
@@ -35735,7 +35786,7 @@ __metadata:
3573535786
languageName: node
3573635787
linkType: hard
3573735788

35738-
"path-scurry@npm:^1.11.1":
35789+
"path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1":
3573935790
version: 1.11.1
3574035791
resolution: "path-scurry@npm:1.11.1"
3574135792
dependencies:
@@ -36052,6 +36103,15 @@ __metadata:
3605236103
languageName: node
3605336104
linkType: hard
3605436105

36106+
"pkg-up@npm:^3.1.0":
36107+
version: 3.1.0
36108+
resolution: "pkg-up@npm:3.1.0"
36109+
dependencies:
36110+
find-up: "npm:^3.0.0"
36111+
checksum: 10/5bac346b7c7c903613c057ae3ab722f320716199d753f4a7d053d38f2b5955460f3e6ab73b4762c62fd3e947f58e04f1343e92089e7bb6091c90877406fcd8c8
36112+
languageName: node
36113+
linkType: hard
36114+
3605536115
"playwright-core@npm:1.55.0, playwright-core@npm:>=1.2.0":
3605636116
version: 1.55.0
3605736117
resolution: "playwright-core@npm:1.55.0"
@@ -38716,7 +38776,7 @@ __metadata:
3871638776
languageName: node
3871738777
linkType: hard
3871838778

38719-
"reselect@npm:^4.1.8":
38779+
"reselect@npm:^4.1.7, reselect@npm:^4.1.8":
3872038780
version: 4.1.8
3872138781
resolution: "reselect@npm:4.1.8"
3872238782
checksum: 10/199984d9872f71cd207f4aa6e6fd2bd48d95154f7aa9b3aee3398335f39f5491059e732f28c12e9031d5d434adab2c458dc8af5afb6564d0ad37e1644445e09c

0 commit comments

Comments
 (0)