在 Rollup 中,您可以有一个 rollup.config.js
文件,它返回单个对象或不同配置的数组。
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 的配置文件仅导出静态配置对象/数组。它如何知道动态生成时配置是否已更改?
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.
您说得对,但是 Rollup 仅重新捆绑输入文件,它不会重新生成配置。因此,它不会获取新文件,并且导出的配置将始终保持不变。
要回答您的问题,仅通过 Rollup 无法做到这一点。但是,您可以使用 fs.watch
或chokidar观看 pages
目录,并使用 rollup.watch以编程方式重建配置并手动重新捆绑。
关于rollupjs - 如何使用一组配置来监视 Rollup 中的新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61316722/