Merge remote-tracking branch 'origin/master'

This commit is contained in:
YunaiV 2019-03-10 18:01:42 +08:00
commit 9d29b71a7b
18 changed files with 259 additions and 31 deletions

View File

@ -4,9 +4,13 @@ import pageRoutes from './router.config';
import webpackPlugin from './plugin.config';
import defaultSettings from '../src/defaultSettings';
import slash from 'slash2';
import proxy from './proxy';
const { pwa, primaryColor } = defaultSettings;
const { NODE_ENV, APP_TYPE, TEST } = process.env;
const { NODE_ENV, APP_TYPE, TEST, BASE_PATH } = process.env;
// 用于控制,部署非跟目录下
const basePath = BASE_PATH ? BASE_PATH : '';
const plugins = [
[
@ -60,6 +64,8 @@ if (APP_TYPE === 'site') {
export default {
// add for transfer to umi
base: basePath,
publicPath: basePath,
plugins,
define: {
APP_TYPE: APP_TYPE || '',
@ -79,18 +85,7 @@ export default {
'@antv/data-set': 'DataSet',
bizcharts: 'BizCharts',
},
proxy: {
'/admin-api/': {
target: 'http://180.167.213.26:18083/',
changeOrigin: true,
pathRewrite: {},
},
'/server/api/': {
target: 'https://preview.pro.ant.design/',
changeOrigin: true,
pathRewrite: { '^/server': '' },
},
},
proxy: proxy(NODE_ENV, basePath),
ignoreMomentLocale: true,
lessLoaderOptions: {
javascriptEnabled: true,

View File

@ -0,0 +1,27 @@
// development 和 production
import path from 'path';
import proxyDev from './proxy.dev';
import proxyProd from './proxy.prod';
function basePathBuilder(proxys, basePath) {
for (const key in proxys) {
const proxy = proxys[key];
const pathRewrite = proxy.pathRewrite;
const newPathRewrite = {};
for (const key2 in pathRewrite) {
const item = pathRewrite[key2];
newPathRewrite[key2] = path.join(basePath, item);
}
proxy.pathRewrite = newPathRewrite;
}
return proxys;
}
export default function(NODE_ENV, basePath) {
let proxys = NODE_ENV === 'development' || NODE_ENV === 'undefined' ? proxyDev : proxyProd;
if (basePath) {
proxys = basePathBuilder(proxys, basePath);
}
return proxys;
}

View File

@ -0,0 +1,14 @@
// 开发环境,的代理配置
export default {
'/admin-api/': {
target: 'http://180.167.213.26:18083/',
changeOrigin: true,
pathRewrite: {},
},
'/server/api/': {
target: 'https://preview.pro.ant.design/',
changeOrigin: true,
pathRewrite: { '^/server': '' },
},
};

View File

@ -0,0 +1,16 @@
// production 配置文件
export default {
'/admin-api/': {
target: 'http://180.167.213.26:18083/',
changeOrigin: true,
pathRewrite: {
'^/admin-api': `/admin-web/admin-api`,
},
},
'/server/api/': {
target: 'https://preview.pro.ant.design/',
changeOrigin: true,
pathRewrite: { '^/server': '' },
},
};

View File

@ -0,0 +1,25 @@
# 使用说明
### 第一步
```
npm install
```
### 第二步
复制文件到 server 目录
```
cp -rf dist server
```
### 第三步
```
node server.prod
```

View File

@ -0,0 +1,12 @@
//
// 粉笔:
// 输出不同颜色的提示信息
const chalk = require('chalk');
module.exports = {
chalkError: chalk.red,
chalkSuccess: chalk.green,
chalkWarning: chalk.yellow,
chalkProcessing: chalk.blue,
};

View File

@ -0,0 +1,10 @@
module.exports = {
'/admin-api -> http://180.167.213.26:18083/': {
changeOrigin: true,
pathRewrite: {},
},
'/server/api -> https://preview.pro.ant.design/': {
changeOrigin: true,
pathRewrite: { '^/server': '' },
},
};

View File

@ -0,0 +1,10 @@
{
"name": "browser-work-server",
"description": "node server",
"dependencies": {
"express": "^4.16.3",
"object-assign": "4.1.1",
"chalk": "2.4.1",
"http-proxy-middleware": "^0.18.0"
}
}

View File

@ -0,0 +1,11 @@
{
"name": "admin-web",
"script": "./server.prod.js",
"instances": "2",
"env": {
"NODE_ENV": "development"
},
"env_production": {
"NODE_ENV": "production"
}
}

View File

@ -0,0 +1,35 @@
const path = require('path');
const express = require('express');
const { chalkSuccess } = require('./config/chalk.config');
const proxyConfig = require('./config/proxy.prod.config');
const proxyBuild = require('./utils/proxy.build');
// create app server
const app = express();
const port = 3000;
// host proxy
app.use(proxyBuild(proxyConfig));
// use index.html
app.use(express.static(path.join(__dirname, 'dist/static')));
app.use(express.static(path.join(__dirname, 'dist')));
app.use((req, res) => {
res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});
app.listen(port, error => {
if (error) {
console.error(error);
} else {
console.info(
chalkSuccess(
'==> 🌎 Listening on port %s. ' + 'Open up http://localhost:%s/ in your browser.'
),
port,
port
);
}
});

View File

@ -0,0 +1,24 @@
# 安装依赖包
cd mall
cd admin-web
npm install
# 开始构建
npm run build
# 创建 app 运行目录
mkdir app
# 复制配置文件
cp -rf config/server app/
# 复制文件到 server 努力
cp -rf dist app/

View File

@ -0,0 +1,46 @@
const proxy = require('http-proxy-middleware');
const ObjectAssign = require('object-assign');
const { chalkError, chalkSuccess } = require('../config/chalk.config');
/**
*
* key :
* [0]: /api
* [1]: target url
*
* 预计写法
* 1 /api -> baidu.com : { }
* 2 /user : function() { return {} }
*
* @param config
*/
module.exports = function(config) {
console.info(chalkSuccess('build proxy.%s.config 配置!'), process.env.NODE_ENV);
const proxys = [];
if (!config) {
console.log(chalkError('proxy.%s.config 没有配置!'), process.env.NODE_ENV);
}
for (const key in config) {
if (/->/.test(key)) {
const keys = key.toString().split('->');
const source = keys[0].trim();
const target = keys[1].trim();
if (typeof config !== 'object') {
console.log(
chalkError('%s: proxy.%s.config 初始化失败 config 类型为 object!'),
key,
process.env.NODE_ENV
);
break;
}
proxys.push(proxy(source, ObjectAssign({ target }, config[key])));
}
}
return proxys;
};

View File

@ -44,8 +44,8 @@ function getDictionaryText(req, res) {
}
export default {
'GET /admin-api/admins/resource/admin_menu_tree': getAdminMenuAll,
'GET /admin-api/admins/resource/admin_url_list': getAdminUrls,
'GET /admin-api/admins/admin/menu_resource_tree': getAdminMenuAll,
'GET /admin-api/admins/admin/url_resource_list': getAdminUrls,
'GET /admin-api/admins/resource/tree': getResourceTree,
'GET /admin-api/admins/role/page': getQueryRole,
'GET /admin-api/admins/admin/page': getQueryRole,

View File

@ -74,9 +74,9 @@ export default {
address: 'Sidney No. 1 Lake Park',
},
],
'POST /admin-api/admin/passport/login': (req, res) => {
const { password, username } = req.body;
if (password === 'admin' && username === 'admin') {
'POST /admin-api/admins/passport/login': (req, res) => {
const { username } = req.body;
if (username === 'admin') {
res.send({
code: 0,
data: {
@ -91,7 +91,7 @@ export default {
res.send({
code: 1000,
data: {},
message: '账号或密码错误!',
message: '账号或密码错误-mock!',
});
},
'POST /api/register': (req, res) => {

View File

@ -7,7 +7,10 @@
"presite": "cd functions && npm install",
"start": "cross-env APP_TYPE=site umi dev",
"start:no-mock": "cross-env MOCK=none umi dev",
"start:admin-web": "cross-env BASE_PATH='/admin-web/' NODE_ENV=development APP_TYPE=site umi dev",
"start:admin-web:no-mock": "cross-env BASE_PATH='/admin-web/' NODE_ENV=development MOCK=none APP_TYPE=site umi dev",
"build": "umi build",
"build:admin-web": "cross-env BASE_PATH='/admin-web/' NODE_ENV=production umi build",
"site": "npm run presite && cross-env APP_TYPE=site npm run build && firebase deploy && npm run docker:push",
"analyze": "cross-env ANALYZE=1 umi build",
"lint:style": "stylelint 'src/**/*.less' --syntax less",

View File

@ -36,14 +36,14 @@ const copyright = (
class UserLayout extends Component {
componentDidMount() {
const {
dispatch,
route: { routes, authority },
} = this.props;
dispatch({
type: 'menu/getMenuData',
payload: { routes, authority },
});
// const {
// dispatch,
// route: { routes, authority },
// } = this.props;
// dispatch({
// type: 'menu/getMenuData',
// payload: { routes, authority },
// });
}
render() {

View File

@ -4,11 +4,11 @@ import request from '@/utils/request';
// auth
export async function getAdminMenus() {
return request('/admin-api/admins/resource/admin_menu_tree');
return request('/admin-api/admins/admin/menu_resource_tree');
}
export async function getAdminUrls(params) {
return request(`/admin-api/admins/resource/admin_url_list?${stringify(params)}`);
return request(`/admin-api/admins/admin/url_resource_list?${stringify(params)}`);
}
// admin

View File

@ -104,14 +104,14 @@ export async function updateFakeList(params) {
}
export async function fakeAccountLogin(params) {
return request(`/admin-api/admin/passport/login?${stringify(params)}`, {
return request(`/admin-api/admins/passport/login?${stringify(params)}`, {
method: 'POST',
body: params,
});
}
export async function fakeRegister(params) {
return request(`/admin-api/admin/passport/login?${stringify(params)}`, {
return request(`/admin-api/admins/passport/login?${stringify(params)}`, {
method: 'POST',
body: params,
});