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

如何在Vite-React项目npm构建时移除@license注释(将手动添加)

解决Vite构建中Firebase重复@license注释的问题

方案1:通过Esbuild直接移除所有法律注释

Vite默认使用Esbuild进行生产构建,你可以通过配置legalComments选项直接移除所有包含@license的注释:

修改你的vite.config.js/vite.config.ts:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  build: {
    esbuild: {
      // 完全移除所有法律相关注释(包括重复的@license)
      legalComments: 'none'
    }
  }
});

这个方式最简单,适合你仅自用的场景,之后可以手动添加唯一的许可证声明到构建产物中。

方案2:用Terser精细控制,只保留一份@license注释

如果需要保留至少一份许可证注释而移除重复项,可切换到Terser压缩器(Esbuild暂不支持合并重复注释):

  1. 先安装Terser依赖:
npm install -D terser
  1. 修改Vite配置,启用Terser并自定义注释过滤逻辑:
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  build: {
    minify: 'terser',
    terserOptions: {
      output: {
        comments: (node, comment) => {
          // 仅保留首次出现的@license注释,后续重复的直接移除
          if (comment.type === 'comment2' && comment.value.includes('@license')) {
            if (!globalThis._hasLicense) {
              globalThis._hasLicense = true;
              return true;
            }
            return false;
          }
          // 如需保留其他类型注释可调整此处,否则返回false移除所有其他注释
          return false;
        }
      }
    }
  }
});

注意事项

  • 你的原有构建命令vite build --emptyOutDir --base=./无需修改,配置生效后直接执行即可。
  • 由于你是仅供自用,移除/合并注释不存在合规问题;若后续需要分发项目,记得手动添加完整的唯一许可证声明。

内容的提问来源于stack exchange,提问作者SKB_BGPL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:12:15