UNPKG

3.39 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.moveNpmPackages = void 0;
4const schematics_1 = require("@angular-devkit/schematics");
5const ast_utils_1 = require("../ast-utils");
6const format_files_1 = require("./format-files");
7const packageToMoveDescriptor = (packageJson, packageName, goesToDevDep) => {
8 const isDevDep = !!packageJson.devDependencies && packageName in packageJson.devDependencies;
9 const inPackageJson = (packageJson.dependencies && packageName in packageJson.dependencies) ||
10 isDevDep;
11 const version = isDevDep
12 ? packageJson.devDependencies[packageName]
13 : packageJson.dependencies[packageName];
14 return {
15 packageName,
16 version,
17 isDevDep,
18 inPackageJson,
19 goesToDevDep,
20 };
21};
22const normalizeToMoveDescriptors = (packageJson, toDeps, toDevDeps) => {
23 const normalizedMoveDescriptors = [
24 ...toDeps.map((packageName) => packageToMoveDescriptor(packageJson, packageName, false)),
25 ...toDevDeps.map((packageName) => packageToMoveDescriptor(packageJson, packageName, true)),
26 ];
27 return normalizedMoveDescriptors;
28};
29/**
30 * Move packages to deps or devDeps adjusting the package.json appropriately.
31 *
32 * @param packageMoveOptions The PackageMoveOptions provided to the schematic
33 */
34function moveNpmPackages(packageMoveOptions) {
35 return (tree, context) => {
36 const pkg = (0, ast_utils_1.readJsonInTree)(tree, 'package.json');
37 const { toDeps = [], toDevDeps = [] } = packageMoveOptions;
38 const moveDescriptors = normalizeToMoveDescriptors(pkg, Array.isArray(toDeps) ? toDeps : [toDeps], Array.isArray(toDevDeps) ? toDevDeps : [toDevDeps]).filter(({ inPackageJson, isDevDep, goesToDevDep }) => inPackageJson &&
39 ((isDevDep && !goesToDevDep) || (!isDevDep && goesToDevDep)));
40 // if no packages are being moved to its oposite group, abort
41 if (moveDescriptors.length === 0) {
42 return (0, schematics_1.noop)();
43 }
44 const depAdditions = moveDescriptors.reduce((mapping, { packageName, version, goesToDevDep }) => {
45 if (!goesToDevDep) {
46 mapping[packageName] = version;
47 }
48 return mapping;
49 }, {});
50 const devDepAdditions = moveDescriptors.reduce((mapping, { packageName, version, goesToDevDep }) => {
51 if (goesToDevDep) {
52 mapping[packageName] = version;
53 }
54 return mapping;
55 }, {});
56 return (0, schematics_1.chain)([
57 // add the packages to new destination in package.json
58 (0, ast_utils_1.addDepsToPackageJson)(depAdditions, devDepAdditions),
59 // delete the old entry from the package.json
60 (0, ast_utils_1.updateJsonInTree)('package.json', (json) => {
61 moveDescriptors.forEach(({ packageName, goesToDevDep }) => {
62 if (goesToDevDep) {
63 delete json.dependencies[packageName];
64 }
65 else {
66 delete json.devDependencies[packageName];
67 }
68 });
69 return json;
70 }),
71 (0, format_files_1.formatFiles)(),
72 ]);
73 };
74}
75exports.moveNpmPackages = moveNpmPackages;
76//# sourceMappingURL=move-npm-packages.js.map
\No newline at end of file