在第 3 方库中复制后捆绑速度较慢 rollup.js

Slow rollup.js bundling after copying in a 3rd-party library

我正在使用 https://shoelace.style (in my Svelte project), and following the example config in shoelace docs,我添加了一个 copy() 插件到我的 rollup.config.js,将其复制到 public/vendor/shoelace:

export default {
  // SNIP
  plugins: [
    // SNIP
    copy({
      targets: [
        {
          src: path.resolve(
            __dirname,
            "node_modules/@shoelace-style/shoelace/dist/assets"
          ),
          dest: path.resolve(__dirname, "public/vendor/shoelace"),
        },
      ],
    }),
    // SNIP
  ],
};

它可以工作,但现在构建需要非常长的时间 - 超过 40 秒,包括文件更改时的增量重建。我很确定时间损失不是因为它每次都被不小心复制了,因为资产文件夹只有6M。

所以,我想正在进行一些 tree-shaking and/or 优化?有没有办法从汇总处理中排除文件夹 - 或者 troubleshoot/profile 捆绑过程?

(如有必要,我也可以 post 配置的其余部分;但它是通过 npx degit sveltejs/template 和 adding/removing 获得的标准新应用程序模板,复制插件使一切变得不同.)

我也将 svelte 与 codeigniter 结合使用,并且有一种更简单的方法来包含您的 css 框架:

  1. 列表项将样式表添加到视图(布局)页眉,将脚本添加到它的页脚,就在构建 svelte 脚本文件的正上方(如果您要在整个项目中使用鞋带)。
  2. 如果您只想定位一个页面,请将两者都添加到 <svelte:header></svelte:header>(即使您也可以在加载视图以定位特定页面之前从控制器执行此操作)。
  3. 你可以通过安装 npm i svelte-preprocess node-scss 添加它,然后包含你的 css 框架的 scss 文件,然后只导入 js 文件(你也可以使用你的全局使用 scss).
  4. 的样式表

原来问题出在 rollup-plugin-copy 中。即使设置 copyOnce: true 也没有改变行为,但将其设置为仅在最后可能的机会复制 - closeBundle 挂钩解决了我的问题。

    copy({
      copyOnce: true, // ???
      hook: "closeBundle",
      targets: [
        {
          src: path.resolve(
            __dirname,
            "node_modules/@shoelace-style/shoelace/dist/assets"
          ),
          dest: path.resolve(__dirname, "public/vendor/shoelace"),
        },
      ],
    }),