50 lines
1.3 KiB
TypeScript

/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { join, normalize } from '@angular-devkit/core';
import { Rule } from '@angular-devkit/schematics';
import {
NodeDependencyType,
addPackageJsonDependency,
removePackageJsonDependency,
} from '../../utility/dependencies';
import { getWorkspace } from '../../utility/workspace';
import { ProjectType } from '../../utility/workspace-models';
export default function (): Rule {
return async (host) => {
const workspace = await getWorkspace(host);
for (const [, project] of workspace.projects) {
if (project.extensions.projectType !== ProjectType.Library) {
// Only interested in library projects
continue;
}
const packageJsonPath = join(normalize(project.root), 'package.json');
if (!host.exists(packageJsonPath)) {
continue;
}
// Remove tslib from any type of dependency
removePackageJsonDependency(host, 'tslib', packageJsonPath);
// Add tslib as a direct dependency
addPackageJsonDependency(
host,
{
name: 'tslib',
version: '^2.0.0',
type: NodeDependencyType.Default,
},
packageJsonPath,
);
}
};
}