First meeting of 2019!
- We have a plugin
@babel/parser
for ESTree already but it was created forbabel-eslint
specifically - Would be a pain for plugin authors (maybe more confusion) and a breaking change for Babel 8 (it seems better to switch everything over but is that worth it, both internally and for the community?) In an ideal world yes.
- Brings up the general question of how to handle breaking changes in experimental features (decorators)
- There is a tool to convert ESTree AST to Babel AST: https://github.com/coderaiser/estree-to-babel
Conclusion: Let's reject it for now.
- Should we throw when no config is found?
- Some user intentionally specify a config
- Should we fallback to a config, like
@babel/parser
?- Note that the default config has no plugins
- Babel does silently skip when no config file is found and falls back to the empty config
- What should the UX be?
- Get an error because of unsupported syntax?
- Get an error because no config was found?
- We can start with a restricted check and release it in a minor version later
- Most users of Babel probably have a config file at the root of their project, might be an edge case.
Conclusion: Each time babel-eslint
parses a file and no corresponding config file is found, an error will be thrown with an optional opt-out. (this should be an edge case)
- We can't use
core-js@3
by default in Babel, because we are using ??? hoisted version. - We tried to mitigate that in Babel 7 because we told users to install core-js@3 directly
- Probably the only option is to have flags to opt-in into core-js@3.
- The problem is only in babel-preset-env since Babel itself doesn't depend on core-js (it's relying on it being hoisted from
@babel/polyfill
). - If we maintain regenerator, we could turn it into a normal helper.
- We could have another entrypoint in
@babel/polyfill
.
Conclusion: Release a specific version of @babel/polyfill
with core-js@3
, but that would still be a breaking change and we should have a way to opt-in. So deprecate the @babel/polyfill
in favor of core-js@3? Do whatever we need to allow users to use core-js@3
without breaking in Babel 7 until a Babel 8 (which won't take as long as v7 did)
Two major proposal/syntax features to merge/review.
Review these PRs offline, and let's write a blog post before the release.
Conclusion: Pinned issue for next release: babel/babel#9334
- We should update
@babel/template
and call sites in Babel - Could make
@babel/template
more powerful or even more used vs. manual - Francisco: more about the features not any particular implementation suggestion.
- Use case: allow babel templates to have arbitrary user input (not internal, static usage) and worry less about name clashes
- Environment variables, but with syntactic support. User can store their secrets and would be replaced by
@babel/template
.
- Placeholder should survive through transforms (at the end)
- Workaround: also possible to just use the parser (done), replace the nodes with a regular identifier and add a special attribute on the node. At the end, a plugin to handle placeholder nodes (with that attribute).
Conclusions: Finish up parsing support for placeholders, save the more complex ideas after trying it out and seeing what happens.
Maybe integrating Test262 for transforms:
- Knowing current status of coverage is useful
- It's also a way for new contributors: a singular task (a bug fix)
- Using it for preset-env
- Verifying tests are correct ourselves
- Documentation on what isn't* supported (maybe on the website) - being able to be more specific about "loose" mode