forked from NativeScript/nativescript-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnode-modules-builder.ts
55 lines (49 loc) · 1.5 KB
/
node-modules-builder.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import {
INodeModulesBuilder,
INodeModulesDependenciesBuilder,
IPrepareNodeModulesData,
} from "../../definitions/platform";
import { IPluginsService } from "../../definitions/plugins";
import * as _ from "lodash";
import { injector } from "../../common/yok";
export class NodeModulesBuilder implements INodeModulesBuilder {
constructor(
private $logger: ILogger,
private $nodeModulesDependenciesBuilder: INodeModulesDependenciesBuilder,
private $pluginsService: IPluginsService
) {}
public async prepareNodeModules({
platformData,
projectData,
}: IPrepareNodeModulesData): Promise<void> {
const dependencies = this.$nodeModulesDependenciesBuilder.getProductionDependencies(
projectData.projectDir, projectData.dependenciesToIgnore
);
await platformData.platformProjectService.beforePrepareAllPlugins(
projectData,
dependencies
);
const pluginsData = this.$pluginsService.getAllProductionPlugins(
projectData,
platformData.platformNameLowerCase,
dependencies
);
if (_.isEmpty(pluginsData)) {
return;
}
for (let i = 0; i < pluginsData.length; i++) {
const pluginData = pluginsData[i];
await this.$pluginsService.preparePluginNativeCode({
pluginData,
platform: platformData.normalizedPlatformName.toLowerCase(),
projectData,
});
this.$logger.debug(
`Successfully prepared plugin ${
pluginData.name
} for ${platformData.normalizedPlatformName.toLowerCase()}.`
);
}
}
}
injector.register("nodeModulesBuilder", NodeModulesBuilder);