* change specific selector to universal selector
This is the commit that we could "undo" in the future if we need it
again.
* simplify `relative-purge-paths` test
This test doesn't require the "reset" selector (whether it is super specific or universal)
Simplified it so that it tests the relative purge config and nothing else.
* added css tagged template literal helpers
This allows prettier to format the string as CSS. This improves formatting and will improve future diffs.
* drop tailwind headers in the sanity tests
Every time we bump the Tailwind version, the sanity tests fail, because
the current version is encoded in the fixture files.
This will ensure that all of the contents is still checked and the
header is skipped. The header will be tested against a regex to ensure
that it is still there.
This should be a small but nice QoL improvement, so that we don't have
to think about updating those tests whenever we fix bugs or land new
features.
* Improve `purge` performance in layers mode
In layers mode, skip `purgecss` completely if source stylesheet does
not have any tailwind layers. For the legacy codebases with a lot of
non-tailwind stylesheets, it dratically improves the performance of
the production build.
* fix: purgecss should respect safelist.variables
* WIP
* run prettier
* drop new lines in custom matcher
Drop all newlines, let prettier handle everything for us.
* add cache for the selector parser
* add `@apply` tests for the universal optimizer
* drop comments
* initial replacements
* WIP
* WIP
* MAKE IT WORK
* Rename to resolveDefaultsAtRules
* Update tests + defaults identifiers
* Don't add @defaults in AOT mode
Co-authored-by: Robin Malfait <malfait.robin@gmail.com>
* Generate plugin list file
Removes the importing of all plugins in src/util/resolveConfig to avoid importing CSS.
Import the built plugin list file instead.
* Use `process.cwd()` instead of `__dirname` to resolve path
Co-authored-by: Federico Ciardi <fed.ciardi@gmail.com>
* Import core plugin list in resolveConfig test
* Generate plugin list prebabelify and on install
* Move generation from install to postinstall
Co-authored-by: Federico Ciardi <fed.ciardi@gmail.com>
Co-authored-by: Federico Ciardi <fed.ciardi@gmail.com>
We always use `none` for other utilities where the values have string names like `sm`, but for `blur` I chose `blur-0` for some idiotic reason. Can't have that.
* fix --help output in tests
* add tests to ensure we can use `purge.safelist`
* implement the `purge.safelist` for strings
* proxy `purge.safelist` to `purge.options.safelist`
This allows us to have a similar API in `AOT` and `JIT` mode.
* only proxy `purge.safelist` to `purge.options.safelist` if
`purge.options.safelist` doesn't exists yet.
* Fix issue where disabled corePlugins can't be re-enabled
* Disable caretColor and content core plugins by default, enable in JIT
* Don't disable caretColor/content in default config stub, hard-code for AOT instead
But with ability to still opt-in through your own config. Somewhat messy, but goal is to keep the messes in the AOT path and keep the JIT path pure.
* Fix style
* Revert unnecessary changes
* Fix style