stealjs/steal-tools

treeshaking force compiling to ES5

pYr0x opened this issue · 2 comments

pYr0x commented

Hey,
i had an issue with await and compiling to ES6. i used the new forceES5: false option to avoid compiling to ES5. it worked on stealjs (in the browser). But if i want to create a bundle, steal-tools will compile all my code to ES5, if treeshaking is on.
Here is my Slack issue: https://bitovi-community.slack.com/archives/CFDDX9MJS/p1582789198006000

And here is my demo: https://github.com/pYr0x/steal-es6
use npm run build to create a bundle. In the generated index.js i will find code like

var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {

which mean that that await is compiled to a es5 generator function

when you are working with es6 @pYr0x i can supply you a working rollup config with remove-steal and steal-resolve support at last for canjs it does not support the additional hackish steal imports like ~ or module/module while i am not really sure about the latest

but at last you could do a real es6+ build of canjs also using lebab to fix and clean the canjs source so that it is really working without double assignments to var names and all this object patching avoided.

it is not perfect as I still will need to do a complete independent fork of canjs to fix all the design issues. but it produces the best working es6 build of canjs that is possible today with that legacy code.

conclusion

if your modules are using real valid ECMAScript syntax for imports you can use rollup + myconfig to create awsome ESNext canjs bundels.

pYr0x commented

hey @frank-dspeed, it would be nice if you can share your rollup config in a github gist.