Skip to content

Commit b355daf

Browse files
committed
feat: support lerna hoisting
When resolving from dumber failed, try app's local folder again. closes #4
1 parent b0ab98b commit b355daf

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
"mkdirp": "^0.5.1",
5353
"node-fetch": "^2.3.0",
5454
"node-libs-browser": "^2.1.0",
55-
"readable-stream": "^2.3.6"
55+
"readable-stream": "^2.3.6",
56+
"resolve": "^1.9.0"
5657
},
5758
"devDependencies": {
5859
"@babel/cli": "^7.2.3",

src/shared.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import fs from 'fs';
2+
import resolve from 'resolve';
23
import fetch from 'node-fetch';
34
import crypto from 'crypto';
45
import {ensureParsed} from 'ast-matcher';
@@ -16,12 +17,24 @@ export function isPackageName(path) {
1617
}
1718

1819
export function resolvePackagePath(packageName) {
20+
let metaPath;
21+
// we resolve package.json instead of package's main file,
22+
// as some npm package (like font-awesome v4) has no main file.
23+
const packageJson = packageName + '/package.json';
24+
1925
try {
20-
let metaPath = require.resolve(packageName + '/package.json');
21-
return metaPath.slice(0, -13);
26+
try {
27+
// try from dumber first
28+
metaPath = require.resolve(packageJson);
29+
} catch (e) {
30+
// try from app's local folder, this is necessary to support lerna
31+
// hoisting where dumber is out of app's local node_modules folder.
32+
metaPath = resolve(packageJson, {basedir: process.cwd()});
33+
}
2234
} catch (e) {
2335
throw new Error('cannot find npm package: ' + packageName);
2436
}
37+
return metaPath.slice(0, -13);
2538
}
2639

2740
export function fsReadFile(filePath) {

0 commit comments

Comments
 (0)