From 59a3520312f199d1eb326f47d6b8ea3ef97cae0d Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 26 Feb 2019 14:58:04 -0800 Subject: [PATCH 1/2] build(bazel): allow a user to control a subset of angularCompilerOption in their tsconfig file when using ng_module --- packages/bazel/src/ngc-wrapped/index.ts | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/packages/bazel/src/ngc-wrapped/index.ts b/packages/bazel/src/ngc-wrapped/index.ts index 636d8db08e926..7cbad87250176 100644 --- a/packages/bazel/src/ngc-wrapped/index.ts +++ b/packages/bazel/src/ngc-wrapped/index.ts @@ -49,6 +49,64 @@ export function runOneBuild(args: string[], inputs?: {[path: string]: string}): return false; } const {options: tsOptions, bazelOpts, files, config} = parsedOptions; + const angularCompilerOptions: {[k: string]: unknown} = config['angularCompilerOptions'] || {}; + + // Allow Bazel users to control some of the bazel options. + // Since TypeScript's "extends" mechanism applies only to "compilerOptions" + // we have to repeat some of their logic to get the user's "angularCompilerOptions". + if (config['extends']) { + // Load the user's config file + // Note: this doesn't handle recursive extends so only a user's top level + // `angularCompilerOptions` will be considered. As this code is going to be + // removed with Ivy, the added complication of handling recursive extends + // is likely not needed. + let userConfigFile = + resolveNormalizedPath(path.dirname(project), config['extends']); + if (!userConfigFile.endsWith('.json')) userConfigFile += '.json'; + const {config: userConfig, error} = + ts.readConfigFile(userConfigFile, ts.sys.readFile); + if (error) { + console.error(ng.formatDiagnostics([error])); + return false; + } + + // All user angularCompilerOptions values that a user has control + // over should be collected here + if (userConfig.angularCompilerOptions) { + angularCompilerOptions.diagnostics = angularCompilerOptions.diagnostics || + userConfig.angularCompilerOptions.diagnostics; + angularCompilerOptions.trace = angularCompilerOptions.trace || + userConfig.angularCompilerOptions.trace; + + angularCompilerOptions.disableExpressionLowering = angularCompilerOptions.disableExpressionLowering || + userConfig.angularCompilerOptions.disableExpressionLowering; + angularCompilerOptions.disableTypeScriptVersionCheck = angularCompilerOptions.disableTypeScriptVersionCheck || + userConfig.angularCompilerOptions.disableTypeScriptVersionCheck; + + angularCompilerOptions.i18nOutLocale = angularCompilerOptions.i18nOutLocale || + userConfig.angularCompilerOptions.i18nOutLocale; + angularCompilerOptions.i18nOutFormat = angularCompilerOptions.i18nOutFormat || + userConfig.angularCompilerOptions.i18nOutFormat; + angularCompilerOptions.i18nOutFile = angularCompilerOptions.i18nOutFile || + userConfig.angularCompilerOptions.i18nOutFile; + + angularCompilerOptions.i18nInFormat = angularCompilerOptions.i18nInFormat || + userConfig.angularCompilerOptions.i18nInFormat; + angularCompilerOptions.i18nInLocale = angularCompilerOptions.i18nInLocale || + userConfig.angularCompilerOptions.i18nInLocale; + angularCompilerOptions.i18nInFile = angularCompilerOptions.i18nInFile || + userConfig.angularCompilerOptions.i18nInFile; + + angularCompilerOptions.i18nInMissingTranslations = angularCompilerOptions.i18nInMissingTranslations || + userConfig.angularCompilerOptions.i18nInMissingTranslations; + angularCompilerOptions.i18nUseExternalIds = angularCompilerOptions.i18nUseExternalIds || + userConfig.angularCompilerOptions.i18nUseExternalIds; + + angularCompilerOptions.preserveWhitespaces = angularCompilerOptions.preserveWhitespaces || + userConfig.angularCompilerOptions.preserveWhitespaces; + } + } + const expectedOuts = config['angularCompilerOptions']['expectedOut']; const {basePath} = ng.calcProjectFileAndBasePath(project); From c1b56492694d2634b17685bad7f5cc88483162d1 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 26 Feb 2019 15:38:40 -0800 Subject: [PATCH 2/2] style: format --- packages/bazel/src/ngc-wrapped/index.ts | 71 +++++++++++++------------ 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/packages/bazel/src/ngc-wrapped/index.ts b/packages/bazel/src/ngc-wrapped/index.ts index 7cbad87250176..62c9993283456 100644 --- a/packages/bazel/src/ngc-wrapped/index.ts +++ b/packages/bazel/src/ngc-wrapped/index.ts @@ -60,11 +60,9 @@ export function runOneBuild(args: string[], inputs?: {[path: string]: string}): // `angularCompilerOptions` will be considered. As this code is going to be // removed with Ivy, the added complication of handling recursive extends // is likely not needed. - let userConfigFile = - resolveNormalizedPath(path.dirname(project), config['extends']); + let userConfigFile = resolveNormalizedPath(path.dirname(project), config['extends']); if (!userConfigFile.endsWith('.json')) userConfigFile += '.json'; - const {config: userConfig, error} = - ts.readConfigFile(userConfigFile, ts.sys.readFile); + const {config: userConfig, error} = ts.readConfigFile(userConfigFile, ts.sys.readFile); if (error) { console.error(ng.formatDiagnostics([error])); return false; @@ -73,37 +71,40 @@ export function runOneBuild(args: string[], inputs?: {[path: string]: string}): // All user angularCompilerOptions values that a user has control // over should be collected here if (userConfig.angularCompilerOptions) { - angularCompilerOptions.diagnostics = angularCompilerOptions.diagnostics || - userConfig.angularCompilerOptions.diagnostics; - angularCompilerOptions.trace = angularCompilerOptions.trace || - userConfig.angularCompilerOptions.trace; - - angularCompilerOptions.disableExpressionLowering = angularCompilerOptions.disableExpressionLowering || - userConfig.angularCompilerOptions.disableExpressionLowering; - angularCompilerOptions.disableTypeScriptVersionCheck = angularCompilerOptions.disableTypeScriptVersionCheck || - userConfig.angularCompilerOptions.disableTypeScriptVersionCheck; - - angularCompilerOptions.i18nOutLocale = angularCompilerOptions.i18nOutLocale || - userConfig.angularCompilerOptions.i18nOutLocale; - angularCompilerOptions.i18nOutFormat = angularCompilerOptions.i18nOutFormat || - userConfig.angularCompilerOptions.i18nOutFormat; - angularCompilerOptions.i18nOutFile = angularCompilerOptions.i18nOutFile || - userConfig.angularCompilerOptions.i18nOutFile; - - angularCompilerOptions.i18nInFormat = angularCompilerOptions.i18nInFormat || - userConfig.angularCompilerOptions.i18nInFormat; - angularCompilerOptions.i18nInLocale = angularCompilerOptions.i18nInLocale || - userConfig.angularCompilerOptions.i18nInLocale; - angularCompilerOptions.i18nInFile = angularCompilerOptions.i18nInFile || - userConfig.angularCompilerOptions.i18nInFile; - - angularCompilerOptions.i18nInMissingTranslations = angularCompilerOptions.i18nInMissingTranslations || - userConfig.angularCompilerOptions.i18nInMissingTranslations; - angularCompilerOptions.i18nUseExternalIds = angularCompilerOptions.i18nUseExternalIds || - userConfig.angularCompilerOptions.i18nUseExternalIds; - - angularCompilerOptions.preserveWhitespaces = angularCompilerOptions.preserveWhitespaces || - userConfig.angularCompilerOptions.preserveWhitespaces; + angularCompilerOptions.diagnostics = + angularCompilerOptions.diagnostics || userConfig.angularCompilerOptions.diagnostics; + angularCompilerOptions.trace = + angularCompilerOptions.trace || userConfig.angularCompilerOptions.trace; + + angularCompilerOptions.disableExpressionLowering = + angularCompilerOptions.disableExpressionLowering || + userConfig.angularCompilerOptions.disableExpressionLowering; + angularCompilerOptions.disableTypeScriptVersionCheck = + angularCompilerOptions.disableTypeScriptVersionCheck || + userConfig.angularCompilerOptions.disableTypeScriptVersionCheck; + + angularCompilerOptions.i18nOutLocale = + angularCompilerOptions.i18nOutLocale || userConfig.angularCompilerOptions.i18nOutLocale; + angularCompilerOptions.i18nOutFormat = + angularCompilerOptions.i18nOutFormat || userConfig.angularCompilerOptions.i18nOutFormat; + angularCompilerOptions.i18nOutFile = + angularCompilerOptions.i18nOutFile || userConfig.angularCompilerOptions.i18nOutFile; + + angularCompilerOptions.i18nInFormat = + angularCompilerOptions.i18nInFormat || userConfig.angularCompilerOptions.i18nInFormat; + angularCompilerOptions.i18nInLocale = + angularCompilerOptions.i18nInLocale || userConfig.angularCompilerOptions.i18nInLocale; + angularCompilerOptions.i18nInFile = + angularCompilerOptions.i18nInFile || userConfig.angularCompilerOptions.i18nInFile; + + angularCompilerOptions.i18nInMissingTranslations = + angularCompilerOptions.i18nInMissingTranslations || + userConfig.angularCompilerOptions.i18nInMissingTranslations; + angularCompilerOptions.i18nUseExternalIds = angularCompilerOptions.i18nUseExternalIds || + userConfig.angularCompilerOptions.i18nUseExternalIds; + + angularCompilerOptions.preserveWhitespaces = angularCompilerOptions.preserveWhitespaces || + userConfig.angularCompilerOptions.preserveWhitespaces; } }