Skip to content

Commit 4aa4e0b

Browse files
Merge pull request #1760 from NativeScript/milanov/fix-add-android-platform-dependencies
Fix add android platform dependencies
2 parents 8e59db0 + 317e180 commit 4aa4e0b

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)