nezha-cli
Version:
cli tool for front end project
81 lines (65 loc) • 2.03 kB
JavaScript
"use strict";
const inquirer = require('inquirer');
const connect = require('connect');
const webpack = require('webpack');
var _static = require('serve-static');
var webpackDevMiddleware = require("webpack-dev-middleware");
var webpackHotMiddleware = require("webpack-hot-middleware");
var path = require('path');
var ejsmodWebpackConfigFile = require('./configs/webpack.ejsmod.conf.js')
var ejspageWebpackConfigFile = require('./configs/webpack.ejspage.conf.js')
var antddvaWebpackConfigFile = require('./configs/webpack.antd-dva.conf.js')
var webpackConfigFile = {
ejsmod: ejsmodWebpackConfigFile,
ejspage: ejspageWebpackConfigFile,
"antd-dva": antddvaWebpackConfigFile
}
const exec = function* (nezha) {
const {logger} = nezha
var resolve = path.resolve;
var server_path = resolve(nezha.env.cwd + '/__build');
let answers = yield inquirer.prompt([{
type: 'list',
name: 'devType',
message: '请选择调试模式',
choices: [
'ejsmod',
'ejspage',
'antd-dva',
'tauri-admin',
]
}])
var webpackConfigs = webpackConfigFile[answers.devType]({
assets_path: __dirname + '/assets/',
cwd: nezha.env.cwd,
nezha_path: nezha.env.home
});
var publicPath = 'http://localhost:' + 8081;
var hotMiddlewareScript = 'webpack-hot-middleware/client?reload=true';
var server = connect();
// server.use('/favicon.ico', function (req, res) {
// res.end('');
// });
var compiler = webpack(webpackConfigs);
server.use(webpackDevMiddleware(compiler, {
contentBase: webpackConfigs.output.path,
publicPath: webpackConfigs.output.publicPath,
hot: true,
stats: {
cached: true,
colors: true
},
historyApiFallback: true
}));
server.use(_static(server_path, {
maxage: 0
}));
server.listen(8081, function () {
logger.success("调试模式已启动 请访问 http://127.0.0.1:8081 查看预览效果")
});
}
module.exports = {
name: 'dev',
description: '开发调试工具',
exec: exec
}