Minify js
Default behavior
by default, odoo minifies files very poorly. Just removing spaces and one more little thing.With this function
Of course, we can reduce the size of the js code at times, for example, by replacing the names of functions and variables. For example
to
Yes, such code will be impossible to read. But we don't need it in production.
Minify tool uglifyjs
There are many minifiers and they don't work out of the box. It is necessary to describe exceptions which names cannot be replaced. Obviously, these are "odoo", "require" and others. Having found all the keywords, we could include it in the odoo core. So far I have achieved a working result for renaming variables
uglifyjs "web.assets_common_lazy.js" -m reserved=["$","require","export","odoo","define","odoo.define"] -o web.assets_common_lazy_unglify.js
we will get a reduction in from 1200kb to 900Kb. And if we also reduce the names of functions and properties, we get 500kb. But it's more complicated the script will start to break
Result
Just replace our attachment in settings-attachments "web.assets_common_lazy.js" bundle with a minified "web.assets_common_lazy_unglify.js" one and it works!
But do not forget that the bundle can be reassembled. This happens when we update or install a new module that adds js code to the bundle via xml. Or we will press the regenerate bundles button manually. And you will need to minify it again and overwrite it.