UNPKG

@fdt/dev-base

Version:
168 lines (128 loc) 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; function _react() { const data = _interopRequireDefault(require("react")); _react = function _react() { return data; }; return data; } function _fs() { const data = _interopRequireDefault(require("fs")); _fs = function _fs() { return data; }; return data; } var _webpack = _interopRequireDefault(require("./webpack.dev")); function _webpackDevMiddleware() { const data = _interopRequireDefault(require("webpack-dev-middleware")); _webpackDevMiddleware = function _webpackDevMiddleware() { return data; }; return data; } function _webpackHotMiddleware() { const data = _interopRequireDefault(require("webpack-hot-middleware")); _webpackHotMiddleware = function _webpackHotMiddleware() { return data; }; return data; } function _httpProxyMiddleware() { const data = require("http-proxy-middleware"); _httpProxyMiddleware = function _httpProxyMiddleware() { return data; }; return data; } function _webpack2() { const data = _interopRequireDefault(require("webpack")); _webpack2 = function _webpack2() { return data; }; return data; } function _express() { const data = _interopRequireDefault(require("express")); _express = function _express() { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * * 启动本地开发环境 */ class AppDev { constructor(params) { this.cwd = ''; this.webpackDevConfig = null; this.app = null; this.compiler = null; this.server = null; const cwd = params.cwd; this.cwd = cwd; this.webpackDevConfig = new _webpack.default(params); this.compiler = (0, _webpack2().default)(this.webpackDevConfig); this.app = (0, _express().default)(); } appListen() { const port = 8080; this.server = this.app.listen(port, () => { console.log(`server is running on port=${port}`); }); } // 使用中间件 setMiddlewares() { // dev-middleware const compilerMiddleware = (0, _webpackDevMiddleware().default)(this.compiler, { logLevel: 'warn', stats: { colors: true } }); this.app.use(compilerMiddleware); // hot-middleware this.app.use((0, _webpackHotMiddleware().default)(this.compiler, { path: '/__webpack_hmr' })); // 同时需要在webpack的plugins中添加 webpac.HotModuleReplacementPlugin // proxy-middleware this.app.use('/api', (0, _httpProxyMiddleware().createProxyMiddleware)({ target: 'http://www.junfengshow.com', pathRewrite: { '^/api': '' }, changeOrigin: true })); this.app.use('/wages', (0, _httpProxyMiddleware().createProxyMiddleware)({ target: 'http://www.junfengshow.com', changeOrigin: true })); // static this.app.use(_express().default.static(this.cwd + '/dist')); // browser history this.app.use('*', (req, res, next) => { const filename = this.cwd + '/dist/index.html'; if (!_fs().default.existsSync(filename)) { res.end('no html'); return; } this.compiler.outputFileSystem.readFile(filename, (err, result) => { if (err) { return next(err); } res.set('content-type', 'text/html'); res.send(result); res.end(); }); }); } // 启动服务等 start() { // 配置中间件 this.setMiddlewares(); // 监听服务端口 this.appListen(); } } var _default = AppDev; exports.default = _default;