Rollup 是否可以保留文件和文件夹结构?

Fra*_*isc 8 rollupjs

我正在使用 ES6 导入并使用 Rollup 对其进行转译。

输出是单个捆绑文件。

Rollup 可以配置为生成文件到文件的转译结果吗?

这是我正在使用的当前配置,它显然会输出一个文件。

 gulp.task('rollup', function() {
    const rollup = require('rollup');
    const nodeResolve = require('rollup-plugin-node-resolve');

    const JS_INDEX_FILE = 'src/index.js';

    return rollup.rollup({
        input: JS_INDEX_FILE,
        plugins: [
            nodeResolve({
                browser: true
            })
        ]
    }).then(bundle => {
            bundle.write({
                sourcemap: true,
                format: 'cjs',
                strict: true,
                file: 'bundle.js'
            });
        });
});
Run Code Online (Sandbox Code Playgroud)

基本上,我想要单个文件而require()不是import.

Rya*_* H. 6

如果您想使用 rollup 将 ES6 转换为 CommonJS 并保留文件和目录结构,您的 rollup 配置可能如下所示:

import { nodeResolve } from "@rollup/plugin-node-resolve";

export default [
  {
    input: ["src/index.js"],
    plugins: [nodeResolve()],
    output: [
      {
        dir: "dist",
        format: "cjs",
        exports: "named",
        preserveModules: true, // Keep directory structure and files
      }
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

请参阅将 Rollup 与其他工具集成,以确定您是否需要该@rollup/plugin-node-resolve插件以及从外部包中“保留”的确切内容。

  • `preserveModules` 现在是 rollup 的[一部分](https://rollupjs.org/guide/en/#preservemodules),不再需要该插件。[相关讨论](https://github.com/rollup/rollup/issues/1736) (2认同)

Ric*_*ris 2

Rollup 是一个模块捆绑器。你需要的是一个编译器,比如 Babel。

  • 谢谢。我被迫使用 Rollup (或类似的)将 .vue 文件解析为 JS / CSS。 (2认同)