UNPKG

3.84 kBJavaScriptView Raw
1"use strict";
2var __assign = (this && this.__assign) || function () {
3 __assign = Object.assign || function(t) {
4 for (var s, i = 1, n = arguments.length; i < n; i++) {
5 s = arguments[i];
6 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7 t[p] = s[p];
8 }
9 return t;
10 };
11 return __assign.apply(this, arguments);
12};
13var __spreadArrays = (this && this.__spreadArrays) || function () {
14 for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
15 for (var r = Array(s), k = 0, i = 0; i < il; i++)
16 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
17 r[k] = a[j];
18 return r;
19};
20exports.__esModule = true;
21var lodash_1 = require("lodash");
22var MemoryFS = require("memory-fs");
23var path = require("path");
24var webpack = require("webpack");
25var webpackDevMiddleware = require("webpack-dev-middleware");
26var webpackHotMiddleware = require("webpack-hot-middleware");
27exports.HMR_ENTRY = "webpack-hot-middleware/client";
28exports.getHmrPluginsByVersion = function () {
29 var version = require("webpack/package.json").version;
30 var majarVersion = String(version).split(".")[0];
31 switch (majarVersion) {
32 case "1":
33 throw new Error("not support webpack@1");
34 case "2":
35 default:
36 return [
37 webpack.HotModuleReplacementPlugin
38 ];
39 }
40};
41var concatHMREntry = function (entry) { return [exports.HMR_ENTRY].concat(entry); };
42var isOneOfPlugins = function (PluginList, plugin) {
43 return lodash_1.reduce(PluginList, function (result, Plugin) { return (result || (plugin instanceof Plugin)); }, false);
44};
45exports.patchEntryWithHMR = function (entry) {
46 if (lodash_1.isObject(entry)) {
47 return lodash_1.mapValues(entry, concatHMREntry);
48 }
49 return concatHMREntry(entry);
50};
51exports.patchPlugins = function (plugins) {
52 var hmrPlugins = exports.getHmrPluginsByVersion();
53 var cleanedPlugins = lodash_1.dropWhile(plugins, function (plugin) { return isOneOfPlugins(hmrPlugins, plugin); });
54 return lodash_1.concat(cleanedPlugins, lodash_1.map(hmrPlugins, function (Plugin) { return new Plugin(); }));
55};
56exports.patchWebConfigWithHMR = function (webpackConfig) { return (__assign(__assign({}, webpackConfig), { entry: exports.patchEntryWithHMR(webpackConfig.entry), plugins: exports.patchPlugins(webpackConfig.plugins) })); };
57exports.createMiddlewaresForWebpack = function (webpackConfig, index, hot) {
58 if (hot === void 0) { hot = false; }
59 var patchedWebpackConfig = hot
60 ? exports.patchWebConfigWithHMR(webpackConfig)
61 : webpackConfig;
62 var bundler = webpack(patchedWebpackConfig);
63 var fs = new MemoryFS();
64 bundler.outputFileSystem = fs;
65 var devMiddleware = webpackDevMiddleware(bundler, {
66 publicPath: (patchedWebpackConfig.output || {}).publicPath,
67 stats: patchedWebpackConfig.stats || {
68 colors: true,
69 reasons: false,
70 hash: false,
71 version: false,
72 timings: true,
73 chunks: false,
74 chunkModules: false,
75 cached: false
76 }
77 });
78 var devServerMiddlewares = [
79 devMiddleware,
80 (function (req, res, next) {
81 if (req.method === "GET" && req.url === "/") {
82 devMiddleware.waitUntilValid(function () {
83 var indexFile = path.join(webpackConfig.output.path, index);
84 res.end(fs.readFileSync(indexFile));
85 });
86 }
87 else {
88 next();
89 }
90 })
91 ];
92 if (hot) {
93 return __spreadArrays(devServerMiddlewares, [
94 webpackHotMiddleware(bundler)
95 ]);
96 }
97 return devServerMiddlewares;
98};