Skip to content

Commit aae1c98

Browse files
Fatme HavaluovaFatme Havaluova
Fatme Havaluova
authored and
Fatme Havaluova
committed
Cherrypick the fix that allows $npm to be used with different configurations
1 parent e010223 commit aae1c98

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

lib/definitions/npm.d.ts

+6
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,10 @@ declare module "npm" {
33
var commands: { [index: string]: any };
44
var prefix: string;
55
function load(config: Object, callback: (err: any, data: any) => void): void;
6+
module config {
7+
var loaded: boolean;
8+
module sources {
9+
var cli: { data: Object };
10+
}
11+
}
612
}

lib/node-package-manager.ts

+17-8
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,24 @@ export class NodePackageManager implements INodePackageManager {
1919
}
2020

2121
public load(config?: any): IFuture<void> {
22-
let future = new Future<void>();
23-
npm.load(config, (err: Error) => {
24-
if(err) {
25-
future.throw(err);
26-
} else {
27-
future.return();
22+
if (npm.config.loaded) {
23+
let data = npm.config.sources.cli.data;
24+
Object.keys(data).forEach(k => delete data[k]);
25+
if (config) {
26+
_.assign(data, config);
2827
}
29-
});
30-
return future;
28+
return Future.fromResult();
29+
} else {
30+
let future = new Future<void>();
31+
npm.load(config, (err: Error) => {
32+
if(err) {
33+
future.throw(err);
34+
} else {
35+
future.return();
36+
}
37+
});
38+
return future;
39+
}
3140
}
3241

3342
public install(packageName: string, pathToSave: string, config?: any): IFuture<any> {

0 commit comments

Comments
 (0)