rollupjs - 如何使用一组配置来监视 Rollup 中的新文件?

标签 rollupjs

在 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.watchchokidar观看 pages 目录,并使用 rollup.watch以编程方式重建配置并手动重新捆绑。

关于rollupjs - 如何使用一组配置来监视 Rollup 中的新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61316722/

相关文章:

javascript - 在 tsconfig.json 中使用 @rollup/stream 和 es6 目标时,Gulp 4 任务不会完成

javascript - 汇总: "Import of non-existent export" when importing function from Lodash

node.js - Rollup 用相对路径替换 Node 模块导入

javascript - 在 Rollup.js 中使用 jQuery DataTables

javascript - Rollup.js 如何在不做任何更改的情况下导入 js 文件(不是 es6 模块)(myvar$extrastring)

javascript - 将 JS 与 rollup 和 Babel 捆绑以在 IE11 中使用

javascript - 如何使用 Rollup 将 js 文件作为字符串导入?

typescript - 每个组件的 Rollup + Typescript 输出 JS 文件

javascript - 创建一个 NPM 包,支持 ES6 导入到 cherry pick 导出

javascript - 无法让 D3.js 在 Svelte 组件中工作(使用汇总)