rollup-plugin-copy在 vite@5.0.11中不生效解决办法

在打包的时候, 我们需要将一些文件copy到 打包后的目录.

使用 vite 可以很方便的复用 rollup的插件生态, 但是发现一个小小的问题,需要我们自己注意一下

环境说明

sql 复制代码
node: 20.10.0
rollup-plugin-copy  3.5.0
vite  5.0.11

截止到 2024-01-09 ,插件均为最新版本

安装

shell 复制代码
pnpm add rollup-plugin-copy vite -D

使用

不生效的写法

js 复制代码
import { defineConfig } from 'vite'
import copy from 'rollup-plugin-copy'

export default defineConfig({
    build: {
        outDir: 'lib',
        lib: {
          entry: resolve('./src/index.js'),
          name: 'test-ui',
          fileName: 'ems'
        },
    }),
    plugins: [
        ...其他插件
        copy({
          targets: [
            { src: './package.json', dest: './lib' }
          ]
        }),

    ]
})

发现在 输出目录 lib下面使用没有 要搬运的文件 package.json。

可能是 rollup-plugin-copy 的版本与 rollup 存在差异, 主要应该是 rollup hooks 的差异, 现在,我们将执行时机改为 由 buildEnd 改为 closeBundle

buildEndrollup-plugin-copy 使用的默认的 hook

  • buildEnd 执行时机:在 Rollup 完成产物但尚未调用 generatewrite 之前调用;也可以返回一个 Promise。如果在构建过程中发生错误,则将其传递给此钩子。

  • closeBundle: 可用于清理可能正在运行的任何外部服务。Rollup 的 CLI 将确保在每次运行后调用此钩子,但是 JavaScript API 的用户有责任在生成产物后手动调用 bundle.close()。因此,任何依赖此功能的插件都应在其文档中仔细提到这一点 - 需要手动维护资源的释放

修改为:

js 复制代码
 plugins: [
     ...其他插件
    copy({
      // 显示日志
      verbose: true,
      hook: 'closeBundle',
      targets: [
        { src: './package.json', dest: './lib' }
      ]
    }),
  ]
相关推荐
the局外人30 分钟前
掌控自己的 K 线数据:TradingView 本地部署与数据源接入
前端·vue.js·websocket
deli0071 小时前
配色对比度检查器:一眼看清文字和背景谁看不清
前端
梦诺1 小时前
vue3 keepAlive+记录滚动条
前端·javascript·vue.js
葡萄城技术团队1 小时前
SpreadJS V19.2 新特性揭秘:甘特表的进度线
前端
计算机魔术师1 小时前
黄仁勋台上接特朗普电话开免提,全场听到一句话:AI 不会减速
前端
yivifu2 小时前
HTML元素的textContent和innerText两个属性的差别
前端·html
Bs_MoneyMagnet2 小时前
基于springboot+vue的会议室预约管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
咸鱼老弟2 小时前
Speculative Decoding(投机采样):大模型"先猜后验",生成速度翻倍
前端·算法·ai编程
Bs_MoneyMagnet2 小时前
基于springboot+vue的茶铺管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
a1117762 小时前
网页版「MATLAB」开源
前端·开源