Extract license info outside of the JavaScript bundle
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
- [X] Follow our Code of Conduct
- [X] Read the Contributing Guidelines.
- [X] Read the docs.
- [X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
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
okay
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.
Thank you very much for implementing this @bluwy!