const loaderUtils = require('loader-utils')
|
|
function parseFilterModules (filterModules) {
|
if (filterModules) {
|
return JSON.parse(Buffer.from(filterModules, 'base64').toString('utf8'))
|
}
|
return {}
|
}
|
|
module.exports = function (content, map) {
|
this.cacheable && this.cacheable()
|
|
const vueLoaderOptions = this.loaders.find(loader => loader.ident === 'vue-loader-options')
|
if (vueLoaderOptions) {
|
const params = loaderUtils.parseQuery(this.resourceQuery)
|
/* eslint-disable no-mixed-operators */
|
const filterModules = parseFilterModules(params && params['filter-modules'])
|
Object.assign(vueLoaderOptions.options.compilerOptions, {
|
filterModules: Object.keys(filterModules)
|
})
|
} else {
|
throw new Error('vue-loader-options parse error')
|
}
|
this.callback(null, content, map)
|
}
|