vite icon indicating copy to clipboard operation
vite copied to clipboard

Extract license info outside of the JavaScript bundle

Open nojaf opened this issue 1 year ago • 2 comments

Description

This is something between a bug and a feature I guess, but I notice that my JS bundle contains a lot of similar license code comments.

Sample: https://stackblitz.com/edit/vitejs-vite-k6vbhh?file=dist%2Fassets%2Findex-trimmed.js

After removing these with uglify-js I see about 20% file size decrease.

npx uglify-js ./dist/assets/index-DQVm2kVJ.js --output ./dist/assets/index-trimmed.js
-rw-rw-r--  1  staff  staff  475905  Aug  16  14:27  index-DQVm2kvJ.js    
-rw-rw-r--  1  staff  staff  371060  Aug  16  14:32  index-trimmed.js    

While these licenses are important, my average website visitor won't really bat an eye about this.

Suggested solution

I'm wondering if Vite could extract all the comments and place them into a license.txt file and link that in my bundled.js instead.

Alternative

I guess I can do post processing myself to deal with this.

Additional context

The firebase package does seem to bring a lot of very similar Google licenses. So you only have this problem based on what packages you use.

Validations

nojaf avatar Aug 16 '24 12:08 nojaf

I think esbuild is preserving @license comment by default https://esbuild.github.io/api/#legal-comments You can use esbuild.legalComments: "none" to strip all comments:

import { defineConfig } from 'vite';

export default defineConfig({
  esbuild: {
    legalComments: 'none',
  },
});

Probably what you want is esbuild.legalComments: "linked", but unfortunately this is not supported for Vite build since Vite uses esbuild to trasnform individual ~files~ chunks.

Not sure but maybe you can try other plugins to get back the licenses separately not from the code comment? something like https://github.com/mjeanroy/rollup-plugin-license

hi-ogawa avatar Aug 17 '24 01:08 hi-ogawa

okay

Ada541 avatar Aug 23 '24 11:08 Ada541

I'm personally inclined to mark this as an enhancement since it would be a nice default for Vite to auto manage and emit licenses when building apps.

bluwy avatar Sep 01 '24 14:09 bluwy

Thank you very much for implementing this @bluwy!

nojaf avatar Oct 22 '25 09:10 nojaf