Open qtiki opened 2 years ago
Hey @qtiki! We really appreciate you taking the time to report an issue. The collaborators on this project attempt to help as many people as possible, but we're a limited number of volunteers, so it's possible this won't be addressed swiftly.
If you need any help, or just have general Babel or JavaScript questions, we have a vibrant Slack community that typically always has someone willing to help. You can sign-up here for an invite.
It seems that @babel/traverse
v7.17.10 has only this one commit which is probably the cause for this - or then the minify plugin needs to be updated somehow to accommodate for these changes (I'm not a Babel developer so I have no clue). FYI @JLHwung
Thanks for the report. This issue should be fixed in the minify plugin.
Before v7.17.10 Babel does not report this
as a pure expression, so dce will not try to remove _this = this
. However, after 7.17.0 we should check whether the original non-arrow scope is same with the replacement non-arrow scope. If they are same, we can safely replace _this
by this
, otherwise we should bail.
Note that deadcode
also suffers from https://github.com/babel/minify/issues/981, so I'd recommend simply disabling it (along with simplify
for https://github.com/babel/minify/issues/999 and builtIns
for https://github.com/babel/minify/issues/904 if you run into it).
Unfortunately this project appears to be unmaintained (the last commit was in August of 2020), so looking into other minifiers might also not be a bad idea.
Unfortunately this project appears to be unmaintained (the last commit was in August of 2020), so looking into other minifiers might also not be a bad idea.
This is quite bad. We have a build pipeline that relies on minify-replace
and minify-dead-code-elimination
working in tandem to have different compile targets. It's quite critical to us so just disabling deadcode elimination is not an option. I'll look into other options but basically this means that we'll need to stick to an older Babel version until we can work out a replacement.
💻
How are you using Babel?
@babel/cli
Input code
Reproduced in Babel REPL.
Configuration file name
No response
Configuration
No response
Current and expected behavior
Enabling
babel-plugin-minify-dead-code-elimination
plugin destroysthis
scope for arrow functions inside classes.The
var _this = this
workaround should not be eliminated as it is absolutely necessary for thethis
scope to work in locally defined arrow functions.Environment
Possible solution
No response
Additional context
I narrowed the problem down locally to
@babel/traverse
v7.17.10. By reverting that package to v7.17.9 this problem does not occur.