UNPKG

6.01 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const config_1 = require("./config/config");
4const common_tags_1 = require("common-tags");
5const chalk = require("chalk");
6const fs = require("fs");
7const path = require("path");
8const find_up_1 = require("../utilities/find-up");
9exports.CLI_CONFIG_FILE_NAME = '.angular-cli.json';
10const CLI_CONFIG_FILE_NAME_ALT = 'angular-cli.json';
11function getUserHome() {
12 return process.env[(process.platform.startsWith('win')) ? 'USERPROFILE' : 'HOME'];
13}
14const configCacheMap = new Map();
15class CliConfig extends config_1.CliConfig {
16 static configFilePath(projectPath) {
17 const configNames = [exports.CLI_CONFIG_FILE_NAME, CLI_CONFIG_FILE_NAME_ALT];
18 // Find the configuration, either where specified, in the Angular CLI project
19 // (if it's in node_modules) or from the current process.
20 return (projectPath && find_up_1.findUp(configNames, projectPath))
21 || find_up_1.findUp(configNames, process.cwd())
22 || find_up_1.findUp(configNames, __dirname);
23 }
24 static getValue(jsonPath) {
25 let value;
26 const projectConfig = CliConfig.fromProject();
27 if (projectConfig) {
28 value = projectConfig.get(jsonPath);
29 }
30 else {
31 const globalConfig = CliConfig.fromGlobal();
32 if (globalConfig) {
33 value = globalConfig.get(jsonPath);
34 }
35 }
36 return value;
37 }
38 static globalConfigFilePath() {
39 let globalConfigPath = path.join(getUserHome(), exports.CLI_CONFIG_FILE_NAME);
40 const altGlobalConfigPath = path.join(getUserHome(), CLI_CONFIG_FILE_NAME_ALT);
41 if (!fs.existsSync(globalConfigPath) && fs.existsSync(altGlobalConfigPath)) {
42 return altGlobalConfigPath;
43 }
44 return globalConfigPath;
45 }
46 static fromGlobal() {
47 const globalConfigPath = this.globalConfigFilePath();
48 if (configCacheMap.has(globalConfigPath)) {
49 return configCacheMap.get(globalConfigPath);
50 }
51 const cliConfig = config_1.CliConfig.fromConfigPath(globalConfigPath);
52 const aliases = [
53 cliConfig.alias('apps.0.root', 'defaults.sourceDir'),
54 cliConfig.alias('apps.0.prefix', 'defaults.prefix')
55 ];
56 // Additional aliases which do not emit any messages.
57 cliConfig.alias('defaults.interface.prefix', 'defaults.inline.prefixInterfaces');
58 cliConfig.alias('defaults.component.inlineStyle', 'defaults.inline.style');
59 cliConfig.alias('defaults.component.inlineTemplate', 'defaults.inline.template');
60 cliConfig.alias('defaults.component.spec', 'defaults.spec.component');
61 cliConfig.alias('defaults.class.spec', 'defaults.spec.class');
62 cliConfig.alias('defaults.component.directive', 'defaults.spec.directive');
63 cliConfig.alias('defaults.component.module', 'defaults.spec.module');
64 cliConfig.alias('defaults.component.pipe', 'defaults.spec.pipe');
65 cliConfig.alias('defaults.component.service', 'defaults.spec.service');
66 // If any of them returned true, output a deprecation warning.
67 if (aliases.some(x => x)) {
68 console.error(chalk.yellow(common_tags_1.oneLine `
69 The "defaults.prefix" and "defaults.sourceDir" properties of .angular-cli.json
70 are deprecated in favor of "apps[0].root" and "apps[0].prefix".\n
71 Please update in order to avoid errors in future versions of Angular CLI.
72 `));
73 }
74 configCacheMap.set(globalConfigPath, cliConfig);
75 return cliConfig;
76 }
77 static fromProject(projectPath) {
78 const configPath = this.configFilePath(projectPath);
79 if (!configPath ||
80 (configPath === this.globalConfigFilePath() && process.cwd() !== path.dirname(configPath))) {
81 return null;
82 }
83 if (configCacheMap.has(configPath)) {
84 return configCacheMap.get(configPath);
85 }
86 let globalConfigPath = path.join(getUserHome(), exports.CLI_CONFIG_FILE_NAME);
87 const altGlobalConfigPath = path.join(getUserHome(), CLI_CONFIG_FILE_NAME_ALT);
88 if (!fs.existsSync(globalConfigPath) && fs.existsSync(altGlobalConfigPath)) {
89 globalConfigPath = altGlobalConfigPath;
90 }
91 const cliConfig = config_1.CliConfig.fromConfigPath(configPath, [globalConfigPath]);
92 const aliases = [
93 cliConfig.alias('apps.0.root', 'defaults.sourceDir'),
94 cliConfig.alias('apps.0.prefix', 'defaults.prefix')
95 ];
96 // Additional aliases which do not emit any messages.
97 cliConfig.alias('defaults.interface.prefix', 'defaults.inline.prefixInterfaces');
98 cliConfig.alias('defaults.component.inlineStyle', 'defaults.inline.style');
99 cliConfig.alias('defaults.component.inlineTemplate', 'defaults.inline.template');
100 cliConfig.alias('defaults.component.spec', 'defaults.spec.component');
101 cliConfig.alias('defaults.class.spec', 'defaults.spec.class');
102 cliConfig.alias('defaults.component.directive', 'defaults.spec.directive');
103 cliConfig.alias('defaults.component.module', 'defaults.spec.module');
104 cliConfig.alias('defaults.component.pipe', 'defaults.spec.pipe');
105 cliConfig.alias('defaults.component.service', 'defaults.spec.service');
106 // If any of them returned true, output a deprecation warning.
107 if (aliases.some(x => x)) {
108 console.error(chalk.yellow(common_tags_1.oneLine `
109 The "defaults.prefix" and "defaults.sourceDir" properties of .angular-cli.json
110 are deprecated in favor of "apps[0].root" and "apps[0].prefix".\n
111 Please update in order to avoid errors in future versions of Angular CLI.
112 `));
113 }
114 configCacheMap.set(configPath, cliConfig);
115 return cliConfig;
116 }
117}
118exports.CliConfig = CliConfig;
119//# sourceMappingURL=/users/hansl/sources/angular-cli/models/config.js.map
\No newline at end of file