dev.setupMiddlewares

  • 类型:
type ServerAPIs = {
  sockWrite: (
    type: string,
    data?: string | boolean | Record<string, any>,
  ) => void;
};

type SetupMiddlewares = Array<
  (
    middlewares: {
      unshift: (...handlers: RequestHandler[]) => void;
      push: (...handlers: RequestHandler[]) => void;
    },
    server: ServerAPIs,
  ) => void
>;
  • 默认值: undefined

提供执行自定义函数和应用自定义中间件的能力。

中间件的执行顺序是: unshift => 内置中间件 => push

export default {
  dev: {
    setupMiddlewares: [
      (middlewares, server) => {
        middlewares.unshift((req, res, next) => {
          next();
        });

        middlewares.push((req, res, next) => {
          next();
        });
      },
    ],
  },
};

一些特殊场景需求可能需要使用服务器 API:

  • sockWrite。允许向 HMR 客户端传递一些消息,HMR 客户端将根据接收到的消息类型进行不同的处理。如果你发送一个 "content-changed " 的消息,页面将会重新加载。
export default {
  dev: {
    setupMiddlewares: [
      (middlewares, server) => {
        // 添加自定义 watcher 并在文件更新时触发页面刷新
        watcher.on('change', (changed) => {
          server.sockWrite('content-changed');
        });
      },
    ],
  },
};