webpack-genius
Version:
**For chinese developers:** you'd better add taobao mirror before everything start. Or you may fail to install. ```bash yarn config set registry http://registry.npm.taobao.org ```
89 lines (88 loc) • 3.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require("v8-compile-cache");
require("./misc/module");
var WebpackGenius_1 = require("./WebpackGenius");
var output_1 = require("./libraries/output");
var stats_1 = require("./libraries/stats");
var mode_1 = require("./libraries/mode");
var resolve_1 = require("./libraries/resolve");
var devtool_1 = require("./libraries/devtool");
var devserver_1 = require("./libraries/devserver");
var optimization_1 = require("./libraries/optimization");
var entry_1 = require("./libraries/entry");
var template_1 = require("./libraries/template");
var webpackGenius = function (port, fn) {
if (port === void 0) { port = 3000; }
return function (env) {
var genius = new WebpackGenius_1.WebpackGenius(env, port);
genius
.target('web')
.entry(entry_1.getEntry(genius))
.devtool(devtool_1.setDevtool)
.mode(mode_1.setMode)
.output(output_1.setOutput)
.stats(stats_1.setStats)
.optimization(optimization_1.setOptimization)
.resolve(resolve_1.setResolve)
.devServer(devserver_1.setDevServer)
.miniCss(genius.isBuild());
genius
.pluginClean(function (plugin) {
plugin.enable(genius.isBuild());
})
.pluginErrorOverlay(function (plugin) {
plugin.enable(genius.isHot());
})
.pluginHtml(function (plugin) {
var template = template_1.getHtmlTemplate();
if (template) {
plugin.setTemplate(template);
}
})
.pluginHotModuleReplace(function (plugin) {
plugin.enable(genius.isHot());
})
.pluginHashedModule(function (plugin) {
plugin.enable(genius.isBuild());
})
.pluginReactRefresh(function (plugin) {
plugin.enable(genius.isHot());
})
.pluginProgressBar(function (plugin) {
plugin.enable(genius.isBuild());
})
.pluginPreload(function (plugin) {
plugin
.usePrefetch()
.enable(genius.isBuild());
})
.pluginAntdDayJs(function (plugin) {
plugin.enable(genius.hasPackage('antd') && genius.hasPackage('dayjs'));
})
.pluginGzip(function (plugin) {
// You can reopen it by `plugin.enable(genius.isBuild());`
plugin.enable(false);
});
genius
.ruleTsx(function (rule) {
rule.enable(genius.hasPackage('typescript'));
})
.ruleJsx()
.ruleCss()
.ruleCssNodeModules()
.ruleScss()
.ruleLess()
.ruleAntd(function (rule) {
rule.enable(['antd', 'antd-mobile'].some(function (item) { return genius.hasPackage(item); }));
})
.ruleAsset()
.ruleHtml()
.ruleJson5();
fn === null || fn === void 0 ? void 0 : fn(genius);
genius.optimization(optimization_1.setOptimizationAfter.bind(global, genius.getUglifyConfig()));
genius.devServer(devserver_1.setDevServerAfter);
return genius.collect();
};
};
exports.default = webpackGenius;