Skip to content

Commit 22de84f

Browse files
hershelhbluwy
andauthoredMar 2, 2023
fix: resolve browser mapping using bare imports (fix #11208) (#11219)
Co-authored-by: bluwy <bjornlu.dev@gmail.com>
1 parent 209c3bd commit 22de84f

File tree

11 files changed

+47
-4
lines changed

11 files changed

+47
-4
lines changed
 

‎packages/vite/src/node/plugins/resolve.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -1208,8 +1208,11 @@ function tryResolveBrowserMapping(
12081208
const mapId = isFilePath ? './' + slash(path.relative(pkg.dir, id)) : id
12091209
const browserMappedPath = mapWithBrowserField(mapId, pkg.data.browser)
12101210
if (browserMappedPath) {
1211-
const fsPath = path.join(pkg.dir, browserMappedPath)
1212-
if ((res = tryFsResolve(fsPath, options))) {
1211+
if (
1212+
(res = bareImportRE.test(browserMappedPath)
1213+
? tryNodeResolve(browserMappedPath, importer, options, true)?.id
1214+
: tryFsResolve(path.join(pkg.dir, browserMappedPath), options))
1215+
) {
12131216
isDebug &&
12141217
debug(`[browser mapped] ${colors.cyan(id)} -> ${colors.dim(res)}`)
12151218
idToPkgMap.set(res, pkg)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default '[fail]'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default '[fail]'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "@vitejs/test-resolve-browser-field-bare-import-fail",
3+
"private": true,
4+
"version": "1.0.0",
5+
"main": "main.js",
6+
"module": "module.js",
7+
"type": "module"
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default '[fail]'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default '[success]'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "@vitejs/test-resolve-browser-field-bare-import-success",
3+
"private": true,
4+
"version": "1.0.0",
5+
"main": "main.js",
6+
"module": "module.js",
7+
"type": "module"
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import message from '@vitejs/test-resolve-browser-field-bare-import-fail'
2+
export default message

‎playground/resolve/browser-field/package.json

+7-1
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,14 @@
1010
"./ext.js": "./out/esm.browser.js",
1111
"./ext-index/index.js": "./out/esm.browser.js",
1212
"./no-ext-index": "./out/esm.browser.js",
13+
"./bare-import": "./bare-import.js",
1314
"./not-browser.js": false,
1415
"./multiple.dot.path.js": false,
15-
"jsdom": false
16+
"jsdom": false,
17+
"@vitejs/test-resolve-browser-field-bare-import-fail": "@vitejs/test-resolve-browser-field-bare-import-success"
18+
},
19+
"dependencies": {
20+
"@vitejs/test-resolve-browser-field-bare-import-fail": "link:../browser-field-bare-import-fail",
21+
"@vitejs/test-resolve-browser-field-bare-import-success": "link:../browser-field-bare-import-success"
1622
}
1723
}

‎playground/resolve/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ <h2>resolve package that contains # in path</h2>
233233
import f from '@vitejs/test-resolve-browser-field/ext-index'
234234
import g from '@vitejs/test-resolve-browser-field/no-ext-index/index.js' // no substitution
235235
import h from '@vitejs/test-resolve-browser-field/no-ext?query'
236+
import i from '@vitejs/test-resolve-browser-field/bare-import'
236237

237238
import {
238239
ra,
@@ -244,7 +245,7 @@ <h2>resolve package that contains # in path</h2>
244245
rg,
245246
} from '@vitejs/test-resolve-browser-field/relative'
246247

247-
const success = [main, a, c, d, e, f, h, ra, rc, rd, re, rf]
248+
const success = [main, a, c, d, e, f, h, i, ra, rc, rd, re, rf]
248249
const noSuccess = [b, g, rb, rg]
249250

250251
if (

‎pnpm-lock.yaml

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

0 commit comments

Comments
 (0)
Please sign in to comment.