@wjunt/webpack-config
Version:
Presets of webpack config
61 lines (60 loc) • 1.9 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const vue_loader_1 = require("vue-loader");
const utils_1 = require("../common/utils");
const common_1 = require("./common");
const VueFdPointPlugin = require("@wjunt/vue-fdpoint-plugin");
/**
* Support compiling Vue SFC.
*/
function vue(_a = {}) {
var { fdPointOptions } = _a, rule = __rest(_a, ["fdPointOptions"]);
const loaders = [
{
loader: 'vue-loader',
options: lodash_1.defaultsDeep(rule.options, {
extractCSS: !utils_1.isDevelopment(),
}),
},
];
const plugins = [
new vue_loader_1.VueLoaderPlugin(),
];
if (fdPointOptions !== false) {
loaders.push({
loader: '@wjunt/vue-fdpoint-loader',
options: typeof fdPointOptions === 'boolean' ? {} : fdPointOptions,
});
plugins.push(new VueFdPointPlugin());
}
if (rule.cacheable !== false) {
loaders.unshift(common_1.getCacheLoader(rule.cacheable));
}
return {
module: {
rules: [
common_1.combineRule(rule, {
test: /\.vue$/,
use: loaders,
}),
],
},
resolve: {
extensions: ['.vue'],
},
plugins,
};
}
exports.vue = vue;