UNPKG

3.56 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.renameNpmPackages = void 0;
4const schematics_1 = require("@angular-devkit/schematics");
5const ast_utils_1 = require("../ast-utils");
6const rename_package_imports_1 = require("./rename-package-imports");
7const format_files_1 = require("./format-files");
8const normalizeToDescriptors = (packageJson) => ([packageName, newPackageNameConfig]) => {
9 const isDevDep = !!packageJson.devDependencies &&
10 packageName in packageJson.devDependencies;
11 const inPackageJson = (packageJson.dependencies && packageName in packageJson.dependencies) ||
12 isDevDep;
13 const newPackageName = Array.isArray(newPackageNameConfig)
14 ? newPackageNameConfig[0]
15 : newPackageNameConfig;
16 const version = Array.isArray(newPackageNameConfig) && newPackageNameConfig[1]
17 ? newPackageNameConfig[1]
18 : isDevDep
19 ? packageJson.devDependencies[packageName]
20 : packageJson.dependencies[packageName];
21 return {
22 packageName,
23 newPackageName,
24 version,
25 isDevDep,
26 inPackageJson,
27 };
28};
29/**
30 * Updates all the imports in the workspace, and adjust the package.json appropriately.
31 *
32 * @param packageNameMapping The packageNameMapping provided to the schematic
33 */
34function renameNpmPackages(packageRenameMapping) {
35 return (tree, context) => {
36 const pkg = (0, ast_utils_1.readJsonInTree)(tree, 'package.json');
37 const renameDescriptors = Object.entries(packageRenameMapping).map(normalizeToDescriptors(pkg));
38 // if you don't find the packageName in package.json abort
39 if (renameDescriptors.filter(({ inPackageJson }) => inPackageJson).length ===
40 0) {
41 return (0, schematics_1.noop)();
42 }
43 const packageNameMapping = renameDescriptors.reduce((mapping, { packageName, newPackageName }) => {
44 mapping[packageName] = newPackageName;
45 return mapping;
46 }, {});
47 const depAdditions = renameDescriptors.reduce((mapping, { newPackageName, version, isDevDep }) => {
48 if (!isDevDep) {
49 mapping[newPackageName] = version;
50 }
51 return mapping;
52 }, {});
53 const devDepAdditions = renameDescriptors.reduce((mapping, { newPackageName, version, isDevDep }) => {
54 if (isDevDep) {
55 mapping[newPackageName] = version;
56 }
57 return mapping;
58 }, {});
59 return (0, schematics_1.chain)([
60 // rename all the imports before the package.json changes and we can't find the imports
61 (0, rename_package_imports_1.renamePackageImports)(packageNameMapping),
62 // add the new name at either the old version or a new version
63 (0, ast_utils_1.addDepsToPackageJson)(depAdditions, devDepAdditions),
64 // delete the old entry from the package.json
65 (0, ast_utils_1.updateJsonInTree)('package.json', (json) => {
66 renameDescriptors.forEach(({ packageName, isDevDep }) => {
67 if (isDevDep) {
68 delete json.devDependencies[packageName];
69 }
70 else {
71 delete json.dependencies[packageName];
72 }
73 });
74 return json;
75 }),
76 (0, format_files_1.formatFiles)(),
77 ]);
78 };
79}
80exports.renameNpmPackages = renameNpmPackages;
81//# sourceMappingURL=rename-npm-packages.js.map
\No newline at end of file