dev.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. mini: {},
  12. h5: {
  13. devServer: {
  14. proxy: {
  15. '/dr': {
  16. target: 'http://101.43.219.60:7700', // 你的后端服务地址
  17. changeOrigin: true, // 允许跨域
  18. // pathRewrite: {
  19. // '^/dr/api': '' // 可选,用于重写路径
  20. // }
  21. },
  22. },
  23. host: 'localhost', // 这里设置你想要的主机名,
  24. static: {
  25. directory: path.resolve(__dirname, '../public'),
  26. },
  27. },
  28. // Use webpackChain to customize Webpack
  29. // eslint-disable-next-line
  30. webpackChain(chain, webpack) {
  31. // 读取环境变量,告诉webpack在打包时,使用环境变量中定义的值 替换掉代码中的process.env.USE_MSW
  32. // 打印环境变量,检查是否正确读取
  33. console.log('环境变量 process.env.USE_MSW:', process.env.USE_MSW);
  34. console.log('环境变量 process.env.NODE_ENV:', process.env.NODE_ENV);
  35. // 确保使用正确的值,直接从.env文件读取
  36. const useMSW = JSON.stringify(
  37. process.env.USE_MSW === 'true' ? 'true' : 'false'
  38. );
  39. console.log('使用的 useMSW 值:', useMSW);
  40. // 检查 define 插件是否已存在,如果不存在则先创建它
  41. const hasDefinePlugin = chain.plugins.has('define');
  42. if (!hasDefinePlugin) {
  43. chain.plugin('define').use(webpack.DefinePlugin, [{}]);
  44. }
  45. // 然后再修改插件配置
  46. chain.plugin('define').tap((args) => {
  47. // 确保args[0]存在
  48. if (!args[0]) {
  49. args[0] = {};
  50. }
  51. args[0]['process.env.USE_MSW'] = useMSW;
  52. console.log('DefinePlugin配置:', args[0]);
  53. return args;
  54. });
  55. chain.devServer.merge({
  56. setupMiddlewares: (middlewares, devServer) => {
  57. devServer.app.get('/mockServiceWorker.js', (req, res) => {
  58. res.set('Content-Type', 'application/javascript');
  59. res.sendFile(
  60. path.resolve(__dirname, '../public/mockServiceWorker.js')
  61. );
  62. });
  63. return middlewares;
  64. },
  65. });
  66. },
  67. },
  68. } satisfies UserConfigExport<'webpack5'>;