From 5d7b229963b6949f592d4c3ffbefbcb09919485c Mon Sep 17 00:00:00 2001 From: Nico Jansen Date: Tue, 22 Nov 2022 21:48:53 +0100 Subject: [PATCH] feat(@angular-devkit/build-angular): expose built-in karma config Expose build in karma config to anyone that wants to use it. For example: ```js // karma.conf.js const setDefaultConfig = require('@angular-devkit/build-angular/src/builders/karma/karma.conf.js'); module.exports = function(config) { setDefaultConfig(config); config.set({ // my own custom overrides }); } ``` --- .../build_angular/src/builders/karma/index.ts | 16 ++++++++++------ .../src/builders/karma/karma.conf.ts | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 packages/angular_devkit/build_angular/src/builders/karma/karma.conf.ts diff --git a/packages/angular_devkit/build_angular/src/builders/karma/index.ts b/packages/angular_devkit/build_angular/src/builders/karma/index.ts index 50da6fe0f24c..57bce6498fcf 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/index.ts @@ -96,7 +96,7 @@ export function execute( const karmaOptions: KarmaConfigOptions = options.karmaConfig ? {} - : getBuiltInKarmaConfig(karma, context.workspaceRoot, projectName); + : getBuiltInKarmaConfig(karma, context.workspaceRoot, getCoverageFolderName(projectName)); karmaOptions.singleRun = singleRun; @@ -183,16 +183,20 @@ export function execute( ); } -function getBuiltInKarmaConfig( - karma: typeof import('karma'), - workspaceRoot: string, - projectName: string, -): ConfigOptions & Record { +function getCoverageFolderName(projectName: string) { let coverageFolderName = projectName.charAt(0) === '@' ? projectName.slice(1) : projectName; if (/[A-Z]/.test(coverageFolderName)) { coverageFolderName = strings.dasherize(coverageFolderName); } + return coverageFolderName; +} + +export function getBuiltInKarmaConfig( + karma: typeof import('karma'), + workspaceRoot: string, + coverageFolderName: string, +): ConfigOptions & Record { const workspaceRootRequire = createRequire(workspaceRoot + '/'); return { diff --git a/packages/angular_devkit/build_angular/src/builders/karma/karma.conf.ts b/packages/angular_devkit/build_angular/src/builders/karma/karma.conf.ts new file mode 100644 index 000000000000..5a07811fc3cf --- /dev/null +++ b/packages/angular_devkit/build_angular/src/builders/karma/karma.conf.ts @@ -0,0 +1,14 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import karma from 'karma'; +import { getBuiltInKarmaConfig } from '.'; + +module.exports = function (config: karma.Config) { + config.set(getBuiltInKarmaConfig(karma, process.cwd(), '')); +};