构建完成后,运行汇总插件

时间:2018-06-27 09:02:45

标签: javascript build-tools rollupjs

我使用汇总0.61.2的experimentalCodeSplitting: true功能来获得不错的代码拆分。因为我的项目也包含资产,所以我创建了一个插件,可以相应地复制和缩小资产文件。问题在于,我使用的钩子会针对每个创建的块进行调用。因此,资产会多次复制和缩小。我发现的唯一解决方法是,在一切正确完成之后,创建一些设置为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;
        }
    };
};

也许有更好的方法来做这种事情,因为使用此实现,我总是必须完全重新启动汇总才能执行我的插件

1 个答案:

答案 0 :(得分:1)

rollup wiki列出了所有可用的插件挂钩。

generateBundle看起来像您想要的。

  

generateBundle(以前是onwriteongenerate)-执行( outputOptions, bundle, isWrite ) => voidbundle.generate()时调用的bundle.write()函数挂钩;您还可以返回一个Promise。捆绑软件提供了正在写入或生成的文件的完整列表以及它们的详细信息。