Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add @content support to @tailwindcss/postcss #14080

Merged

Conversation

RobinMalfait
Copy link
Member

This PR adds support for @content and makes sure that globs are registered within PostCSS.

From a configuration perspective nothing changes for the end user. It does however make sure that @content can be used and changes in those globs will be picked up.

@RobinMalfait RobinMalfait mentioned this pull request Jul 29, 2024
8 tasks
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-core branch 2 times, most recently from 2710729 to 105293e Compare July 30, 2024 08:48
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-postcss branch 2 times, most recently from 3fbc16c to 02a3a19 Compare July 30, 2024 10:35
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-core branch from 97683da to 1c1bbca Compare July 30, 2024 15:28
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-postcss branch from 02a3a19 to 3864fcc Compare July 30, 2024 15:31
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-core branch from 1c1bbca to fb8228e Compare July 30, 2024 16:06
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-postcss branch from 3864fcc to 5455349 Compare July 30, 2024 16:07
Base automatically changed from feat/add-content-support-to-core to feat/add-content-support August 1, 2024 16:00
An error occurred while trying to automatically change base from feat/add-content-support-to-core to feat/add-content-support August 1, 2024 16:00
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-postcss branch from 5455349 to a0fad5a Compare August 1, 2024 16:42
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-postcss branch from a0fad5a to 4cf2f52 Compare August 2, 2024 10:20
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-postcss branch 2 times, most recently from b3bf397 to c57ea64 Compare August 5, 2024 15:25
We also setup a sibling fixture project so that we can use `@content` to
include files that are not detected by the auto content detection.
We also made sure to store the actual "compiler" in the cache. This way
we keep track of both the `globs` and `build` function.

Whenever we need to do a full rebuild, we can create a new compiler
instance.
@RobinMalfait RobinMalfait force-pushed the feat/add-content-support-to-postcss branch from c57ea64 to f2d9ca8 Compare August 5, 2024 15:40
@RobinMalfait RobinMalfait merged commit ae6f79a into feat/add-content-support Aug 5, 2024
2 checks passed
@RobinMalfait RobinMalfait deleted the feat/add-content-support-to-postcss branch August 5, 2024 17:24
RobinMalfait added a commit that referenced this pull request Aug 7, 2024
This PR adds support for `@content` and makes sure that globs are
registered within PostCSS.

From a configuration perspective nothing changes for the end user. It
does however make sure that `@content` can be used and changes in those
globs will be picked up.
RobinMalfait added a commit that referenced this pull request Aug 7, 2024
This PR is an umbrella PR where we will add support for the new
`@source` directive. This will allow you to add explicit content glob
patterns if you want to look for Tailwind classes in other files that
are not automatically detected yet.

Right now this is an addition to the existing auto content detection
that is automatically enabled in the `@tailwindcss/postcss` and
`@tailwindcss/cli` packages. The `@tailwindcss/vite` package doesn't use
the auto content detection, but uses the module graph instead.

From an API perspective there is not a lot going on. There are only a
few things that you have to know when using the `@source` directive, and
you probably already know the rules:

1. You can use multiple `@source` directives if you want.
2. The `@source` accepts a glob pattern so that you can match multiple
files at once
3. The pattern is relative to the current file you are in
4. The pattern includes all files it is matching, even git ignored files
1. The motivation for this is so that you can explicitly point to a
`node_modules` folder if you want to look at `node_modules` for whatever
reason.
6. Right now we don't support negative globs (starting with a `!`) yet,
that will be available in the near future.

Usage example:

```css
/* ./src/input.css */
@import "tailwindcss";
@source "../laravel/resources/views/**/*.blade.php";
@source "../../packages/monorepo-package/**/*.js";
```

It looks like the PR introduced a lot of changes, but this is a side
effect of all the other plumbing work we had to do to make this work.
For example:

1. We added dedicated integration tests that run on Linux and Windows in
CI (just to make sure that all the `path` logic is correct)
2. We Have to make sure that the glob patterns are always correct even
if you are using `@import` in your CSS and use `@source` in an imported
file. This is because we receive the flattened CSS contents where all
`@import`s are inlined.
3. We have to make sure that we also listen for changes in the files
that match any of these patterns and trigger a rebuild.

PRs:

- [x] #14063
- [x] #14085
- [x] #14079
- [x] #14067
- [x] #14076
- [x] #14080
- [x] #14127
- [x] #14135

Once all the PRs are merged, then this umbrella PR can be merged. 

> [!IMPORTANT]  
> Make sure to merge this without rebasing such that each individual PR
ends up on the main branch.

---------

Co-authored-by: Philipp Spiess <[email protected]>
Co-authored-by: Jordan Pittman <[email protected]>
Co-authored-by: Adam Wathan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants