Skip to content

Commit d7d4999

Browse files
authored
feat: add failOnWarn option (#411)
1 parent f5949f9 commit d7d4999

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

src/cli.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ cli
2727
.option('--debug [feat]', 'Show debug logs')
2828
.option('--target <target>', 'Bundle target, e.g "es2015", "esnext"')
2929
.option('-l, --logLevel <level>', 'Set log level: info, warn, error, silent')
30+
.option('--fail-on-warn', 'Fail on warnings', { default: true })
3031
.option('-d, --out-dir <dir>', 'Output directory', { default: 'dist' })
3132
.option('--treeshake', 'Tree-shake bundle', { default: true })
3233
.option('--sourcemap', 'Generate source map', { default: false })

src/options/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ async function resolveConfig(
173173
clean = true,
174174
silent = false,
175175
logLevel = silent ? 'silent' : 'info',
176+
failOnWarn = false,
176177
customLogger,
177178
treeshake = true,
178179
platform = 'node',
@@ -207,7 +208,7 @@ async function resolveConfig(
207208
nodeProtocol,
208209
} = userConfig
209210

210-
const logger = createLogger(logLevel, { customLogger })
211+
const logger = createLogger(logLevel, { customLogger, failOnWarn })
211212

212213
if (typeof bundle === 'boolean') {
213214
logger.warn('`bundle` option is deprecated. Use `unbundle` instead.')

src/options/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,11 @@ export interface Options {
247247
* @default 'info'
248248
*/
249249
logLevel?: LogLevel
250+
/**
251+
* If true, fails the build on warnings.
252+
* @default false
253+
*/
254+
failOnWarn?: boolean
250255
/**
251256
* Custom logger.
252257
*/
@@ -432,6 +437,7 @@ export type ResolvedOptions = Omit<
432437
| 'filter'
433438
| 'silent'
434439
| 'logLevel'
440+
| 'failOnWarn'
435441
| 'customLogger'
436442
>,
437443
| 'globalName'

src/utils/logger.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export type LogLevel = LogType | 'silent'
88
export interface LoggerOptions {
99
customLogger?: Logger
1010
console?: Console
11+
failOnWarn?: boolean
1112
}
1213

1314
export const LogLevels: Record<LogLevel, number> = {
@@ -34,7 +35,11 @@ const warnedMessages = new Set<string>()
3435

3536
export function createLogger(
3637
level: LogLevel = 'info',
37-
{ customLogger, console = globalThis.console }: LoggerOptions = {},
38+
{
39+
customLogger,
40+
console = globalThis.console,
41+
failOnWarn = false,
42+
}: LoggerOptions = {},
3843
): Logger {
3944
if (customLogger) {
4045
return customLogger
@@ -57,6 +62,9 @@ export function createLogger(
5762

5863
warn(...msgs: any[]): void {
5964
const message = format(msgs)
65+
if (failOnWarn) {
66+
throw new Error(message)
67+
}
6068
warnedMessages.add(message)
6169
output('warn', `\n${bgYellow` WARN `} ${message}\n`)
6270
},
@@ -66,6 +74,10 @@ export function createLogger(
6674
if (warnedMessages.has(message)) {
6775
return
6876
}
77+
78+
if (failOnWarn) {
79+
throw new Error(message)
80+
}
6981
warnedMessages.add(message)
7082

7183
output('warn', `\n${bgYellow` WARN `} ${message}\n`)

0 commit comments

Comments
 (0)