cooking-vue2
Version:
A cooking plugin to extend vue 2 config.
41 lines (33 loc) • 1.08 kB
JavaScript
var cssLoader = require('./css-loader')
var toString = Object.prototype.toString
var isFunction = function (val) {
return toString.call(val) === '[object Function]'
}
/**
* @param {object} cooking - provide add, remove, config, _userConfig method
* @param {object} [options]
*/
module.exports = function (cooking) {
var SOURCE_MAP = cooking.config.devtool
cooking.config.vue = cooking.config.vue || {}
// add loader
cooking.add('loader.vue', {
test: /\.vue$/,
loaders: ['vue-loader']
})
// add extension
cooking.config.resolve.extensions.push('.vue')
var plugins = cooking.config.postcss
if (Array.isArray(plugins)) {
cooking.config.vue.postcss = function (webpack) {
return plugins.map(plugin => isFunction(plugin) ? plugin(webpack) : plugin)
}
} else if (plugins) {
cooking.config.vue.postcss = plugins
}
// add vue config
cooking.config.vue.loaders = Object.assign({}, cooking.config.vue.loaders, cssLoader({
sourceMap: SOURCE_MAP ? '#source-map' : false,
extract: !!cooking.config.extractCSS
}))
}