From 573d936976bddf6633a46bb126d5e87c20e3844b Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Sun, 22 Nov 2020 13:19:23 +0100 Subject: [PATCH] refactor: clean up logging --- .../webpack5/src/helpers/externalConfigs.ts | 20 +++++---- packages/webpack5/src/helpers/flavor.ts | 3 +- packages/webpack5/src/helpers/log.ts | 43 +++++++++++++------ 3 files changed, 44 insertions(+), 22 deletions(-) diff --git a/packages/webpack5/src/helpers/externalConfigs.ts b/packages/webpack5/src/helpers/externalConfigs.ts index 6ef55de71..2231817a9 100644 --- a/packages/webpack5/src/helpers/externalConfigs.ts +++ b/packages/webpack5/src/helpers/externalConfigs.ts @@ -1,8 +1,7 @@ import path from 'path'; import fs from 'fs'; -import dedent from 'ts-dedent'; import * as lib from '../index'; -import { error, info } from './log'; +import { error, info, warn } from './log'; import { getAllDependencies, getDependencyPath } from './dependencies'; export function applyExternalConfigs() { @@ -17,17 +16,22 @@ export function applyExternalConfigs() { const externalConfig = require(configPath); if (typeof externalConfig === 'function') { + info('Applying external config...'); externalConfig(lib); + } else if (externalConfig) { + info('Merging external config...'); + lib.mergeWebpack(externalConfig); } else { - // todo: warn user - // todo: perhaps support exported objects to merge into config? + warn( + 'Unsupported external config. The config must export a function or an object.' + ); } } catch (err) { error( - dedent` - Unable to apply config: ${configPath}. - Error is: - `, + ` + Unable to apply config: ${configPath}. + Error is: + `, err ); } diff --git a/packages/webpack5/src/helpers/flavor.ts b/packages/webpack5/src/helpers/flavor.ts index 4b9418696..8a879dc2a 100644 --- a/packages/webpack5/src/helpers/flavor.ts +++ b/packages/webpack5/src/helpers/flavor.ts @@ -1,7 +1,6 @@ import { defaultConfigs } from '@nativescript/webpack'; import { getAllDependencies } from './dependencies'; import { error } from './log'; -import dedent from 'ts-dedent'; export function determineProjectFlavor(): keyof typeof defaultConfigs | false { const dependencies = getAllDependencies(); @@ -35,7 +34,7 @@ export function determineProjectFlavor(): keyof typeof defaultConfigs | false { return 'javascript'; } - error(dedent` + error(` Could not determine project flavor. Please use webpack.useConfig('') to explicitly set the base config. `); diff --git a/packages/webpack5/src/helpers/log.ts b/packages/webpack5/src/helpers/log.ts index 7cca6e00c..9554e00a8 100644 --- a/packages/webpack5/src/helpers/log.ts +++ b/packages/webpack5/src/helpers/log.ts @@ -1,3 +1,34 @@ +import dedent from 'ts-dedent'; + +// de-indents strings so multi-line string literals can be used +function cleanup(data: any[]) { + return data.map((d) => { + if (typeof d === 'string') { + return dedent(d); + } + return d; + }); +} + +export function error(...data: any): Error { + console.error(`[@nativescript/webpack]`, ...cleanup(data)); + + // we return the error - the caller can throw or ignore + if (typeof data[0] === 'string') { + return new Error(data[0]); + } + + return new Error('@nativescript/webpack ran into a problem...'); +} + +export function warn(...data: any): void { + console.warn(`[@nativescript/webpack]`, ...cleanup(data)); +} + +export function info(...data: any): void { + console.info(`[@nativescript/webpack]`, ...cleanup(data)); +} + // todo: refine // export function error(message: string, info?: { possibleCauses?: string[] }) { // console.error(` @@ -9,15 +40,3 @@ // ${info?.possibleCauses?.map((cause) => `- ${cause}`).join('\n')} // `); // } - -export function error(...data: any) { - console.error(`[@nativescript/webpack]`, ...data); -} - -export function warn(...data: any) { - console.warn(`[@nativescript/webpack]`, ...data); -} - -export function info(...data: any) { - console.info(`[@nativescript/webpack]`, ...data); -}