diff --git a/packages/fes-preset-built-in/package.json b/packages/fes-preset-built-in/package.json index 637cc0a1..7345d7c0 100644 --- a/packages/fes-preset-built-in/package.json +++ b/packages/fes-preset-built-in/package.json @@ -65,6 +65,7 @@ "style-loader": "^2.0.0", "url-loader": "^4.1.1", "vue-loader": "^16.1.2", + "connect-history-api-fallback": "^1.6.0", "webpack": "^5.24.2", "webpack-bundle-analyzer": "^4.4.0", "webpack-chain": "^6.5.1", diff --git a/packages/fes-preset-built-in/src/plugins/commands/dev/createRouteMiddleware.js b/packages/fes-preset-built-in/src/plugins/commands/dev/createRouteMiddleware.js new file mode 100644 index 00000000..64aee2ad --- /dev/null +++ b/packages/fes-preset-built-in/src/plugins/commands/dev/createRouteMiddleware.js @@ -0,0 +1,16 @@ + +import { extname, join } from 'path'; +import historyFallback from 'connect-history-api-fallback'; + +const ASSET_EXTNAMES = ['.ico', '.png', '.jpg', '.jpeg', '.gif', '.svg']; + +export default () => (req, res, next) => { + if (req.path === '/favicon.ico') { + res.sendFile(join(__dirname, 'fes.png')); + } else if (ASSET_EXTNAMES.includes(extname(req.path))) { + next(); + } else { + const history = historyFallback(); + history(req, res, next); + } +}; diff --git a/packages/fes-preset-built-in/src/plugins/commands/dev/fes.png b/packages/fes-preset-built-in/src/plugins/commands/dev/fes.png new file mode 100644 index 00000000..4958e971 Binary files /dev/null and b/packages/fes-preset-built-in/src/plugins/commands/dev/fes.png differ diff --git a/packages/fes-preset-built-in/src/plugins/commands/dev/index.js b/packages/fes-preset-built-in/src/plugins/commands/dev/index.js index 7d4cfccd..e79df502 100644 --- a/packages/fes-preset-built-in/src/plugins/commands/dev/index.js +++ b/packages/fes-preset-built-in/src/plugins/commands/dev/index.js @@ -40,6 +40,7 @@ export default (api) => { getBundleAndConfigs } = require('../buildDevUtils'); const { delay } = require('@umijs/utils'); + const createRouteMiddleware = require('./createRouteMiddleware').default; const generateFiles = require('../../../utils/generateFiles').default; const { watchPkg } = require('./watchPkg'); @@ -175,7 +176,7 @@ export default (api) => { port, proxy: api.config.proxy, https: isHTTPS, - beforeMiddlewares, + beforeMiddlewares: [...beforeMiddlewares, createRouteMiddleware()], afterMiddlewares: [...middlewares], customerDevServerConfig: api.config.devServer }); diff --git a/packages/fes-template/.fes.js b/packages/fes-template/.fes.js index 430facd6..750bd0d8 100644 --- a/packages/fes-template/.fes.js +++ b/packages/fes-template/.fes.js @@ -2,17 +2,16 @@ export default { - // base: '', - qiankun: { - micro: {} - }, + base: '/base/', define: { __DEV__: false }, html: { title: '海贼王' }, - publicPath: '/', + router: { + mode: 'history' + }, access: { roles: { admin: ["/", "/store", "https://www.baidu.com"]