UNPKG

@srejs/vue-webpack

Version:

srejs vue技术栈webpack配置工具包

75 lines (74 loc) 4.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Hotwebpack = exports.DevMiddlewareFileSystem = void 0; var _webpack = require("webpack"); var fs = _interopRequireWildcard(require("fs"), true); var _koaWebpackMiddleware = require("koa-webpack-middleware"); var _dev = require("./dev"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var DevMiddlewareFileSystem = exports.DevMiddlewareFileSystem = fs; var Hotwebpack = exports.Hotwebpack = /*#__PURE__*/function () { function Hotwebpack(app) { var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; _classCallCheck(this, Hotwebpack); this.app = app; this.webpackConfig = (0, _dev.getDevConfig)(page, false, true); this.complier = _webpack(this.webpackConfig); this.webpackDevMiddleware(); this.webpackHotMiddleware(); } return _createClass(Hotwebpack, [{ key: "webpackHotMiddleware", value: function webpackHotMiddleware() { var hotPath = '/__webpack_hmr'; var _hotMiddleware = (0, _koaWebpackMiddleware.hotMiddleware)(this.complier, { path: hotPath, log: console.warn, heartbeat: 2000 }); // 中间件过滤非 /__webpack_hmr路由 this.app.use(function (ctx, next) { if (ctx.url !== hotPath) { return next(); } else { _hotMiddleware(ctx, next); } }); } }, { key: "webpackDevMiddleware", value: function webpackDevMiddleware() { var _devMiddleware = (0, _koaWebpackMiddleware.devMiddleware)(this.complier, { serverSideRender: false, publicPath: '/', noInfo: true, quiet: true, index: false //不响应根路径请求 避免和页面组件路由冲突 }); exports.DevMiddlewareFileSystem = DevMiddlewareFileSystem = _devMiddleware.fileSystem; // 中间件过滤 非静态资源目录访问 .html,.js,.css,.png,jpeg,.svg,.jpg,.ttf this.app.use(function (ctx, next) { var filename = _devMiddleware.getFilenameFromUrl(ctx.url); if (filename === false) return next(); try { var stat = DevMiddlewareFileSystem.statSync(filename); if (!stat.isFile()) { return next(); } _devMiddleware(ctx, next); } catch (_e) { return next(); } }); } }]); }();