webpack.dev.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /* eslint-disable @typescript-eslint/no-var-requires */
  2. /* eslint-disable no-undef */
  3. const { merge } = require("webpack-merge");
  4. const common = require("./webpack.common.js");
  5. const path = require("path");
  6. const lessToJs = require('less-vars-to-js');
  7. const fs = require('fs');
  8. const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
  9. //转换 less 变量,用于主题
  10. const baseLess = lessToJs(fs.readFileSync(path.join(__dirname, '../src/themes/themes.less'), 'utf8'));
  11. let themers = {};
  12. Object.keys(baseLess).map((k, i) => {
  13. let key = String(k).replace(/@/g, "");
  14. themers[key] = String(baseLess[k]);
  15. });
  16. const lessVars = Object.assign(themers, { "@CDN_BASE": "" });
  17. const lessExclude = /(node_modules)|(App)/;
  18. module.exports = merge(common, {
  19. mode: "development",
  20. devtool: "inline-source-map",
  21. module: {
  22. rules: [
  23. {
  24. test: /\.less$/,
  25. exclude: lessExclude,
  26. use: [
  27. "style-loader",
  28. {
  29. loader: "css-loader",
  30. options: {
  31. importLoaders: 1,
  32. modules: {
  33. localIdentName: "[local]___[hash:base64:5]"
  34. }
  35. },
  36. },
  37. {
  38. loader: "less-loader",
  39. options: {
  40. modifyVars: lessVars,
  41. javascriptEnabled: true
  42. }
  43. }
  44. ],
  45. },
  46. {
  47. test: /\.less$/,
  48. include: lessExclude,
  49. use: [
  50. "style-loader", "css-loader",
  51. {
  52. loader: "less-loader",
  53. options: {
  54. modifyVars: lessVars,
  55. javascriptEnabled: true
  56. }
  57. }
  58. ],
  59. },
  60. {
  61. test: /\.css$/,
  62. use: [
  63. 'style-loader',
  64. 'css-loader',
  65. ],
  66. exclude: /(node_modules)/
  67. },
  68. // style
  69. {
  70. test: /\.css$/,
  71. use: ['style-loader', 'css-loader'],
  72. exclude: /(src)/
  73. },
  74. {
  75. test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  76. loader: "file-loader"
  77. },
  78. {
  79. test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
  80. use: ['url-loader?limit=10000&mimetype=images/svg+xml']
  81. },
  82. {
  83. test: /\.(less|css)$/,
  84. use: ['style-loader', 'css-loader'],
  85. include: [
  86. path.resolve(__dirname, './node_modules/monaco-editor/'),
  87. path.resolve(__dirname, './node_modules/bravo-editor/'),
  88. ]
  89. },
  90. // {
  91. // test: /\.contribution$/,
  92. // include: [
  93. // path.resolve(__dirname, './node_modules/monaco-editor/'),
  94. // path.resolve(__dirname, './node_modules/bravo-editor/'),
  95. // ],
  96. // use: {
  97. // loader: "babel-loader",
  98. // options: {
  99. // presets: ["@babel/preset-env", "@babel/preset-react"],
  100. // plugins: ["@babel/plugin-transform-runtime"],
  101. // },
  102. // },
  103. // },
  104. // {
  105. // test: /\.contribution.js$/,
  106. // include: [
  107. // path.resolve(__dirname, './node_modules/monaco-editor/'),
  108. // path.resolve(__dirname, './node_modules/bravo-editor/'),
  109. // ],
  110. // use: {
  111. // loader: "babel-loader",
  112. // options: {
  113. // presets: ["@babel/preset-env", "@babel/preset-react"],
  114. // plugins: ["@babel/plugin-transform-runtime"],
  115. // },
  116. // },
  117. // },
  118. ],
  119. },
  120. plugins: [
  121. new MonacoWebpackPlugin()
  122. ],
  123. devServer: {
  124. // historyApiFallback: true, //不跳转
  125. // noInfo: true,
  126. // inline: true, // 实时刷新
  127. // contentBase: join(__dirname, "../dist"),
  128. compress: true,
  129. port: 9008,
  130. host: "0.0.0.0",
  131. hot: true,
  132. proxy: {
  133. "/api": {
  134. // target: "http://47.96.100.195:9081"
  135. // target: "http://dataportal-test.agile.com.cn:8081"
  136. target: "http://10.8.8.173:9081",
  137. // target:"http://dataportal.dtyunxi.cn/demo",
  138. changeOrigin:true,
  139. },
  140. "/dataengine-center-oneservice": {
  141. // target: "http://10.8.8.185:31233",
  142. target: "http://10.8.8.173:9081",
  143. changeOrigin:true,
  144. },
  145. "/mock":{
  146. target: "http://172.24.81.106:9999",
  147. pathRewrite: { '^/mock': '/api' },
  148. }
  149. },
  150. // lazy: true,
  151. // filename: "print.js",
  152. // historyApiFallback: /* 对指定url重定向 */ {
  153. // rewrites: [
  154. // { from: /^\/$/, to: "/index.html" },
  155. // { from: /^\/subpage/, to: "/index.html" },
  156. // ],
  157. // },
  158. },
  159. });