如何使用一组配置在 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 手动。
在 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 手动。