如何使用一组配置在 Rollup 中观察新文件?

How to watch for new files in Rollup with an array of configs?

在 Rollup 中,您可以有一个 rollup.config.js 文件,其中 returns 一个对象或一组不同的配置。

export default [
  {
    input: 'pages/a.js',
    output: 'dist/a.js',
    // more config options
  },
  {
    input: 'pages/b.js',
    output: 'dist/b.js',
    // more config options
  },
  // etc
]

因此我们可以通过 rollup -c -w 启动 Rollup 的监视功能,只要任何输入文件或其依赖项发生更改,它就会触发一个新的包。

现在让我们更进一步,我们不是手动生成这个配置数组,而是通过使用 fs.readdirSync() 读取 pages 目录中的文件来完成。例如,在 SSR 项目中这很有意义,您需要将每个页面导出为单个 .js 以便在 Node.HTML 中呈现

现在的问题是,在观看的时候,如果我们在pages目录下添加一个新的文件,Rollup的配置不会被触发。所以每当我们创建一个新文件时,我们都必须重新开始观看。

有没有办法通过 Rollup 解决这个问题?

如果你仔细想想,Rollup 的配置文件只导出一个静态配置object/array。动态生成时如何知道配置是否已更改?

So we can start Rollup's watch feature via rollup -c -w and it will trigger a new bundle whenever any of the input files or its dependencies have changed.

你说对了这一点,但是汇总 re-bundles 输入文件,它不会重新生成配置。因此它不会获取新文件并且导出的配置将始终保持不变。

要回答您的问题,仅通过 Rollup 是无法做到这一点的。但是,您可以使用 fs.watch or chokidar to watch the pages directory, and use rollup.watch 以编程方式重建配置并 re-bundle 手动。