Skip to content

Commit b4db2f1

Browse files
committed
Refactor diff module loading in bundle.ts to use a dynamic resolution approach for 'node-bsdiff' and 'node-hdiffpatch', improving compatibility with different package managers.
1 parent d7e1416 commit b4db2f1

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

src/bundle.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { translateOptions } from './utils';
1313
import { checkPlugins, question } from './utils';
1414
const g2js = require('gradle-to-js/lib/parser');
1515
import os from 'os';
16+
import { npm, yarn } from 'global-dirs';
1617
const properties = require('properties');
1718
import { addGitIgnore } from './utils/add-gitignore';
1819
import { checkLockFiles } from './utils/check-lockfile';
@@ -23,16 +24,25 @@ import { versionCommands } from './versions';
2324

2425
type Diff = (oldSource?: Buffer, newSource?: Buffer) => Buffer;
2526

26-
let bsdiff: Diff;
27-
let hdiff: Diff;
28-
let diff: Diff;
29-
try {
30-
bsdiff = require('node-bsdiff').diff;
31-
} catch (e) {}
27+
const loadDiffModule = (pkgName: string): Diff | undefined => {
28+
const resolvePaths = [process.cwd(), npm.packages, yarn.packages];
29+
30+
try {
31+
const resolved = require.resolve(pkgName, { paths: resolvePaths });
32+
const mod = require(resolved);
33+
if (mod?.diff) {
34+
return mod.diff as Diff;
35+
}
36+
} catch {}
3237

33-
try {
34-
hdiff = require('node-hdiffpatch').diff;
35-
} catch (e) {}
38+
return undefined;
39+
};
40+
41+
let bsdiff: Diff | undefined;
42+
let hdiff: Diff | undefined;
43+
let diff: Diff;
44+
bsdiff = loadDiffModule('node-bsdiff');
45+
hdiff = loadDiffModule('node-hdiffpatch');
3646

3747
async function runReactNativeBundleCommand({
3848
bundleName,

0 commit comments

Comments
 (0)