config.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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. path: '/form/step-form',
  67. name: 'stepform',
  68. component: './Forms/StepForm',
  69. hideChildren: true,
  70. routes: [
  71. { path: '/form/step-form', name: 'stepform', redirect: '/form/step-form/info' },
  72. { path: '/form/step-form/info', name: 'info', component: './Forms/StepForm/Step1' },
  73. {
  74. path: '/form/step-form/confirm',
  75. name: 'confirm',
  76. component: './Forms/StepForm/Step2',
  77. },
  78. {
  79. path: '/form/step-form/result',
  80. name: 'result',
  81. component: './Forms/StepForm/Step3',
  82. },
  83. ],
  84. },
  85. {
  86. path: '/form/advanced-form',
  87. name: 'advancedform',
  88. component: './Forms/AdvancedForm',
  89. },
  90. ],
  91. },
  92. // list
  93. {
  94. path: '/list',
  95. icon: 'table',
  96. name: 'list',
  97. routes: [
  98. { path: '/list/table-list', name: 'searchtable', component: './List/TableList' },
  99. { path: '/list/basic-list', name: 'basiclist', component: './List/BasicList' },
  100. { path: '/list/card-list', name: 'cardlist', component: './List/CardList' },
  101. {
  102. path: '/list/search',
  103. name: 'searchlist',
  104. component: './List/List',
  105. routes: [
  106. { path: '/list/search/articles', name: 'articles', component: './List/Articles' },
  107. { path: '/list/search/projects', name: 'projects', component: './List/Projects' },
  108. {
  109. path: '/list/search/applications',
  110. name: 'applications',
  111. component: './List/Applications',
  112. },
  113. ],
  114. },
  115. ],
  116. },
  117. {
  118. path: '/profile',
  119. name: 'profile',
  120. icon: 'profile',
  121. routes: [
  122. // profile
  123. { path: '/profile/basic', name: 'basic', component: './Profile/BasicProfile' },
  124. { path: '/profile/advanced', name: 'advanced', component: './Profile/AdvancedProfile' },
  125. ],
  126. },
  127. {
  128. name: 'result',
  129. icon: 'check-circle-o',
  130. path: '/result',
  131. routes: [
  132. // result
  133. { path: '/result/success', name: 'success', component: './Result/Success' },
  134. { path: '/result/fail', name: 'fail', component: './Result/Error' },
  135. ],
  136. },
  137. {
  138. name: 'exception',
  139. icon: 'warning',
  140. path: '/exception',
  141. routes: [
  142. // exception
  143. { path: '/exception/403', name: 'not-permission', component: './Exception/403' },
  144. { path: '/exception/404', name: 'not-find', component: './Exception/404' },
  145. { path: '/exception/500', name: 'server-error', component: './Exception/500' },
  146. {
  147. path: '/exception/trigger',
  148. name: 'trigger',
  149. hideInMenu: true,
  150. component: './Exception/triggerException',
  151. },
  152. ],
  153. },
  154. {
  155. name: 'account',
  156. icon: 'user',
  157. path: '/account',
  158. routes: [
  159. {
  160. path: '/account/center',
  161. name: 'center',
  162. component: './Account/Center/Center',
  163. routes: [
  164. { path: '/account/center', redirect: '/account/center/articles' },
  165. { path: '/account/center/articles', component: './Account/Center/Articles' },
  166. {
  167. path: '/account/center/applications',
  168. component: './Account/Center/Applications',
  169. },
  170. { path: '/account/center/projects', component: './Account/Center/Projects' },
  171. ],
  172. },
  173. {
  174. path: '/account/settings',
  175. name: 'settings',
  176. component: './Account/Settings/Info',
  177. routes: [
  178. { path: '/account/settings', redirect: '/account/settings/base' },
  179. { path: '/account/settings/base', component: './Account/Settings/BaseView' },
  180. {
  181. path: '/account/settings/security',
  182. component: './Account/Settings/SecurityView',
  183. },
  184. { path: '/account/settings/binding', component: './Account/Settings/BindingView' },
  185. {
  186. path: '/account/settings/notification',
  187. component: './Account/Settings/NotificationView',
  188. },
  189. ],
  190. },
  191. ],
  192. },
  193. ],
  194. },
  195. ],
  196. theme: {
  197. 'card-actions-background': '#f5f8fa',
  198. },
  199. // entry: 'src/index.js', // TODO remove
  200. extraBabelPlugins: [['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }]],
  201. env: {
  202. development: {
  203. extraBabelPlugins: ['dva-hmr'],
  204. },
  205. },
  206. externals: {
  207. '@antv/data-set': 'DataSet',
  208. bizcharts: 'BizCharts',
  209. rollbar: 'rollbar',
  210. },
  211. alias: {
  212. components: path.resolve(__dirname, '../src/components/'),
  213. utils: path.resolve(__dirname, '../src/utils/'),
  214. assets: path.resolve(__dirname, '../src/assets/'),
  215. common: path.resolve(__dirname, '../src/common/'),
  216. },
  217. ignoreMomentLocale: true,
  218. publicPath: '/',
  219. // TODO check hash config
  220. // hash: true,
  221. lessLoaderOptions: {
  222. javascriptEnabled: true,
  223. },
  224. cssLoaderOptions: {
  225. modules: true,
  226. getLocalIdent: (context, localIdentName, localName) => {
  227. if (
  228. context.resourcePath.includes('node_modules') ||
  229. context.resourcePath.includes('ant.design.pro.less')
  230. ) {
  231. return localName;
  232. }
  233. const antdProPath = context.resourcePath.match(/src(.*)/)[1].replace('.less', '');
  234. const arr = antdProPath
  235. .split('/')
  236. .map(a => a.replace(/([A-Z])/g, '-$1'))
  237. .map(a => a.toLowerCase());
  238. return `antd-pro${arr.join('-')}-${localName}`.replace(/--/g, '-');
  239. },
  240. },
  241. disableFastClick: true,
  242. };