@fdt/dev-base
Version:
168 lines (128 loc) • 3.65 kB
JavaScript
"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;