mirror of https://github.com/curbengh/hexo-yam
fix: Terser should throw error if there is invalid option
- Other functions also throw error to abort
This commit is contained in:
parent
b046d2a09e
commit
631503aa1a
|
@ -34,11 +34,6 @@ function verbose (original, minified, path, ext) {
|
|||
log.log(`${ext}: ${path} [${saved}% saved]`)
|
||||
}
|
||||
|
||||
function error (msg) {
|
||||
const log = this.log || console
|
||||
log.error(msg)
|
||||
}
|
||||
|
||||
function minifyHtml (str, data) {
|
||||
const hexo = this
|
||||
const options = hexo.config.minify.html
|
||||
|
@ -71,7 +66,7 @@ async function minifyCss (str, data) {
|
|||
if (options.logger) verbose.call(this, str, styles, path, 'css')
|
||||
return styles
|
||||
} catch (err) {
|
||||
error.call(this, err)
|
||||
throw new Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -93,7 +88,8 @@ function minifyJs (str, data) {
|
|||
delete jsOptions.exclude
|
||||
delete jsOptions.globOptions
|
||||
|
||||
const { code } = Terser.minify(str, jsOptions)
|
||||
const { code, error } = Terser.minify(str, jsOptions)
|
||||
if (error) throw new Error(error)
|
||||
if (options.logger) verbose.call(this, str, code, path, 'js')
|
||||
|
||||
return code
|
||||
|
@ -124,8 +120,8 @@ function minifySvg () {
|
|||
if (options.logger) verbose.call(this, assetTxt.join().toString(), result.data, path, 'svg')
|
||||
resolve(route.set(path, result.data))
|
||||
} catch (err) {
|
||||
error.call(this, err)
|
||||
reject(err)
|
||||
throw new Error(err)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -160,8 +156,8 @@ function gzipFn () {
|
|||
if (options.logger) verbose.call(this, input, result.toString(), path, 'gzip')
|
||||
resolve(route.set(path + '.gz', result))
|
||||
} catch (err) {
|
||||
error.call(this, err)
|
||||
reject(err)
|
||||
throw new Error(err)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -195,8 +191,8 @@ function brotliFn () {
|
|||
if (options.logger) verbose.call(this, input, result.toString(), path, 'brotli')
|
||||
resolve(route.set(path + '.br', result))
|
||||
} catch (err) {
|
||||
error.call(this, err)
|
||||
reject(err)
|
||||
throw new Error(err)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -176,6 +176,23 @@ describe('js', () => {
|
|||
expect(result).toBe(code)
|
||||
})
|
||||
|
||||
test('option - invalid', () => {
|
||||
const customOpt = {
|
||||
mangle: {
|
||||
foo: 'bar'
|
||||
}
|
||||
}
|
||||
hexo.config.minify.js = customOpt
|
||||
|
||||
const input = 'var o = { "foo": 1, bar: 3 };'
|
||||
const { error } = Terser.minify(input, customOpt)
|
||||
try {
|
||||
j(input, { path: '' })
|
||||
} catch (err) {
|
||||
expect(err.message).toContain(error.message)
|
||||
}
|
||||
})
|
||||
|
||||
test('exclude - *.min.js', () => {
|
||||
const input = 'var o = { "foo": 1, bar: 3 };'
|
||||
const result = j(input, { path: 'foo/bar.min.js' })
|
||||
|
|
Loading…
Reference in New Issue