Comments (7)
Proof of concept using iltorb:
let brotliCompress = require('iltorb').compress;
...
new CompressionPlugin({
asset: "[path].br",
algorithm: function (buf, options, callback) {
brotliCompress(buf, {
mode: 0, // 0 = generic, 1 = text, 2 = font (WOFF2)
quality: 11, // 0 - 11
lgwin: 22, // window size
lgblock: 0 // block size
}, callback);
},
threshold: 0,
minRatio: 1
});
from compression-webpack-plugin.
There exists a JS version of the brotli compressor and decompressor: brotli.js. Would it be possible to integrate that one?
from compression-webpack-plugin.
For this it would be useful to have multiple outputs as well e.g. brotli + zopfli so that in one plugin step both "files" could be created for widest possible client support.
(Also another obvious requirement would be multiple parallel file processing aka workers(/threads as both algos are pretty slow)
from compression-webpack-plugin.
We consider testing and documenting how to use third party algos (brotli, zopfli, guetzli, ...) with this plugin and by default ship zlib (gzip) only, mainly bc of native modules support
new CompressionPlugin({
asset: "[path].[compression].[ext]",
algorithm: function (buffer, options, cb) { ...third party implementation here... }
})
Also another obvious requirement would be multiple parallel file processing aka workers(/threads as both algos are pretty slow
@swernerx If you have a solution in mind send PR highly welcome and appreciated 😛
from compression-webpack-plugin.
@swernerx - We were just discussing this. Some if not most of these libs have varying system & compilation requirements making adding X
number of compression libs problematic at best. They are also far from tiny on disk.
We are going the other direction with all of this, node-zopfli
is going to be split into it's own compression plugin. The existing compression-webpack-plugin
with handle compression with gzip, those wanting to use zopfli
will have a new lib with an identical API and none of the optional dependency annoyances or the ever growing list of algorithms people want to use.
from compression-webpack-plugin.
I am currently using https://www.npmjs.com/package/shrink-ray-current to get br compression on everything. I like that it returns appropriate dynamic compression for the initial response and then asynchronously recompresses with max compression for subsequent requests. Still, I found this thread because I would ideally like to br compress all assets with max compression at build time. I think it would be helpful readme had an example, to quote swernerx, of multiple outputs (brotli + zopfli) so that in one plugin step both "files" could be created for widest possible client support.
from compression-webpack-plugin.
node 11.7 (should be released any day now) will have native support for brotli compression.
from compression-webpack-plugin.
Related Issues (20)
- Getting error TS1005: '?' expected HOT 2
- Always 404, I don't know why, HOT 2
- gzipped css not updated in html file HOT 19
- compress images not work HOT 2
- TypeError: Cannot read properties of undefined (reading 'tapPromise') HOT 1
- Allow usage of 6.x version without md4 HOT 4
- ERROR in Conflict: Multiple assets emit different content to the same filename css/.gz HOT 1
- Restoring failed for CompressionWebpackPlugin; HookWebpackError: this._obj.updateHash is not a function HOT 5
- Some of the files ignored during build compression HOT 10
- How to do this compression from express? HOT 1
- How to use deleteOriginalAssets is true ? HOT 2
- Compressed build now working on browser HOT 6
- Version 6 (for Webpack 4) does not work on Node 18+ HOT 10
- Let users exclude files or folder from deleting original assets. HOT 1
- Compression-webpack-plugin running before HtmlCriticalWebpackPlugin completes. HOT 2
- Ability to exclude files from deletion after zipping. HOT 1
- Type definition `BasePluginOptions` property `test` should use `Rules`, not `Rule`
- compression-webpack-plugin .woff compression is not supported HOT 3
- Bug: `deleteOriginalAssets: true` removes the `.js.LICENSE.txt` files HOT 3
- Bug: `deleteOrigianlAssets: true` breaks the build badly... HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from compression-webpack-plugin.