@skyux/packages
Version:
Handles the `ng update` command for SKY UX component libraries.
60 lines • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = ngAdd;
const schematics_1 = require("@angular-devkit/schematics");
const tasks_1 = require("@angular-devkit/schematics/tasks");
const dependencies_1 = require("@schematics/angular/utility/dependencies");
const workspace_1 = require("@schematics/angular/utility/workspace");
const version_1 = require("../../version");
const workspace_check_1 = require("../rules/workspace-check/workspace-check");
const get_angular_major_version_1 = require("../utility/get-angular-major-version");
function ngAdd() {
return (_, context) => {
context.addTask(new tasks_1.NodePackageInstallTask());
const rules = [
(0, workspace_check_1.workspaceCheck)(),
addDependencies(),
configureWorkspaceIfSingleProject(),
];
return (0, schematics_1.chain)(rules);
};
}
function configureWorkspaceIfSingleProject() {
return async (tree, context) => {
const workspace = await (0, workspace_1.getWorkspace)(tree);
if (workspace.projects.size === 1) {
const project = workspace.projects.keys().next().value;
return (0, schematics_1.schematic)('add-skyux-to-project', { project });
}
else {
context.logger.info('Multiple projects detected in workspace. To configure SKY UX for a specific project, run: ng generate @skyux/packages:add-skyux-to-project --project <project-name>');
}
return tree;
};
}
function addDependencies() {
return (tree) => {
const packageNames = [
'@skyux/assets',
'@skyux/core',
'@skyux/i18n',
'@skyux/theme',
];
for (const packageName of packageNames) {
(0, dependencies_1.addPackageJsonDependency)(tree, {
type: dependencies_1.NodeDependencyType.Default,
name: packageName,
version: `^${version_1.VERSION.full}`,
overwrite: true,
});
}
const angularVersion = (0, get_angular_major_version_1.getAngularMajorVersion)();
(0, dependencies_1.addPackageJsonDependency)(tree, {
type: dependencies_1.NodeDependencyType.Default,
name: '@angular/cdk',
version: `^${angularVersion}.0.0`,
overwrite: true,
});
};
}
//# sourceMappingURL=ng-add.schematic.js.map