Alternative Approaches
Here is a precise comparison between the alternative approaches that have been practised over the years.

Comparison Table

Publishing Legacy Code
Publishing Modern Code
Publishing Compiled Code
Publishing Editions
Published source code
Yes
Yes
No
Yes
Published compiled code
No
No
Yes
Yes
Source and compiled code is published
No
No
Yes, however is difficult and non-standardised
Yes
Producers can make use of modern features (e.g. esnext, babel)
No
Yes, however at the cost of environments that don’t support those features
Yes
Yes
Consumers can make use of modern features (e.g. es modules, flow type)
No
Yes, however at the cost of consumers that don’t support those features
Yes, however is difficult and non-standardised
Yes
Consumption always runs latest compatible code
No, legacy code always used, even on modern environments
No, modern code may not be compatible with legacy environments
Yes, however is difficult and non-standardised
Yes, loaders can automatically load appropriate edition for target environment
Legacy bloat consumed on modern environments
Yes
No
No, however is difficult and non-standardised
No
Modern features could break legacy consumption
No
Yes
No
No
Fixing legacy consumption breaks is easy
No, likely requires manual code changes or polyfill
No, likely requires code rewrite or compilation
Yes, change is a compiler flag
Yes, change is a compiler flag
Consumers informed about this
Yes, however is difficult and non-standardised
Yes, however is difficult and non-standardised
Yes, however is difficult and non-standardised
Yes, renderers automatically inform consumers of their options

Copy link