dependencies.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. "use strict";
  2. /**
  3. * @license
  4. * Copyright Google LLC All Rights Reserved.
  5. *
  6. * Use of this source code is governed by an MIT-style license that can be
  7. * found in the LICENSE file at https://angular.dev/license
  8. */
  9. Object.defineProperty(exports, "__esModule", { value: true });
  10. exports.NodeDependencyType = void 0;
  11. exports.addPackageJsonDependency = addPackageJsonDependency;
  12. exports.removePackageJsonDependency = removePackageJsonDependency;
  13. exports.getPackageJsonDependency = getPackageJsonDependency;
  14. const json_file_1 = require("./json-file");
  15. const PKG_JSON_PATH = '/package.json';
  16. var NodeDependencyType;
  17. (function (NodeDependencyType) {
  18. NodeDependencyType["Default"] = "dependencies";
  19. NodeDependencyType["Dev"] = "devDependencies";
  20. NodeDependencyType["Peer"] = "peerDependencies";
  21. NodeDependencyType["Optional"] = "optionalDependencies";
  22. })(NodeDependencyType || (exports.NodeDependencyType = NodeDependencyType = {}));
  23. const ALL_DEPENDENCY_TYPE = [
  24. NodeDependencyType.Default,
  25. NodeDependencyType.Dev,
  26. NodeDependencyType.Optional,
  27. NodeDependencyType.Peer,
  28. ];
  29. function addPackageJsonDependency(tree, dependency, pkgJsonPath = PKG_JSON_PATH) {
  30. const json = new json_file_1.JSONFile(tree, pkgJsonPath);
  31. const { overwrite, type, name, version } = dependency;
  32. const path = [type, name];
  33. if (overwrite || !json.get(path)) {
  34. json.modify(path, version);
  35. }
  36. }
  37. function removePackageJsonDependency(tree, name, pkgJsonPath = PKG_JSON_PATH) {
  38. const json = new json_file_1.JSONFile(tree, pkgJsonPath);
  39. for (const depType of ALL_DEPENDENCY_TYPE) {
  40. json.remove([depType, name]);
  41. }
  42. }
  43. function getPackageJsonDependency(tree, name, pkgJsonPath = PKG_JSON_PATH) {
  44. const json = new json_file_1.JSONFile(tree, pkgJsonPath);
  45. for (const depType of ALL_DEPENDENCY_TYPE) {
  46. const version = json.get([depType, name]);
  47. if (typeof version === 'string') {
  48. return {
  49. type: depType,
  50. name: name,
  51. version,
  52. };
  53. }
  54. }
  55. return null;
  56. }