project.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. "use strict";
  2. /**
  3. * @license
  4. * Copyright Google Inc. 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.io/license
  8. */
  9. Object.defineProperty(exports, "__esModule", { value: true });
  10. // tslint:disable:no-global-tslint-disable no-any
  11. const core_1 = require("@angular-devkit/core");
  12. const fs = require("fs");
  13. const os = require("os");
  14. const path = require("path");
  15. const find_up_1 = require("./find-up");
  16. function insideWorkspace() {
  17. return getWorkspaceDetails() !== null;
  18. }
  19. exports.insideWorkspace = insideWorkspace;
  20. function getWorkspaceDetails() {
  21. const currentDir = process.cwd();
  22. const possibleConfigFiles = [
  23. 'angular.json',
  24. '.angular.json',
  25. 'angular-cli.json',
  26. '.angular-cli.json',
  27. ];
  28. const configFilePath = find_up_1.findUp(possibleConfigFiles, currentDir);
  29. if (configFilePath === null) {
  30. return null;
  31. }
  32. const configFileName = path.basename(configFilePath);
  33. const possibleDir = path.dirname(configFilePath);
  34. const homedir = os.homedir();
  35. if (core_1.normalize(possibleDir) === core_1.normalize(homedir)) {
  36. const packageJsonPath = path.join(possibleDir, 'package.json');
  37. if (!fs.existsSync(packageJsonPath)) {
  38. // No package.json
  39. return null;
  40. }
  41. const packageJsonBuffer = fs.readFileSync(packageJsonPath);
  42. const packageJsonText = packageJsonBuffer === null ? '{}' : packageJsonBuffer.toString();
  43. const packageJson = JSON.parse(packageJsonText);
  44. if (!containsCliDep(packageJson)) {
  45. // No CLI dependency
  46. return null;
  47. }
  48. }
  49. return {
  50. root: possibleDir,
  51. configFile: configFileName,
  52. };
  53. }
  54. exports.getWorkspaceDetails = getWorkspaceDetails;
  55. function containsCliDep(obj) {
  56. const pkgName = '@angular/cli';
  57. if (obj) {
  58. if (obj.dependencies && obj.dependencies[pkgName]) {
  59. return true;
  60. }
  61. if (obj.devDependencies && obj.devDependencies[pkgName]) {
  62. return true;
  63. }
  64. }
  65. return false;
  66. }