You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否让Rollup将依赖许可证分离为独立文件而非嵌入主包?

实现Rollup(Vite)将依赖许可证拆分至独立文件的方案

完全可行,通过Rollup插件可以实现和Webpack一致的许可证拆分效果,具体步骤如下:

核心方案:使用rollup-plugin-license插件

这是专门用于提取和管理依赖许可证的Rollup插件,支持自定义输出格式和路径,完美适配Vite项目。

1. 安装插件

在项目中安装开发依赖:

npm install rollup-plugin-license --save-dev
# 或使用pnpm/yarn
pnpm add rollup-plugin-license -D
yarn add rollup-plugin-license -D

2. 配置Vite项目

在vite.config.js或vite.config.ts中添加插件配置:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react'; // 以React项目为例,其他框架同理
import LicensePlugin from 'rollup-plugin-license';
import path from 'path';

export default defineConfig({
  plugins: [
    react(),
    LicensePlugin({
      // 生成主许可证文件
      output: {
        file: path.join(__dirname, 'dist/licenses.txt'),
        // 自定义许可证信息格式,可按需调整
        template: (deps) => deps.map(dep => 
          `${dep.name}@${dep.version}
许可证类型: ${dep.license}
----------------------------------------`
        ).join('\n')
      },
      // 可选:拆分第三方依赖许可证到单独文件
      thirdParty: {
        output: {
          file: path.join(__dirname, 'dist/third-party-licenses.txt')
        }
      },
      // 可选:过滤不需要处理的依赖
      exclude: ['@internal/*']
    })
  ]
});

3. 验证效果

执行构建命令后,dist目录下会生成指定的许可证文本文件,主包体积会明显减小(不再包含嵌入的许可证内容),达到和Webpack一致的拆分效果。

注意事项

  • 确保插件版本与当前Vite/Rollup版本兼容,若出现适配问题可调整插件版本;
  • 自定义模板时可简化内容(比如只保留依赖名称、版本和许可证类型),进一步缩小许可证文件体积;
  • TypeScript项目可安装@types/rollup-plugin-license获得类型提示。

内容的提问来源于stack exchange,提问作者Dev-Siri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:40:39