8000 Merge pull request #4011 from NativeScript/vladimirov/improve-prepare · NativeScript/nativescript-cli@0b5d097 · GitHub
[go: up one dir, main page]

Skip to content

Commit 0b5d097

Browse files
author
Dimitar Tachev
authored
Merge pull request #4011 from NativeScript/vladimirov/improve-prepare
fix: prepare node_modules only once
2 parents 2b5416c + 27b61e8 commit 0b5d097

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

lib/definitions/platform.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@ interface INodeModulesData extends IPlatform, IProjectDataComposition, IAppFiles
309309
interface INodeModulesBuilderData {
310310
nodeModulesData: INodeModulesData;
311311
release: boolean;
312+
copyNodeModules?: boolean;
312313
}
313314

314315
interface INodeModulesBuilder {

lib/services/prepare-platform-js-service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ export class PreparePlatformJSService extends PreparePlatformService implements
109109
appFilesUpdaterOptions,
110110
projectFilesConfig
111111
},
112-
release: appFilesUpdaterOptions.release
112+
release: appFilesUpdaterOptions.release,
113+
copyNodeModules: true
113114
});
114115
} catch (error) {
115116
this.$logger.debug(error);

lib/tools/node-modules/node-modules-builder.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,33 @@ export class NodeModulesBuilder implements INodeModulesBuilder {
88
) { }
99

1010
public async prepareNodeModules(opts: INodeModulesBuilderData): Promise<void> {
11-
const productionDependencies = this.initialPrepareNodeModules(opts);
11+
const productionDependencies = this.intialPrepareNodeModulesIfRequired(opts);
1212
const npmPluginPrepare: NpmPluginPrepare = this.$injector.resolve(NpmPluginPrepare);
1313
await npmPluginPrepare.preparePlugins(productionDependencies, opts.nodeModulesData.platform, opts.nodeModulesData.projectData, opts.nodeModulesData.projectFilesConfig);
1414
}
1515

1616
public async prepareJSNodeModules(opts: INodeModulesBuilderData): Promise<void> {
17-
const productionDependencies = this.initialPrepareNodeModules(opts);
17+
const productionDependencies = this.intialPrepareNodeModulesIfRequired(opts);
1818
const npmPluginPrepare: NpmPluginPrepare = this.$injector.resolve(NpmPluginPrepare);
1919
await npmPluginPrepare.prepareJSPlugins(productionDependencies, opts.nodeModulesData.platform, opts.nodeModulesData.projectData, opts.nodeModulesData.projectFilesConfig);
2020
}
2121

22+
private intialPrepareNodeModulesIfRequired(opts: INodeModulesBuilderData): IDependencyData[] {
23+
const productionDependencies = this.$nodeModulesDependenciesBuilder.getProductionDependencies(opts.nodeModulesData.projectData.projectDir);
24+
25+
if (opts.copyNodeModules) {
26+
this.initialPrepareNodeModules(opts, productionDependencies);
27+
}
28+
29+
return productionDependencies;
30+
}
31+
2232
public cleanNodeModules(absoluteOutputPath: string): void {
2333
shelljs.rm("-rf", absoluteOutputPath);
2434
}
2535

26-
private initialPrepareNodeModules(opts: INodeModulesBuilderData): IDependencyData[] {
36+
private initialPrepareNodeModules(opts: INodeModulesBuilderData, productionDependencies: IDependencyData[]): IDependencyData[] {
2737
const { nodeModulesData, release } = opts;
28-
const productionDependencies = this.$nodeModulesDependenciesBuilder.getProductionDependencies(nodeModulesData.projectData.projectDir);
2938

3039
if (!this.$fs.exists(nodeModulesData.absoluteOutputPath)) {
3140
// Force copying if the destination doesn't exist.
@@ -36,7 +45,7 @@ export class NodeModulesBuilder implements INodeModulesBuilder {
3645
const tnsModulesCopy: TnsModulesCopy = this.$injector.resolve(TnsModulesCopy, {
3746
outputRoot: nodeModulesData.absoluteOutputPath
3847
});
39-
tnsModulesCopy.copyModules({ dependencies: productionDependencies, release});
48+
tnsModulesCopy.copyModules({ dependencies: productionDependencies, release });
4049
} else {
4150
this.cleanNodeModules(nodeModulesData.absoluteOutputPath);
4251
}

0 commit comments

Comments
 (0)
0