dev.ts 2.4 KB

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