dev.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import type { UserConfigExport } from '@tarojs/cli';
  2. import path from 'path';
  3. import dotenv from 'dotenv';
  4. // 加载 .env.development 文件中的环境变量
  5. dotenv.config({ path: path.resolve(__dirname, '../.env.development') });
  6. export default {
  7. logger: {
  8. quiet: false,
  9. stats: true,
  10. },
  11. defineConstants: {
  12. MQTT_BROKER_URL_FROM_WEBPACK: '"ws://192.168.1.132:8083/mqtt"',
  13. },
  14. mini: {},
  15. h5: {
  16. publicPath: '/',
  17. devServer: {
  18. proxy: {
  19. '/dr': {
  20. target: 'http://192.168.1.132:6001', // 你的后端服务地址
  21. changeOrigin: true, // 允许跨域
  22. // pathRewrite: {
  23. // '^/dr/api': '' // 可选,用于重写路径
  24. // }
  25. },
  26. },
  27. host: '0.0.0.0', // 监听所有网络接口
  28. open: false, // 可选:是否自动打开浏览器
  29. port: 10086, // 可选:指定端口号
  30. static: {
  31. directory: path.resolve(__dirname, '../public'),
  32. },
  33. },
  34. // Use webpackChain to customize Webpack
  35. // eslint-disable-next-line
  36. webpackChain(chain, webpack) {
  37. // 读取环境变量,告诉webpack在打包时,使用环境变量中定义的值 替换掉代码中的process.env.USE_MSW
  38. // 打印环境变量,检查是否正确读取
  39. console.log('环境变量 process.env.USE_MSW:', process.env.USE_MSW);
  40. console.log('环境变量 process.env.NODE_ENV:', process.env.NODE_ENV);
  41. // 确保使用正确的值,直接从.env文件读取
  42. const useMSW = JSON.stringify(
  43. process.env.USE_MSW === 'true' ? 'true' : 'false'
  44. );
  45. console.log('使用的 useMSW 值:', useMSW);
  46. // 检查 define 插件是否已存在,如果不存在则先创建它
  47. const hasDefinePlugin = chain.plugins.has('define');
  48. if (!hasDefinePlugin) {
  49. chain.plugin('define').use(webpack.DefinePlugin, [{}]);
  50. }
  51. // 然后再修改插件配置
  52. chain.plugin('define').tap((args) => {
  53. // 确保args[0]存在
  54. if (!args[0]) {
  55. args[0] = {};
  56. }
  57. args[0]['process.env.USE_MSW'] = useMSW;
  58. console.log('DefinePlugin配置:', args[0]);
  59. return args;
  60. });
  61. chain.devServer.merge({
  62. setupMiddlewares: (middlewares, devServer) => {
  63. devServer.app.get('/mockServiceWorker.js', (req, res) => {
  64. res.set('Content-Type', 'application/javascript');
  65. res.sendFile(
  66. path.resolve(__dirname, '../public/mockServiceWorker.js')
  67. );
  68. });
  69. return middlewares;
  70. },
  71. });
  72. },
  73. },
  74. } satisfies UserConfigExport<'webpack5'>;