@samitouri / QOS-React / commits / 060581b128

Fix issues with the new fork plugin (#11723)

Dan Abramov committed Nov 30, 2017 at 16:20 UTC 060581b1287ea75d128f8f6b2b7bf494fe5db4fa
1 file changed +31 -7
scripts/rollup/plugins/use-forks-plugin.js
+31 -7
@@ -7,19 +7,45 @@
7 'use strict';
8
9 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 +}
28
29 let resolveCache = new Map();
30 function useForks(forks) {
13 - let resolvedForks = {};
31 + let resolvedForks = new Map();
32 Object.keys(forks).forEach(srcModule => {
33 const targetModule = forks[srcModule];
16 - resolvedForks[require.resolve(srcModule)] = require.resolve(targetModule);
34 + resolvedForks.set(
35 + require.resolve(srcModule),
36 + require.resolve(targetModule)
37 + );
38 });
39 return {
40 resolveId(importee, importer) {
41 if (!importer || !importee) {
42 return null;
43 }
44 + if (importee.startsWith('\u0000')) {
45 + // Internal Rollup reference, ignore.
46 + // Passing that to Node file functions can fatal.
47 + return null;
48 + }
49 let resolvedImportee = null;
50 let cacheKey = `${importer}:::${importee}`;
51 if (resolveCache.has(cacheKey)) {
@@ -27,9 +53,7 @@ function useForks(forks) {
53 resolvedImportee = resolveCache.get(cacheKey);
54 } else {
55 try {
30 - resolvedImportee = require.resolve(importee, {
31 - paths: [path.dirname(importer)],
32 - });
56 + resolvedImportee = resolveRelatively(importee, importer);
57 } catch (err) {
58 // Not our fault, let Rollup fail later.
59 }
@@ -37,9 +61,9 @@ function useForks(forks) {
61 resolveCache.set(cacheKey, resolvedImportee);
62 }
63 }
40 - if (resolvedImportee && resolvedForks.hasOwnProperty(resolvedImportee)) {
64 + if (resolvedImportee && resolvedForks.has(resolvedImportee)) {
65 // We found a fork!
42 - return resolvedForks[resolvedImportee];
66 + return resolvedForks.get(resolvedImportee);
67 }
68 return null;
69 },