Skip to content

Commit 060581b

Browse files
authored
Fix issues with the new fork plugin (#11723)
1 parent e997756 commit 060581b

File tree

1 file changed

+31
-7
lines changed

1 file changed

+31
-7
lines changed

scripts/rollup/plugins/use-forks-plugin.js

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,63 @@
77
'use strict';
88

99
const path = require('path');
10+
const semver = require('semver');
11+
12+
function resolveRelatively(importee, importer) {
13+
if (semver.gte(process.version, '8.9.0')) {
14+
return require.resolve(importee, {
15+
paths: [path.dirname(importer)],
16+
});
17+
} else {
18+
// `paths` argument is not available in older Node.
19+
// This works though.
20+
// https://github.com/nodejs/node/issues/5963
21+
const Module = require('module');
22+
return Module._findPath(importee, [
23+
path.dirname(importer),
24+
...module.paths,
25+
]);
26+
}
27+
}
1028

1129
let resolveCache = new Map();
1230
function useForks(forks) {
13-
let resolvedForks = {};
31+
let resolvedForks = new Map();
1432
Object.keys(forks).forEach(srcModule => {
1533
const targetModule = forks[srcModule];
16-
resolvedForks[require.resolve(srcModule)] = require.resolve(targetModule);
34+
resolvedForks.set(
35+
require.resolve(srcModule),
36+
require.resolve(targetModule)
37+
);
1738
});
1839
return {
1940
resolveId(importee, importer) {
2041
if (!importer || !importee) {
2142
return null;
2243
}
44+
if (importee.startsWith('\u0000')) {
45+
// Internal Rollup reference, ignore.
46+
// Passing that to Node file functions can fatal.
47+
return null;
48+
}
2349
let resolvedImportee = null;
2450
let cacheKey = `${importer}:::${importee}`;
2551
if (resolveCache.has(cacheKey)) {
2652
// Avoid hitting file system if possible.
2753
resolvedImportee = resolveCache.get(cacheKey);
2854
} else {
2955
try {
30-
resolvedImportee = require.resolve(importee, {
31-
paths: [path.dirname(importer)],
32-
});
56+
resolvedImportee = resolveRelatively(importee, importer);
3357
} catch (err) {
3458
// Not our fault, let Rollup fail later.
3559
}
3660
if (resolvedImportee) {
3761
resolveCache.set(cacheKey, resolvedImportee);
3862
}
3963
}
40-
if (resolvedImportee && resolvedForks.hasOwnProperty(resolvedImportee)) {
64+
if (resolvedImportee && resolvedForks.has(resolvedImportee)) {
4165
// We found a fork!
42-
return resolvedForks[resolvedImportee];
66+
return resolvedForks.get(resolvedImportee);
4367
}
4468
return null;
4569
},

0 commit comments

Comments
 (0)