CC 4.0 License

The content of this section is derived from the content of the following links and is subject to the CC BY 4.0 license.

The following contents can be assumed to be the result of modifications and deletions based on the original contents if not specifically stated.

Watch

Rspack can watch files and recompile whenever they change.

watch

  • Type: boolean
  • Default: false

Turn on watch mode. This means that after the initial build, Rspack will continue to watch for changes in any of the resolved files.

rspack.config.js
module.exports = {
  // ...
  watch: true,
};
TIP

watch is enabled by default when using @rspack/dev-server.

watchOptions

  • Type: object

A set of options used to customize watch mode.

rspack.config.js
module.exports = {
  // ...
  watchOptions: {
    ignored: /node_modules/,
    poll: true,
  },
};

watchOptions.aggregateTimeout

  • Type: number
  • Default: 5

Add a delay before rebuilding once the first file changed. This allows Rspack to aggregate any other changes made during this time period into one rebuild. Pass a value in milliseconds:

rspack.config.js
module.exports = {
  //...
  watchOptions: {
    aggregateTimeout: 600,
  },
};

watchOptions.ignored

  • Type: RegExp | string | string[]
  • Default: /[\\/](?:\.git|node_modules)[\\/]/

The path that matches is excluded while watching. Watching many files can result in a lot of CPU or memory usage.

Since Rspack v1.2.0, node_modules and .git directories are excluded by default. This means that changes to files in these directories will not trigger a rebuild.

If you want to watch the node_modules directory, you can set it to only exclude the .git directory:

rspack.config.js
module.exports = {
  //...
  watchOptions: {
    ignored: /\.git/,
  },
};

ignored can use glob matching:

rspack.config.js
module.exports = {
  //...
  watchOptions: {
    ignored: '**/.git',
  },
};

It is also possible to use multiple glob patterns:

rspack.config.js
module.exports = {
  //...
  watchOptions: {
    ignored: ['**/files/**/*.js', '**/.git', '**/node_modules'],
  },
};

In addition, you can specify one or more absolute paths:

rspack.config.js
const path = require('node:path');

module.exports = {
  //...
  watchOptions: {
    ignored: [path.posix.resolve(__dirname, './ignored-dir')],
  },
};

When using glob patterns, Rspack convert them to regular expressions with glob-to-regexp, so make sure to get yourself familiar with it before you use glob patterns for watchOptions.ignored.

watchOptions.poll

  • Type: boolean, number
  • Default: false

Whether to watch by polling.

When set to true, the default polling interval is 5007 milliseconds.

rspack.config.js
module.exports = {
  //...
  watchOptions: {
    poll: true,
  },
};

It can also set a custom polling interval:

rspack.config.js
module.exports = {
  //...
  watchOptions: {
    poll: 1000, // Check for changes every second
  },
};
  • Type: boolean
  • Default: false

Follow symbolic links while looking for a file. This is usually not needed as Rspack already resolves symlinks with resolve.symlinks.

rspack.config.js
module.exports = {
  //...
  watchOptions: {
    followSymlinks: true,
  },
};

watchOptions.stdin

  • Type: boolean

Stop watching when stdin stream has ended.

rspack.config.js
module.exports = {
  //...
  watchOptions: {
    stdin: true,
  },
};