mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 11:42:04 +08:00
feat: warnOnce & graceful error handling
This commit is contained in:
@ -1,11 +1,15 @@
|
||||
import { env } from '../index';
|
||||
import { error } from './log';
|
||||
import { error, warnOnce } from './log';
|
||||
|
||||
function getCLILib() {
|
||||
if (!env.nativescriptLibPath) {
|
||||
throw error(`
|
||||
warnOnce(
|
||||
'getCLILib',
|
||||
`
|
||||
Cannot find NativeScript CLI path. Make sure --env.nativescriptLibPath is passed
|
||||
`);
|
||||
`
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
return require(env.nativescriptLibPath);
|
||||
@ -15,10 +19,15 @@ function getCLILib() {
|
||||
* Utility to get a value from the nativescript.config.ts file.
|
||||
*
|
||||
* @param {string} key The key to get from the config. Supports dot-notation.
|
||||
* @param defaultValue The fallback value if the key is not set in the config.
|
||||
*/
|
||||
export function getValue<T = any>(key: string, defaultValue?: any): T {
|
||||
const lib = getCLILib();
|
||||
|
||||
if (!lib) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
return (lib.projectConfigService as {
|
||||
getValue(key: string, defaultValue?: any): T;
|
||||
}).getValue(key, defaultValue);
|
||||
|
@ -1,11 +1,15 @@
|
||||
import { merge } from 'webpack-merge';
|
||||
|
||||
import {
|
||||
getPackageJson,
|
||||
getProjectRootPath,
|
||||
getProjectFilePath,
|
||||
} from './project';
|
||||
import { addVirtualEntry, addVirtualModule } from './virtualModules';
|
||||
import { getPackageJson, getProjectRootPath } from './project';
|
||||
import { applyFileReplacements } from './fileReplacements';
|
||||
import { addCopyRule, removeCopyRule } from './copyRules';
|
||||
import { error, info, warn, warnOnce } from './log';
|
||||
import { determineProjectFlavor } from './flavor';
|
||||
import { error, info, warn } from './log';
|
||||
import { getValue } from './config';
|
||||
import { getIPS } from './host';
|
||||
import {
|
||||
@ -51,6 +55,7 @@ export default {
|
||||
error,
|
||||
info,
|
||||
warn,
|
||||
warnOnce,
|
||||
},
|
||||
platform: {
|
||||
addPlatform,
|
||||
@ -62,6 +67,7 @@ export default {
|
||||
getPlatformName,
|
||||
},
|
||||
project: {
|
||||
getProjectFilePath,
|
||||
getProjectRootPath,
|
||||
getPackageJson,
|
||||
},
|
||||
|
@ -28,6 +28,16 @@ export function warn(...data: any): void {
|
||||
console.warn(`[@nativescript/webpack] Warn: \n`, ...cleanup(data));
|
||||
}
|
||||
|
||||
const warnedMap: any = {};
|
||||
export function warnOnce(key: string, ...data: any): void {
|
||||
if (warnedMap[key]) {
|
||||
return;
|
||||
}
|
||||
|
||||
warnedMap[key] = true;
|
||||
warn(...data);
|
||||
}
|
||||
|
||||
export function info(...data: any): void {
|
||||
if (env.verbose) {
|
||||
console.log(`[@nativescript/webpack] Info: \n`, ...cleanup(data));
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { dirname, resolve } from 'path';
|
||||
|
||||
import { getPackageJson, getProjectRootPath } from './project';
|
||||
import { error, info } from './log';
|
||||
import { error, info, warnOnce } from './log';
|
||||
import { env } from '../';
|
||||
|
||||
import AndroidPlatform from '../platforms/android';
|
||||
@ -65,13 +65,20 @@ export function getPlatformName(): Platform {
|
||||
`);
|
||||
}
|
||||
|
||||
throw error(`
|
||||
warnOnce(
|
||||
'getPlatformName',
|
||||
`
|
||||
You need to provide a target platform!
|
||||
|
||||
Available platforms: ${Object.keys(platforms).join(', ')}
|
||||
|
||||
Use --env.platform=<platform> or --env.android, --env.ios to specify the target platform.
|
||||
`);
|
||||
|
||||
Defaulting to "ios".
|
||||
`
|
||||
);
|
||||
|
||||
return 'ios';
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user