当构建的所有内容都完成后运行 rollup 插件

tsc*_*chi 5 javascript build-tools rollupjs

我使用experimentalCodeSplitting: truerollup 0.61.2 的功能来获得良好的代码分割。因为我的项目也包含资产,所以我创建了一个插件,可以相应地复制和缩小资产文件。问题是我使用的钩子会为创建的每个块调用。因此,资产被多次复制和缩小。我发现的唯一解决方法是创建一些标志,在true一切正确完成后将其设置为。是否有一个功能可以在所有事情(或所有事情之前)完成之后而不是每次都调用汇总挂钩chunk?现在我的插件看起来像下面的代码(我删除了一些部分并简化了可读性):

export default function copy(userOptions = {}) {
    const name = 'copyAndMinify';
    const files = userOptions.files || [];
    let isCopyDone = false;

    return {
        name: name,
        // also tried onwrite, ongenerate, buildEnd and generateBundle
        buildStart() { 
            if (isCopyDone) {
                return;
            }
            for (let key in files) {
                const src = key;
                const dest = files[key];

                try {
                    minifyFile(src, dest);
                } catch (err) {
                    fatal(name, src, dest, err);
                }
            }
            isCopyDone = true;
        }
    };
};
Run Code Online (Sandbox Code Playgroud)

也许有更好的方法来做这类事情,因为通过这个实现,我总是必须完全重新启动 rollup 来执行我的插件

Tiv*_*vac 5

汇总站点列出了所有可用的插件挂钩。

generateBundle看起来像你想要的。

generateBundle(以前的onwriteand ongenerate) -执行or( outputOptions, bundle, isWrite ) => void时调用的函数钩子;你也可以返回一个 Promise。Bundle 提供了正在写入或生成的文件的完整列表及其详细信息。bundle.generate()bundle.write()