config.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  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. locale: {
  22. enable: true, // default false
  23. default: 'zh-CN', // default zh-CN
  24. baseNavigator: true, // default true, when it is true, will use `navigator.language` overwrite default
  25. antd: true, // use antd, default is true
  26. },
  27. // 路由配置
  28. routes: [
  29. // user
  30. {
  31. path: '/user',
  32. component: './layouts/UserLayout',
  33. routes: [
  34. { path: '/user', redirect: '/user/login' },
  35. { path: '/user/login', component: '/User/Login' },
  36. { path: '/user/register', component: './User/Register' },
  37. { path: '/user/register-result', component: './User/RegisterResult' },
  38. ],
  39. },
  40. // app
  41. {
  42. path: '/',
  43. component: './layouts/LoadingPage',
  44. routes: [
  45. // dashboard
  46. { path: '/', redirect: '/dashboard/analysis' },
  47. {
  48. path: '/dashboard',
  49. name: 'dashboard',
  50. icon: 'dashboard',
  51. routes: [
  52. { path: '/dashboard/analysis', name: 'analysis', component: './Dashboard/Analysis' },
  53. { path: '/dashboard/monitor', name: 'monitor', component: './Dashboard/Monitor' },
  54. { path: '/dashboard/workplace', name: 'workplace', component: './Dashboard/Workplace' },
  55. ],
  56. },
  57. // forms
  58. {
  59. path: '/form',
  60. icon: 'form',
  61. name: 'form',
  62. routes: [
  63. { path: '/form/basic-form', name: 'basicform', component: './Forms/BasicForm' },
  64. {
  65. path: '/form/step-form',
  66. name: 'stepform',
  67. component: './Forms/StepForm',
  68. hideChildren: true,
  69. routes: [
  70. { path: '/form/step-form', name: 'stepform', redirect: '/form/step-form/info' },
  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: 'searchtable', 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. {
  165. path: '/account/center/articles',
  166. component: './Account/Center/Articles',
  167. },
  168. {
  169. path: '/account/center/applications',
  170. component: './Account/Center/Applications',
  171. },
  172. {
  173. path: '/account/center/projects',
  174. component: './Account/Center/Projects',
  175. },
  176. ],
  177. },
  178. {
  179. path: '/account/settings',
  180. name: 'settings',
  181. component: './Account/Settings/Info',
  182. routes: [
  183. { path: '/account/settings', redirect: '/account/settings/base' },
  184. {
  185. path: '/account/settings/base',
  186. component: './Account/Settings/BaseView',
  187. },
  188. {
  189. path: '/account/settings/security',
  190. component: './Account/Settings/SecurityView',
  191. },
  192. { path: '/account/settings/binding', component: './Account/Settings/BindingView' },
  193. {
  194. path: '/account/settings/notification',
  195. component: './Account/Settings/NotificationView',
  196. },
  197. ],
  198. },
  199. ],
  200. },
  201. ],
  202. },
  203. ],
  204. theme: {
  205. 'card-actions-background': '#f5f8fa',
  206. },
  207. // entry: 'src/index.js', // TODO remove
  208. extraBabelPlugins: [['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }]],
  209. env: {
  210. development: {
  211. extraBabelPlugins: ['dva-hmr'],
  212. },
  213. },
  214. externals: {
  215. '@antv/data-set': 'DataSet',
  216. rollbar: 'rollbar',
  217. },
  218. alias: {
  219. components: path.resolve(__dirname, '../src/components/'),
  220. utils: path.resolve(__dirname, '../src/utils/'),
  221. assets: path.resolve(__dirname, '../src/assets/'),
  222. common: path.resolve(__dirname, '../src/common/'),
  223. },
  224. ignoreMomentLocale: true,
  225. lessLoaderOptions: {
  226. javascriptEnabled: true,
  227. },
  228. cssLoaderOptions: {
  229. modules: true,
  230. getLocalIdent: (context, localIdentName, localName) => {
  231. if (
  232. context.resourcePath.includes('node_modules') ||
  233. context.resourcePath.includes('ant.design.pro.less')
  234. ) {
  235. return localName;
  236. }
  237. const antdProPath = context.resourcePath.match(/src(.*)/)[1].replace('.less', '');
  238. const arr = antdProPath
  239. .split('/')
  240. .map(a => a.replace(/([A-Z])/g, '-$1'))
  241. .map(a => a.toLowerCase());
  242. return `antd-pro${arr.join('-')}-${localName}`.replace(/--/g, '-');
  243. },
  244. },
  245. disableFastClick: true,
  246. manifest: {
  247. name: 'ant-design-pro',
  248. background_color: '#FFF',
  249. description: 'An out-of-box UI solution for enterprise applications as a React boilerplate.',
  250. display: 'standalone',
  251. start_url: '/index.html',
  252. icons: [
  253. {
  254. src: '/favicon.png',
  255. sizes: '48x48',
  256. type: 'image/png',
  257. },
  258. ],
  259. },
  260. };