Note, we are working on es6 modules for BuckleScript, which means you don't need google closure compiler for tree shaking, it will benefit webpack/rollup/browserify users too!
On Wed, Jan 25, 2017 at 10:56 AM, OvermindDL1 <[email protected]> wrote: > I use browserify for some code via brunch, rollup for others, I run both > of those through uglify + closure when building a 'prod' release. > browserify and rollup and both blazing fast in compile time with very > large bases of code, but rollup prunes based on functions called (meaning > it can break on dynamic name access, but that is rare) and browserify just > prunes based on module importing (which can break on dynamic module name > access, but that is also rare). uglify is just a minimizer but it does few > optimizations but runs fast, however Google's closure runs *very* slow, but > optimizes well, however higher optimization levels will ruin any code that > does any kind of dynamic key access that is not dict-like (it breaks elm > pretty hard last I tried it, but it works on my bucklescript code 'so far'). > > > On Wednesday, January 25, 2017 at 8:45:12 AM UTC-7, GordonBGood wrote: >> >> >> >> On Wednesday, 25 January 2017 22:25:39 UTC+7, OvermindDL1 wrote: >>> >>> Sent too soon. >>> >>> Also, uglify is a minimizer, it does a *lot* more than tree shaking. >>> >>> >>> On Wednesday, January 25, 2017 at 8:25:10 AM UTC-7, OvermindDL1 wrote: >>>> >>>> Tree Shaking as implemented by Brunch and Webpack default setups at >>>> least only prune based on if a module is accessed or not (which is also why >>>> it is easy to fool if you use a non-static string for the name). I've not >>>> seen any tree shaking yet that does otherwise. Although the fascinating >>>> rollup.js does a lot better by pruning functions very effectively, I need >>>> to try that one with Elm. :-) >>>> >>>> >>>> On Wednesday, January 25, 2017 at 2:55:18 AM UTC-7, Robin Heggelund >>>> Hansen wrote: >>>>> >>>>> >>>>> Actually tree shaking will do absolutely nothing for Elm code as Elm >>>>>> compiles everything into a single module that all highly indirectly >>>>>> references itself. It would help with bucklescript as it outputs >>>>>> modules, >>>>>> but bucklescript already tree-shakes as part of its compiler >>>>>> optimizations >>>>>> anyway. >>>>>> >>>>> >>>>> This is false. You are correct that Elm compiles everything into a >>>>> single module, but this means that tree-shaking becomes *easier*, not >>>>> harder. It also makes name-mangling much easier, as everything is >>>>> local-scope. With Elm code, tree-shaking can be done with Uglify.js. Just >>>>> tell uglify to warn you when it removes a function, and you'll see it >>>>> removes *a lot* of code. >>>>> >>>> >> I see there is the old Google Web Compiler, Browserify, Uglify, Rollup >> and I don'e know how many others. Has anyone compared them all and has any >> recommendations on which to use? If some such as Uglify and Rullup do so >> much more than just Tree Shaking, what are the disadvantages in their use, >> speed of "compilation"? >> > -- > You received this message because you are subscribed to a topic in the > Google Groups "Elm Discuss" group. > To unsubscribe from this topic, visit https://groups.google.com/d/ > topic/elm-discuss/Um7WIBTq9xU/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Regards -- Hongbo Zhang -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
