For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt, and this page is available as Markdown at /zh/config/watch.md.
close

Watch

监听:该选项用于监听文件变更,并在变更时触发重新编译。

watch

  • 类型: boolean
  • 默认值: false

开启监听模式,使 Rspack 在第一次构建完后不会退出,而是继续监听文件变更,并在变更时触发重新编译。

rspack.config.mjs
export default {
  watch: true,
};
Tip

在使用 @rspack/dev-server 时,watch 默认为 true。

watchOptions

  • 类型: object

监听模式相关的配置项。

rspack.config.mjs
export default {
  watchOptions: {
    ignored: /node_modules/,
    poll: true,
  },
};

watchOptions.aggregateTimeout

  • 类型: number
  • 默认值: 5

当第一个文件更改后,在触发 rebuild 前存在一个延迟时间,Rspack 会将这段时间内进行的任何其他更改都聚合到一次 rebuild 里。你可以通过这个选项来设置这个时间,以毫秒为单位:

rspack.config.mjs
export default {
  watchOptions: {
    aggregateTimeout: 600,
  },
};

watchOptions.ignored

  • 类型: RegExp | string | string[]
  • 默认值: /[\\/](?:\.git|node_modules)[\\/]/

使用 watchOptions.ignored 可以从监听范围中排除匹配的文件和目录。忽略不需要监听的目录有助于降低 CPU 和内存占用。

默认情况下,.gitnode_modules 目录会被忽略,其中的文件发生变化时不会触发重新构建。

如果需要监听 node_modules 中的文件,可以覆盖默认值,仅忽略 .git 目录:

rspack.config.mjs
export default {
  watchOptions: {
    ignored: /[\\/]\.git[\\/]/,
  },
};

也可以使用 glob 模式:

rspack.config.mjs
export default {
  watchOptions: {
    ignored: '**/.git',
  },
};

如需忽略多个 glob 模式,请传入一个数组:

rspack.config.mjs
export default {
  watchOptions: {
    ignored: ['**/files/**/*.js', '**/.git', '**/node_modules'],
  },
};

还可以指定一个或多个绝对路径。由于字符串会按 glob 模式解析,请将路径分隔符统一为正斜杠,以确保在各平台上的行为一致:

rspack.config.mjs
import path from 'node:path';

const ignoredDir = path
  .resolve(import.meta.dirname, 'ignored-dir')
  .replaceAll(path.sep, '/');

export default {
  watchOptions: {
    ignored: [ignoredDir],
  },
};

watchOptions.ignored 的 glob 语法基于 glob-to-regexp。有关支持的模式语法,请参阅其文档。

watchOptions.poll

  • 类型: number | boolean
  • 默认值: false

是否通过轮询进行监听。

当设置为 true 时,默认的轮询间隔为 5007 毫秒,这与 Node.js fs.watchFile() 的默认轮询间隔一致。

rspack.config.mjs
export default {
  watchOptions: {
    poll: true,
  },
};

还可以设置一个自定义的轮询间隔。注意,轮询间隔过短会显著增加 CPU 占用和文件系统 I/O 开销:

rspack.config.mjs
export default {
  watchOptions: {
    poll: 1000, // 每秒检查一次
  },
};
  • 类型: boolean
  • 默认值: false

是否根据软链接查找文件。这通常是不需要的,因为 Rspack 已经使用 resolve.symlinks 解析了软链接。

rspack.config.mjs
export default {
  watchOptions: {
    followSymlinks: true,
  },
};

watchOptions.stdin

  • 类型: boolean

当 stdin 流结束时停止监听。

rspack.config.mjs
export default {
  watchOptions: {
    stdin: true,
  },
};

本页改编自 webpack 文档,遵循 CC BY 4.0,且已作修改。