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.
This PR makes the TailwindCSS plugin be able to resolve libraries to include components into it's building process.
How does it work?
And advanced feature of tailwind is being able to receive the JSX file content directly, instead of only the file path. This allow us to pass any content we wish (not only those presents on the filesystem).
Using the aforementioned feature, I created a file resolver, where for all
.tsx
files present on the local project's filesystem, I parse the file into an AST, grab the import statements, and resolve these imports using the project's import map. Then, I do this process recursively up until all files on the import graph are visited. This is very similar to how we process the project's schema.Finally, I create an array with all file contents and pass it to the tailwind engine.
The nice side effect is that this doesn't depend on any deco abstraction. This is a file-only abstraction