2020-03-29 01:43:59 +01:00
|
|
|
import curry from 'next/dist/compiled/lodash.curry'
|
2020-01-13 13:48:24 +01:00
|
|
|
import { Configuration, Plugin, RuleSetRule } from 'webpack'
|
2019-12-09 21:08:15 +01:00
|
|
|
|
|
|
|
export const loader = curry(function loader(
|
|
|
|
rule: RuleSetRule,
|
|
|
|
config: Configuration
|
|
|
|
) {
|
|
|
|
if (!config.module) {
|
|
|
|
config.module = { rules: [] }
|
|
|
|
}
|
|
|
|
|
|
|
|
if (rule.oneOf) {
|
2020-05-18 21:24:37 +02:00
|
|
|
const existing = config.module.rules.find((rule) => rule.oneOf)
|
2019-12-09 21:08:15 +01:00
|
|
|
if (existing) {
|
|
|
|
existing.oneOf!.push(...rule.oneOf)
|
|
|
|
return config
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
config.module.rules.push(rule)
|
|
|
|
return config
|
|
|
|
})
|
|
|
|
|
|
|
|
export const unshiftLoader = curry(function loader(
|
|
|
|
rule: RuleSetRule,
|
|
|
|
config: Configuration
|
|
|
|
) {
|
|
|
|
if (!config.module) {
|
|
|
|
config.module = { rules: [] }
|
|
|
|
}
|
|
|
|
|
|
|
|
if (rule.oneOf) {
|
2020-05-18 21:24:37 +02:00
|
|
|
const existing = config.module.rules.find((rule) => rule.oneOf)
|
2019-12-09 21:08:15 +01:00
|
|
|
if (existing) {
|
|
|
|
existing.oneOf!.unshift(...rule.oneOf)
|
|
|
|
return config
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
config.module.rules.unshift(rule)
|
|
|
|
return config
|
|
|
|
})
|
2020-01-13 13:48:24 +01:00
|
|
|
|
|
|
|
export const plugin = curry(function plugin(p: Plugin, config: Configuration) {
|
|
|
|
if (!config.plugins) {
|
|
|
|
config.plugins = []
|
|
|
|
}
|
|
|
|
config.plugins.push(p)
|
|
|
|
return config
|
|
|
|
})
|