* 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
* 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>
* add nesting plugin
* rename @tailwindcss/nesting to tailwindcss/nesting
* ignore the built `nesting` plugin
* add a postcss7 compat version
* include `nesting` plugin when publishing
* add `build-plugins` script
This will allow us to keep the plugins in their dedicated folders +
tests + postcss7 compatibility files. However, when we copy over the
plugins to the root. For example `plugins/nesting/` -> `nesting/` we
skip files like `.test.js` and `.postcss7.js`.
* build plugins when running `prepublishOnly`
* improve compat mode
We will use a glob so that we can move all *.postcss7.* files to just
*.* likewise we will also backup to *.* to *.postcss8.* for restoring
purposes.
Concrete example:
- Current state:
- index.js // PostCSS 8 implementation
- index.postcss7.js // PostCSS 7 implementation
- Run "compat"
- index.js // PostCSS 7 implementation
- index.postcss7.js // PostCSS 7 implementation
- index.postcss8.js // PostCSS 8 implementation (Backup of original)
- Run "compat:restore"
- index.js // PostCSS 8 implementation
- index.postcss7.js // PostCSS 7 implementation
- X index.postcss8.js // PostCSS 8 implementation (Removed)
* Update README.md
* ensure we `npm install` before publishing
Co-authored-by: Adam Wathan <adam.wathan@gmail.com>
* use `~/.cache/tailwindcss` as default touch dir
When more tools catch up with the latest postcss dependency tracking,
then we probably don't even need this anymore. However, it is a good
practice to put (global) caches in ~/.cache and (global) configs in
~/.config
Fixes: #4569
* change test to verify @tailwind base slightly
Because of some changes in tailwind itself, the base selector contains a
ton of new --tw-* custom properties. Keeping this up to date might be a
bit of an annoying challenge. So instead we now check for the selector
to be present.
* add `tmp` package
* use a (simple) temporary file, instead of a full cache dir
* remove unused file
using syntax.js instead
* add a way to remove files that are generated from the tests
Essentially setting the restore cache contents to `null` as a special
value.
* combine the stdout and stderr output
* add jest-diff instead of relying on it existing *somewhere*
This also came with a small API change.
* add `--runInBand` to the test script
* add dedicated cli tests for the new Tailwind CLI