Skip to content

Commit

Permalink
fix(schematics): use cli version for schematics/angular package (#1937)
Browse files Browse the repository at this point in the history
  • Loading branch information
djhojd authored and yggg committed Aug 29, 2019
1 parent 26ad5d2 commit 4589726
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/framework/theme/schematics/ng-add/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
addDependencyToPackageJson,
addDevDependencyToPackageJson,
getDependencyVersionFromPackageJson,
getDevDependencyVersionFromPackageJson,
getNebularPeerDependencyVersionFromPackageJson,
getNebularVersion,
} from '../util/package';
Expand All @@ -31,8 +32,9 @@ export default function (options: Schema): Rule {
/**
* Add required peer dependencies in package.json
* */
function installMainPeerDependencies(tree) {
function installMainPeerDependencies(tree: Tree) {
const angularCoreVersion = getDependencyVersionFromPackageJson(tree, '@angular/core');
const angularCliVersion = getDevDependencyVersionFromPackageJson(tree, '@angular/cli');
const nebularThemeVersion = getNebularVersion();
const angularCdkVersion = getNebularPeerDependencyVersionFromPackageJson('@angular/cdk');

Expand All @@ -41,7 +43,7 @@ function installMainPeerDependencies(tree) {
addDependencyToPackageJson(tree, '@nebular/theme', nebularThemeVersion);
addDependencyToPackageJson(tree, '@nebular/eva-icons', nebularThemeVersion);

addDevDependencyToPackageJson(tree, '@schematics/angular', angularCoreVersion);
addDevDependencyToPackageJson(tree, '@schematics/angular', angularCliVersion);
}

/**
Expand Down
31 changes: 31 additions & 0 deletions src/framework/theme/schematics/util/package.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,23 @@ export function addDependencyToPackageJson(tree: Tree, packageName: string, pack
writeJSON(tree, packageJsonName, packageJson);
}

/**
* Gets the version of the specified dev dependency by looking at the package.json in the specified tree
* */
export function getDevDependencyVersionFromPackageJson(tree: Tree, packageName: string): string {
if (!tree.exists(packageJsonName)) {
throwNoPackageJsonError();
}

const packageJson: PackageJson = readJSON(tree, packageJsonName);

if (noInfoAboutDevDependency(packageJson, packageName)) {
throwNoPackageInfoInPackageJson(packageName);
}

return packageJson.devDependencies[packageName];
}

export function addDevDependencyToPackageJson(tree: Tree, packageName: string, packageVersion: string) {
if (!tree.exists(packageJsonName)) {
throwNoPackageJsonError();
Expand Down Expand Up @@ -117,6 +134,13 @@ function noInfoAboutDependency(packageJson: PackageJson, packageName: string): b
return !dependencyAlreadyExists(packageJson, packageName);
}

/**
* Validates packageJson has devDependencies, also as specified devDependency not exists.
* */
function noInfoAboutDevDependency(packageJson: PackageJson, packageName: string): boolean {
return !devDependencyAlreadyExists(packageJson, packageName);
}

/**
* Validates packageJson has peerDependencies, also as specified peerDependency not exists.
* */
Expand All @@ -131,6 +155,13 @@ function dependencyAlreadyExists(packageJson: PackageJson, packageName: string):
return !!(packageJson.dependencies && packageJson.dependencies[packageName]);
}

/**
* Validates packageJson has devDependencies, also as specified devDependency exists.
* */
function devDependencyAlreadyExists(packageJson: PackageJson, packageName: string): boolean {
return !!(packageJson.devDependencies && packageJson.devDependencies[packageName]);
}

/**
* Validates packageJson has peerDependencies, also as specified peerDependency exists.
* */
Expand Down

0 comments on commit 4589726

Please sign in to comment.