refactor: replace import helper#726
Merged
huozhi merged 9 commits intovercel:masterfrom Aug 5, 2021
Merged
Conversation
giuseppeg
reviewed
Aug 4, 2021
giuseppeg
approved these changes
Aug 5, 2021
|
🎉 This PR is included in version 3.4.7 🎉 The release is available on: Your semantic-release bot 📦🚀 |
TrySound
pushed a commit
to TrySound/styled-jsx
that referenced
this pull request
Aug 6, 2021
* enhance: use raw imports injection * rm cjs test * remove import path if unused * fix lint * let cjs plugin handle imports * update snapshots * more test as example * only inject at exit
|
🎉 This PR is included in version 4.0.0-alpha.4 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Use import expression injection to replace with
@babel/helper-module-importsCurrently styled-jsx has inconsistence behavior between
styled-jsx/styleandstyled-jsx/cssimports.addDefaulthelper will emitstyled-jsx/stylecode based on babelsourceType, butresolvetags imported fromstyled-jsx/cssaren't handled if it's insourceType="script"modeFor example, the code below won't be transpiled
But any
<style jsx>usage in commonjs module will be transpiled and inject the imports/require.Import declarations can be easily captured in AST traversal, but require expressions (w/ or w/o module interop) is hard to be captured. Such as
styled-jsx/cssis using this way to transpilecssrelated usages.It's better to only support ESM transform and let other plugin for example (commonjs plugin) to handle the ESM to CJS transform.
Suggested Usage
Use ESModule syntax for jsx styles. If you want to transformed to CJS, use commonjs plugin