Skip to content

Commit 317e180

Browse files
Fix add android platform dependencies
When checking if platform dependency is installed in the current project before adding the platform need to check if the current version is valid or check in the node_modules directory for the installed plugin version.
1 parent 8e59db0 commit 317e180

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

lib/common

lib/services/android-project-service.ts

+14-3
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,23 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
149149
let projectPackageJson: any = this.$fs.readJson(this.$projectData.projectFilePath).wait();
150150

151151
_.each(AndroidProjectService.REQUIRED_DEV_DEPENDENCIES, (dependency: any) => {
152-
let dependencyVersionInProject = projectPackageJson.dependencies[dependency.name] || projectPackageJson.devDependencies[dependency.name];
152+
let dependencyVersionInProject = (projectPackageJson.dependencies && projectPackageJson.dependencies[dependency.name]) ||
153+
(projectPackageJson.devDependencies && projectPackageJson.devDependencies[dependency.name]);
153154

154155
if (!dependencyVersionInProject) {
155156
this.$npm.install(`${dependency.name}@${dependency.version}`, this.$projectData.projectDir, npmConfig).wait();
156-
} else if (!semver.satisfies(dependencyVersionInProject, dependency.version)) {
157-
this.$errors.failWithoutHelp(`Your project have installed ${dependency.name} version ${dependencyVersionInProject} but Android platform requires version ${dependency.version}.`);
157+
} else {
158+
let cleanedVerson = semver.clean(dependencyVersionInProject);
159+
160+
// The plugin version is not valid. Check node_modules for the valid version.
161+
if (!cleanedVerson) {
162+
let pathToPluginPackageJson = path.join(this.$projectData.projectDir, constants.NODE_MODULES_FOLDER_NAME, dependency.name, constants.PACKAGE_JSON_FILE_NAME);
163+
dependencyVersionInProject = this.$fs.exists(pathToPluginPackageJson).wait() && this.$fs.readJson(pathToPluginPackageJson).wait().version;
164+
}
165+
166+
if (!semver.satisfies(dependencyVersionInProject || cleanedVerson, dependency.version)) {
167+
this.$errors.failWithoutHelp(`Your project have installed ${dependency.name} version ${cleanedVerson} but Android platform requires version ${dependency.version}.`);
168+
}
158169
}
159170
});
160171
} else {

0 commit comments

Comments
 (0)