Skip to content

Commit fefe1aa

Browse files
Dimitar TachevDimitar Tachev
Dimitar Tachev
authored and
Dimitar Tachev
committed
fix: install the Android project dependencies only when needed
1 parent dbe20cd commit fefe1aa

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

lib/services/android-project-service.ts

+19-13
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
1313
private static VALUES_VERSION_DIRNAME_PREFIX = AndroidProjectService.VALUES_DIRNAME + "-v";
1414
private static ANDROID_PLATFORM_NAME = "android";
1515
private static MIN_RUNTIME_VERSION_WITH_GRADLE = "1.5.0";
16-
private static REQUIRED_DEV_DEPENDENCIES = [
17-
{ name: "babel-traverse", version: "^6.4.5" },
18-
{ name: "babel-types", version: "^6.4.5" },
19-
{ name: "babylon", version: "^6.4.5" },
20-
{ name: "lazy", version: "^1.0.11" }
21-
];
16+
private static MIN_RUNTIME_VERSION_WITHOUT_DEPS = "4.2.0-2018-06-29-02";
2217

2318
private isAndroidStudioTemplate: boolean;
2419

@@ -41,7 +36,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
4136
this.isAndroidStudioTemplate = false;
4237
}
4338

44-
private _platformsDirCache: string = null;
4539
private _platformData: IPlatformData = null;
4640
public getPlatformData(projectData: IProjectData): IPlatformData {
4741
if (!projectData && !this._platformData) {
@@ -71,7 +65,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
7165
}
7266
deviceBuildOutputArr.push(constants.BUILD_DIR, constants.OUTPUTS_DIR, constants.APK_DIR);
7367

74-
this._platformsDirCache = projectData.platformsDir;
7568
const packageName = this.getProjectNameFromId(projectData);
7669

7770
this._platformData = {
@@ -178,6 +171,19 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
178171

179172
this.cleanResValues(targetSdkVersion, projectData);
180173

174+
if (semver.lt(frameworkVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITHOUT_DEPS)) {
175+
await this.installRuntimeDeps(projectData, config);
176+
}
177+
}
178+
179+
private async installRuntimeDeps(projectData: IProjectData, config: ICreateProjectOptions) {
180+
const requiredDevDependencies = [
181+
{ name: "babel-traverse", version: "^6.4.5" },
182+
{ name: "babel-types", version: "^6.4.5" },
183+
{ name: "babylon", version: "^6.4.5" },
184+
{ name: "lazy", version: "^1.0.11" }
185+
];
186+
181187
const npmConfig: INodePackageManagerInstallOptions = {
182188
save: true,
183189
"save-dev": true,
@@ -190,23 +196,23 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
190196

191197
const projectPackageJson: any = this.$fs.readJson(projectData.projectFilePath);
192198

193-
for (const dependency of AndroidProjectService.REQUIRED_DEV_DEPENDENCIES) {
199+
for (const dependency of requiredDevDependencies) {
194200
let dependencyVersionInProject = (projectPackageJson.dependencies && projectPackageJson.dependencies[dependency.name]) ||
195201
(projectPackageJson.devDependencies && projectPackageJson.devDependencies[dependency.name]);
196202

197203
if (!dependencyVersionInProject) {
198204
await this.$npm.install(`${dependency.name}@${dependency.version}`, projectData.projectDir, npmConfig);
199205
} else {
200-
const cleanedVerson = semver.clean(dependencyVersionInProject);
206+
const cleanedVersion = semver.clean(dependencyVersionInProject);
201207

202208
// The plugin version is not valid. Check node_modules for the valid version.
203-
if (!cleanedVerson) {
209+
if (!cleanedVersion) {
204210
const pathToPluginPackageJson = path.join(projectData.projectDir, constants.NODE_MODULES_FOLDER_NAME, dependency.name, constants.PACKAGE_JSON_FILE_NAME);
205211
dependencyVersionInProject = this.$fs.exists(pathToPluginPackageJson) && this.$fs.readJson(pathToPluginPackageJson).version;
206212
}
207213

208-
if (!semver.satisfies(dependencyVersionInProject || cleanedVerson, dependency.version)) {
209-
this.$errors.failWithoutHelp(`Your project have installed ${dependency.name} version ${cleanedVerson} but Android platform requires version ${dependency.version}.`);
214+
if (!semver.satisfies(dependencyVersionInProject || cleanedVersion, dependency.version)) {
215+
this.$errors.failWithoutHelp(`Your project have installed ${dependency.name} version ${cleanedVersion} but Android platform requires version ${dependency.version}.`);
210216
}
211217
}
212218
}

0 commit comments

Comments
 (0)