config.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. /* eslint-disable react/destructuring-assignment */
  2. // https://umijs.org/config/
  3. const path = require('path');
  4. // const pageRoutes = require('../_routes');
  5. export default {
  6. // add for transfer to umi
  7. plugins: [
  8. 'umi-plugin-dva',
  9. 'umi-plugin-locale',
  10. // TODO 决定是否使用约定路由,如果使用配置路由那么 umi-plugin-routes 可以去掉了
  11. // [
  12. // 'umi-plugin-routes',
  13. // {
  14. // exclude: [/\.test\.js/],
  15. // update(routes) {
  16. // return [...pageRoutes, ...routes];
  17. // },
  18. // },
  19. // ],
  20. ],
  21. disableServiceWorker: true,
  22. locale: {
  23. enable: true, // default false
  24. default: 'zh-CN', // default zh-CN
  25. baseNavigator: true, // default true, when it is true, will use `navigator.language` overwrite default
  26. antd: true, // use antd, default is true
  27. },
  28. // 路由配置
  29. routes: [
  30. // user
  31. {
  32. path: '/user',
  33. component: './layouts/UserLayout',
  34. routes: [
  35. { path: '/user', redirect: '/user/login' },
  36. { path: '/user/login', component: '/User/Login' },
  37. { path: '/user/register', component: './User/Register' },
  38. { path: '/user/register-result', component: './User/RegisterResult' },
  39. ],
  40. },
  41. // app
  42. {
  43. path: '/',
  44. component: './layouts/LoadingPage',
  45. routes: [
  46. // dashboard
  47. { path: '/', redirect: '/dashboard/analysis' },
  48. {
  49. path: '/dashboard',
  50. name: 'dashboard',
  51. icon: 'dashboard',
  52. routes: [
  53. { path: '/dashboard/analysis', name: 'analysis', component: './Dashboard/Analysis' },
  54. { path: '/dashboard/monitor', name: 'monitor', component: './Dashboard/Monitor' },
  55. { path: '/dashboard/workplace', name: 'workplace', component: './Dashboard/Workplace' },
  56. ],
  57. },
  58. // forms
  59. {
  60. path: '/form',
  61. icon: 'form',
  62. name: 'form',
  63. routes: [
  64. { path: '/form/basic-form', name: 'basicform', component: './Forms/BasicForm' },
  65. {
  66. name: 'stepform',
  67. path: '/form/step-form',
  68. component: './Forms/StepForm',
  69. hideChildren: true,
  70. routes: [
  71. { path: '/form/step-form/info', name: 'info', component: './Forms/StepForm/Step1' },
  72. {
  73. path: '/form/step-form/confirm',
  74. name: 'confirm',
  75. component: './Forms/StepForm/Step2',
  76. },
  77. {
  78. path: '/form/step-form/result',
  79. name: 'result',
  80. component: './Forms/StepForm/Step3',
  81. },
  82. ],
  83. },
  84. {
  85. path: '/form/advanced-form',
  86. name: 'advancedform',
  87. component: './Forms/AdvancedForm',
  88. },
  89. ],
  90. },
  91. // list
  92. {
  93. path: '/list',
  94. icon: 'table',
  95. name: 'list',
  96. routes: [
  97. { path: '/list/table-list', name: 'searchlist', component: './List/TableList' },
  98. { path: '/list/basic-list', name: 'basiclist', component: './List/BasicList' },
  99. { path: '/list/card-list', name: 'cardlist', component: './List/CardList' },
  100. {
  101. path: '/list/search',
  102. name: 'searchlist',
  103. component: './List/List',
  104. routes: [
  105. { path: '/list/search/articles', name: 'articles', component: './List/Articles' },
  106. { path: '/list/search/projects', name: 'projects', component: './List/Projects' },
  107. {
  108. path: '/list/search/applications',
  109. name: 'applications',
  110. component: './List/Applications',
  111. },
  112. ],
  113. },
  114. ],
  115. },
  116. {
  117. path: '/profile',
  118. name: 'profile',
  119. icon: 'profile',
  120. routes: [
  121. // profile
  122. { path: '/profile/basic', name: 'basic', component: './Profile/BasicProfile' },
  123. { path: '/profile/advanced', name: 'advanced', component: './Profile/AdvancedProfile' },
  124. ],
  125. },
  126. {
  127. name: 'result',
  128. icon: 'check-circle-o',
  129. path: '/result',
  130. routes: [
  131. // result
  132. { path: '/result/success', name: 'success', component: './Result/Success' },
  133. { path: '/result/fail', name: 'fail', component: './Result/Error' },
  134. ],
  135. },
  136. {
  137. name: 'exception',
  138. icon: 'warning',
  139. path: '/exception',
  140. routes: [
  141. // exception
  142. { path: '/exception/403', name: 'not-permission', component: './Exception/403' },
  143. { path: '/exception/404', name: 'not-find', component: './Exception/404' },
  144. { path: '/exception/500', name: 'server-error', component: './Exception/500' },
  145. {
  146. path: '/exception/trigger',
  147. name: 'trigger',
  148. hideInMenu: true,
  149. component: './Exception/triggerException',
  150. },
  151. ],
  152. },
  153. {
  154. name: 'account',
  155. icon: 'user',
  156. path: '/account',
  157. routes: [
  158. {
  159. path: '/account/center',
  160. name: 'center',
  161. component: './Account/Center/Center',
  162. routes: [
  163. { path: '/account/center', redirect: '/account/center/articles' },
  164. { path: '/account/center/articles', component: './Account/Center/Articles' },
  165. {
  166. path: '/account/center/applications',
  167. component: './Account/Center/Applications',
  168. },
  169. { path: '/account/center/projects', component: './Account/Center/Projects' },
  170. ],
  171. },
  172. {
  173. path: '/account/settings',
  174. name: 'settings',
  175. component: './Account/Settings/Info',
  176. routes: [
  177. { path: '/account/settings', redirect: '/account/settings/base' },
  178. { path: '/account/settings/base', component: './Account/Settings/BaseView' },
  179. {
  180. path: '/account/settings/security',
  181. component: './Account/Settings/SecurityView',
  182. },
  183. { path: '/account/settings/binding', component: './Account/Settings/BindingView' },
  184. {
  185. path: '/account/settings/notification',
  186. component: './Account/Settings/NotificationView',
  187. },
  188. ],
  189. },
  190. ],
  191. },
  192. ],
  193. },
  194. ],
  195. theme: {
  196. 'card-actions-background': '#f5f8fa',
  197. },
  198. // entry: 'src/index.js', // TODO remove
  199. extraBabelPlugins: [['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }]],
  200. env: {
  201. development: {
  202. extraBabelPlugins: ['dva-hmr'],
  203. },
  204. },
  205. externals: {
  206. '@antv/data-set': 'DataSet',
  207. bizcharts: 'BizCharts',
  208. rollbar: 'rollbar',
  209. },
  210. alias: {
  211. components: path.resolve(__dirname, '../src/components/'),
  212. utils: path.resolve(__dirname, '../src/utils/'),
  213. assets: path.resolve(__dirname, '../src/assets/'),
  214. common: path.resolve(__dirname, '../src/common/'),
  215. },
  216. ignoreMomentLocale: true,
  217. publicPath: '/',
  218. // TODO check hash config
  219. // hash: true,
  220. lessLoaderOptions: {
  221. javascriptEnabled: true,
  222. },
  223. cssLoaderOptions: {
  224. modules: true,
  225. getLocalIdent: (context, localIdentName, localName) => {
  226. if (
  227. context.resourcePath.includes('node_modules') ||
  228. context.resourcePath.includes('ant.design.pro.less')
  229. ) {
  230. return localName;
  231. }
  232. const antdProPath = context.resourcePath.match(/src(.*)/)[1].replace('.less', '');
  233. const arr = antdProPath
  234. .split('/')
  235. .map(a => a.replace(/([A-Z])/g, '-$1'))
  236. .map(a => a.toLowerCase());
  237. return `antd-pro${arr.join('-')}-${localName}`.replace(/--/g, '-');
  238. },
  239. },
  240. disableFastClick: true,
  241. };