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.

Reply via email to