tailwindcss 0.0.0-insiders.dd06552 → 0.0.0-insiders.e292888
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +143 -3
- package/README.md +8 -4
- package/colors.js +2 -1
- package/defaultConfig.js +2 -1
- package/defaultTheme.js +2 -1
- package/lib/cli.js +115 -86
- package/lib/corePlugins.js +236 -351
- package/lib/css/preflight.css +4 -4
- package/lib/featureFlags.js +2 -3
- package/lib/index.js +1 -3
- package/lib/lib/collapseDuplicateDeclarations.js +52 -1
- package/lib/lib/defaultExtractor.js +42 -0
- package/lib/lib/evaluateTailwindFunctions.js +1 -1
- package/lib/lib/expandApplyAtRules.js +96 -47
- package/lib/lib/expandTailwindAtRules.js +48 -44
- package/lib/lib/generateRules.js +31 -4
- package/lib/lib/normalizeTailwindDirectives.js +8 -1
- package/lib/lib/partitionApplyAtRules.js +53 -0
- package/lib/lib/resolveDefaultsAtRules.js +26 -12
- package/lib/lib/setupContextUtils.js +83 -53
- package/lib/lib/setupTrackingContext.js +11 -10
- package/lib/lib/sharedState.js +33 -4
- package/lib/processTailwindFeatures.js +5 -2
- package/lib/util/color.js +23 -8
- package/lib/util/createPlugin.js +1 -2
- package/lib/util/createUtilityPlugin.js +4 -8
- package/lib/util/defaults.js +6 -0
- package/lib/util/flattenColorPalette.js +1 -3
- package/lib/util/log.js +4 -0
- package/lib/util/normalizeConfig.js +41 -13
- package/lib/util/normalizeScreens.js +6 -5
- package/lib/util/pluginUtils.js +6 -13
- package/lib/util/resolveConfig.js +26 -27
- package/lib/util/resolveConfigPath.js +1 -2
- package/lib/util/toColorValue.js +1 -2
- package/lib/util/toPath.js +6 -1
- package/lib/util/transformThemeValue.js +4 -8
- package/nesting/plugin.js +4 -1
- package/package.json +18 -20
- package/peers/index.js +771 -782
- package/plugin.js +2 -1
- package/resolveConfig.js +2 -1
- package/src/cli.js +57 -12
- package/src/corePlugins.js +161 -209
- package/src/css/preflight.css +4 -4
- package/src/featureFlags.js +1 -1
- package/src/index.js +1 -7
- package/src/lib/collapseDuplicateDeclarations.js +66 -1
- package/src/lib/defaultExtractor.js +48 -0
- package/src/lib/evaluateTailwindFunctions.js +1 -1
- package/src/lib/expandApplyAtRules.js +101 -45
- package/src/lib/expandTailwindAtRules.js +51 -34
- package/src/lib/generateRules.js +35 -2
- package/src/lib/normalizeTailwindDirectives.js +6 -1
- package/src/lib/partitionApplyAtRules.js +52 -0
- package/src/lib/resolveDefaultsAtRules.js +31 -10
- package/src/lib/setupContextUtils.js +74 -21
- package/src/lib/setupTrackingContext.js +11 -10
- package/src/lib/sharedState.js +40 -4
- package/src/processTailwindFeatures.js +6 -2
- package/src/util/color.js +20 -7
- package/src/util/defaults.js +6 -0
- package/src/util/log.js +4 -0
- package/src/util/normalizeConfig.js +20 -1
- package/src/util/normalizeScreens.js +6 -3
- package/src/util/pluginUtils.js +1 -1
- package/src/util/resolveConfig.js +11 -1
- package/src/util/toPath.js +23 -1
- package/stubs/defaultConfig.stub.js +2 -2
- package/lib/lib/setupWatchingContext.js +0 -288
- package/src/lib/setupWatchingContext.js +0 -311
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,133 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Show warnings for invalid content config ([#7065](https://github.com/tailwindlabs/tailwindcss/pull/7065))
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Only emit utility/component variants when those layers exist ([#7066](https://github.com/tailwindlabs/tailwindcss/pull/7066))
|
|
17
|
+
|
|
18
|
+
## [3.0.13] - 2022-01-11
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Fix consecutive builds with at apply producing different CSS ([#6999](https://github.com/tailwindlabs/tailwindcss/pull/6999))
|
|
23
|
+
|
|
24
|
+
## [3.0.12] - 2022-01-07
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- Allow use of falsy values in theme config ([#6917](https://github.com/tailwindlabs/tailwindcss/pull/6917))
|
|
29
|
+
- Ensure we can apply classes that are grouped with non-class selectors ([#6922](https://github.com/tailwindlabs/tailwindcss/pull/6922))
|
|
30
|
+
- Improve standalone CLI compatibility on Linux by switching to the `linuxstatic` build target ([#6914](https://github.com/tailwindlabs/tailwindcss/pull/6914))
|
|
31
|
+
- Ensure `@apply` works consistently with or without `@layer` ([#6938](https://github.com/tailwindlabs/tailwindcss/pull/6938))
|
|
32
|
+
- Only emit defaults when using base layer ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926))
|
|
33
|
+
- Emit plugin defaults regardless of usage ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926))
|
|
34
|
+
- Move default border color back to preflight ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926))
|
|
35
|
+
- Change `experimental.optimizeUniversalDefaults` to only work with `@tailwind base` ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926))
|
|
36
|
+
|
|
37
|
+
## [3.0.11] - 2022-01-05
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- Preserve casing of CSS variables added by plugins ([#6888](https://github.com/tailwindlabs/tailwindcss/pull/6888))
|
|
42
|
+
- Ignore content paths that are passed in but don't actually exist ([#6901](https://github.com/tailwindlabs/tailwindcss/pull/6901))
|
|
43
|
+
- Revert change that applies Tailwind's defaults in isolated environments like CSS modules ([9fdc391](https://github.com/tailwindlabs/tailwindcss/commit/9fdc391d4ff93e7e350f5ce439060176b1f0162f))
|
|
44
|
+
|
|
45
|
+
## [3.0.10] - 2022-01-04
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- Fix `@apply` in files without `@tailwind` directives ([#6580](https://github.com/tailwindlabs/tailwindcss/pull/6580), [#6875](https://github.com/tailwindlabs/tailwindcss/pull/6875))
|
|
50
|
+
- CLI: avoid unnecessary writes to output files ([#6550](https://github.com/tailwindlabs/tailwindcss/pull/6550))
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- Allow piping data into the CLI ([#6876](https://github.com/tailwindlabs/tailwindcss/pull/6876))
|
|
55
|
+
|
|
56
|
+
## [3.0.9] - 2022-01-03
|
|
57
|
+
|
|
58
|
+
### Fixed
|
|
59
|
+
|
|
60
|
+
- Improve `DEBUG` flag ([#6797](https://github.com/tailwindlabs/tailwindcss/pull/6797), [#6804](https://github.com/tailwindlabs/tailwindcss/pull/6804))
|
|
61
|
+
- Ensure we can use `<` and `>` characters in modifiers ([#6851](https://github.com/tailwindlabs/tailwindcss/pull/6851))
|
|
62
|
+
- Validate `theme()` works in arbitrary values ([#6852](https://github.com/tailwindlabs/tailwindcss/pull/6852))
|
|
63
|
+
- Properly detect `theme()` value usage in arbitrary properties ([#6854](https://github.com/tailwindlabs/tailwindcss/pull/6854))
|
|
64
|
+
- Improve collapsing of duplicate declarations ([#6856](https://github.com/tailwindlabs/tailwindcss/pull/6856))
|
|
65
|
+
- Remove support for `TAILWIND_MODE=watch` ([#6858](https://github.com/tailwindlabs/tailwindcss/pull/6858))
|
|
66
|
+
|
|
67
|
+
## [3.0.8] - 2021-12-28
|
|
68
|
+
|
|
69
|
+
### Fixed
|
|
70
|
+
|
|
71
|
+
- Reduce specificity of `abbr` rule in preflight ([#6671](https://github.com/tailwindlabs/tailwindcss/pull/6671))
|
|
72
|
+
- Support HSL with hue units in arbitrary values ([#6726](https://github.com/tailwindlabs/tailwindcss/pull/6726))
|
|
73
|
+
- Add `node16-linux-arm64` target for standalone CLI ([#6693](https://github.com/tailwindlabs/tailwindcss/pull/6693))
|
|
74
|
+
|
|
75
|
+
## [3.0.7] - 2021-12-17
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
|
|
79
|
+
- Don't mutate custom color palette when overriding per-plugin colors ([#6546](https://github.com/tailwindlabs/tailwindcss/pull/6546))
|
|
80
|
+
- Improve circular dependency detection when using `@apply` ([#6588](https://github.com/tailwindlabs/tailwindcss/pull/6588))
|
|
81
|
+
- Only generate variants for non-`user` layers ([#6589](https://github.com/tailwindlabs/tailwindcss/pull/6589))
|
|
82
|
+
- Properly extract classes with arbitrary values in arrays and classes followed by escaped quotes ([#6590](https://github.com/tailwindlabs/tailwindcss/pull/6590))
|
|
83
|
+
- Improve jsx interpolation candidate matching ([#6593](https://github.com/tailwindlabs/tailwindcss/pull/6593))
|
|
84
|
+
- Ensure `@apply` of a rule inside an AtRule works ([#6594](https://github.com/tailwindlabs/tailwindcss/pull/6594))
|
|
85
|
+
|
|
86
|
+
## [3.0.6] - 2021-12-16
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
|
|
90
|
+
- Support square bracket notation in paths ([#6519](https://github.com/tailwindlabs/tailwindcss/pull/6519))
|
|
91
|
+
- Ensure all plugins are executed for a given candidate ([#6540](https://github.com/tailwindlabs/tailwindcss/pull/6540))
|
|
92
|
+
|
|
93
|
+
## [3.0.5] - 2021-12-15
|
|
94
|
+
|
|
95
|
+
### Fixed
|
|
96
|
+
|
|
97
|
+
- Revert: add `li` to list-style reset ([9777562d](https://github.com/tailwindlabs/tailwindcss/commit/9777562da37ee631bbf77374c0d14825f09ef9af))
|
|
98
|
+
|
|
99
|
+
## [3.0.4] - 2021-12-15
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- Insert always-on defaults layer in correct spot ([#6526](https://github.com/tailwindlabs/tailwindcss/pull/6526))
|
|
104
|
+
|
|
105
|
+
## [3.0.3] - 2021-12-15
|
|
106
|
+
|
|
107
|
+
### Added
|
|
108
|
+
|
|
109
|
+
- Warn about invalid globs in `content` ([#6449](https://github.com/tailwindlabs/tailwindcss/pull/6449))
|
|
110
|
+
- Add standalone tailwindcss CLI ([#6506](https://github.com/tailwindlabs/tailwindcss/pull/6506))
|
|
111
|
+
- Add `li` to list-style reset ([00f60e6](https://github.com/tailwindlabs/tailwindcss/commit/00f60e61013c6e4e3419e4b699371a13eb30b75d))
|
|
112
|
+
|
|
113
|
+
### Fixed
|
|
114
|
+
|
|
115
|
+
- Don't output unparsable values ([#6469](https://github.com/tailwindlabs/tailwindcss/pull/6469))
|
|
116
|
+
- Fix text decoration utilities from overriding the new text decoration color/style/thickness utilities when used with a modifier ([#6378](https://github.com/tailwindlabs/tailwindcss/pull/6378))
|
|
117
|
+
- Move defaults to their own always-on layer ([#6500](https://github.com/tailwindlabs/tailwindcss/pull/6500))
|
|
118
|
+
- Support negative values in safelist patterns ([#6480](https://github.com/tailwindlabs/tailwindcss/pull/6480))
|
|
119
|
+
|
|
120
|
+
## [3.0.2] - 2021-12-13
|
|
121
|
+
|
|
122
|
+
### Fixed
|
|
123
|
+
|
|
124
|
+
- Temporarily disable optimize universal defaults, fixes issue with transforms/filters/rings not being `@apply`-able in CSS modules/Svelte components/Vue components ([#6461](https://github.com/tailwindlabs/tailwindcss/pull/6461))
|
|
125
|
+
|
|
126
|
+
## [3.0.1] - 2021-12-10
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
|
|
130
|
+
- Ensure complex variants with multiple classes work ([#6311](https://github.com/tailwindlabs/tailwindcss/pull/6311))
|
|
131
|
+
- Re-add `default` interop to public available functions ([#6348](https://github.com/tailwindlabs/tailwindcss/pull/6348))
|
|
132
|
+
- Detect circular dependencies when using `@apply` ([#6365](https://github.com/tailwindlabs/tailwindcss/pull/6365))
|
|
133
|
+
- Fix defaults optimization when vendor prefixes are involved ([#6369](https://github.com/tailwindlabs/tailwindcss/pull/6369))
|
|
134
|
+
|
|
135
|
+
## [3.0.0] - 2021-12-09
|
|
136
|
+
|
|
10
137
|
### Fixed
|
|
11
138
|
|
|
12
139
|
- Enforce the order of some variants (like `before` and `after`) ([#6018](https://github.com/tailwindlabs/tailwindcss/pull/6018))
|
|
@@ -14,7 +141,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
14
141
|
### Added
|
|
15
142
|
|
|
16
143
|
- Add `placeholder` variant ([#6106](https://github.com/tailwindlabs/tailwindcss/pull/6106))
|
|
17
|
-
- Add tuple syntax for configuring screens while guaranteeing order ([#5956](https://github.com/tailwindlabs/tailwindcss/pull/5956))
|
|
18
144
|
- Add composable `touch-action` utilities ([#6115](https://github.com/tailwindlabs/tailwindcss/pull/6115))
|
|
19
145
|
- Add support for "arbitrary properties" ([#6161](https://github.com/tailwindlabs/tailwindcss/pull/6161))
|
|
20
146
|
- Add `portrait` and `landscape` variants ([#6046](https://github.com/tailwindlabs/tailwindcss/pull/6046))
|
|
@@ -22,7 +148,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
22
148
|
- Add `menu` reset to preflight ([#6213](https://github.com/tailwindlabs/tailwindcss/pull/6213))
|
|
23
149
|
- Allow `0` as a valid `length` value ([#6233](https://github.com/tailwindlabs/tailwindcss/pull/6233), [#6259](https://github.com/tailwindlabs/tailwindcss/pull/6259))
|
|
24
150
|
- Add CSS functions to data types ([#6258](https://github.com/tailwindlabs/tailwindcss/pull/6258))
|
|
25
|
-
- Add CSS functions to data types ([#6258](https://github.com/tailwindlabs/tailwindcss/pull/6258))
|
|
26
151
|
- Support negative values for `scale-*` utilities ([c48e629](https://github.com/tailwindlabs/tailwindcss/commit/c48e629955585ad18dadba9f470fda59cc448ab7))
|
|
27
152
|
- Improve `length` data type, by validating each value individually ([#6283](https://github.com/tailwindlabs/tailwindcss/pull/6283))
|
|
28
153
|
|
|
@@ -49,6 +174,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
49
174
|
- Add `text-decoration-color` utilities ([#5760](https://github.com/tailwindlabs/tailwindcss/pull/5760))
|
|
50
175
|
- Add new declarative `addVariant` API ([#5809](https://github.com/tailwindlabs/tailwindcss/pull/5809))
|
|
51
176
|
- Add first-class `print` variant for targeting printed media ([#5885](https://github.com/tailwindlabs/tailwindcss/pull/5885))
|
|
177
|
+
- Add `outline-style`, `outline-color`, `outline-width` and `outline-offset` utilities ([#5887](https://github.com/tailwindlabs/tailwindcss/pull/5887))
|
|
52
178
|
- Add full color palette for `fill-*` and `stroke-*` utilities (#5933[](https://github.com/tailwindlabs/tailwindcss/pull/5933))
|
|
53
179
|
- Add composable API for colored box shadows ([#5979](https://github.com/tailwindlabs/tailwindcss/pull/5979))
|
|
54
180
|
|
|
@@ -1678,7 +1804,21 @@ No release notes
|
|
|
1678
1804
|
|
|
1679
1805
|
- Everything!
|
|
1680
1806
|
|
|
1681
|
-
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.
|
|
1807
|
+
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.13...HEAD
|
|
1808
|
+
[3.0.13]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.12...v3.0.13
|
|
1809
|
+
[3.0.12]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.11...v3.0.12
|
|
1810
|
+
[3.0.11]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.10...v3.0.11
|
|
1811
|
+
[3.0.10]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.9...v3.0.10
|
|
1812
|
+
[3.0.9]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.8...v3.0.9
|
|
1813
|
+
[3.0.8]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.7...v3.0.8
|
|
1814
|
+
[3.0.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.6...v3.0.7
|
|
1815
|
+
[3.0.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.5...v3.0.6
|
|
1816
|
+
[3.0.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.4...v3.0.5
|
|
1817
|
+
[3.0.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.3...v3.0.4
|
|
1818
|
+
[3.0.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.2...v3.0.3
|
|
1819
|
+
[3.0.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.1...v3.0.2
|
|
1820
|
+
[3.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0...v3.0.1
|
|
1821
|
+
[3.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.2...v3.0.0
|
|
1682
1822
|
[3.0.0-alpha.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.1...v3.0.0-alpha.2
|
|
1683
1823
|
[3.0.0-alpha.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.19...v3.0.0-alpha.1
|
|
1684
1824
|
[2.2.19]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.18...v2.2.19
|
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
<p>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
<a href="https://tailwindcss.com/#gh-light-mode-only" target="_blank">
|
|
3
|
+
<img src="./.github/logo-light.svg" alt="Tailwind CSS" width="350" height="70">
|
|
4
|
+
</a>
|
|
5
|
+
<a href="https://tailwindcss.com/#gh-dark-mode-only" target="_blank">
|
|
6
|
+
<img src="./.github/logo-dark.svg" alt="Tailwind CSS" width="350" height="70">
|
|
7
|
+
</a>
|
|
6
8
|
</p>
|
|
7
9
|
|
|
10
|
+
A utility-first CSS framework for rapidly building custom user interfaces.
|
|
11
|
+
|
|
8
12
|
<p>
|
|
9
13
|
<a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/workflow/status/tailwindlabs/tailwindcss/Node.js%20CI" alt="Build Status"></a>
|
|
10
14
|
<a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
|
package/colors.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
let colors = require('./lib/public/colors')
|
|
2
|
+
module.exports = (colors.__esModule ? colors : { default: colors }).default
|
package/defaultConfig.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
let defaultConfig = require('./lib/public/default-config')
|
|
2
|
+
module.exports = (defaultConfig.__esModule ? defaultConfig : { default: defaultConfig }).default
|
package/defaultTheme.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
let defaultTheme = require('./lib/public/default-theme')
|
|
2
|
+
module.exports = (defaultTheme.__esModule ? defaultTheme : { default: defaultTheme }).default
|
package/lib/cli.js
CHANGED
|
@@ -40,7 +40,26 @@ function formatNodes(root) {
|
|
|
40
40
|
root.first.raws.before = '';
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
function
|
|
43
|
+
async function outputFile(file, contents) {
|
|
44
|
+
if (_fs.default.existsSync(file) && await _fs.default.promises.readFile(file, 'utf8') === contents) {
|
|
45
|
+
return; // Skip writing the file
|
|
46
|
+
}
|
|
47
|
+
// Write the file
|
|
48
|
+
await _fs.default.promises.writeFile(file, contents, 'utf8');
|
|
49
|
+
}
|
|
50
|
+
function drainStdin() {
|
|
51
|
+
return new Promise((resolve, reject)=>{
|
|
52
|
+
let result = '';
|
|
53
|
+
process.stdin.on('data', (chunk)=>{
|
|
54
|
+
result += chunk;
|
|
55
|
+
});
|
|
56
|
+
process.stdin.on('end', ()=>resolve(result)
|
|
57
|
+
);
|
|
58
|
+
process.stdin.on('error', (err)=>reject(err)
|
|
59
|
+
);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function help({ message , usage , commands: commands1 , options }) {
|
|
44
63
|
let indent = 2;
|
|
45
64
|
// Render header
|
|
46
65
|
console.log();
|
|
@@ -61,17 +80,16 @@ function help({ message , usage , commands , options }) {
|
|
|
61
80
|
}
|
|
62
81
|
}
|
|
63
82
|
// Render commands
|
|
64
|
-
if (
|
|
83
|
+
if (commands1 && commands1.length > 0) {
|
|
65
84
|
console.log();
|
|
66
85
|
console.log('Commands:');
|
|
67
|
-
for (let
|
|
68
|
-
console.log(' '.repeat(indent),
|
|
86
|
+
for (let command1 of commands1){
|
|
87
|
+
console.log(' '.repeat(indent), command1);
|
|
69
88
|
}
|
|
70
89
|
}
|
|
71
90
|
// Render options
|
|
72
91
|
if (options) {
|
|
73
|
-
let groupedOptions = {
|
|
74
|
-
};
|
|
92
|
+
let groupedOptions = {};
|
|
75
93
|
for (let [key, value] of Object.entries(options)){
|
|
76
94
|
if (typeof value === 'object') {
|
|
77
95
|
groupedOptions[key] = {
|
|
@@ -86,12 +104,12 @@ function help({ message , usage , commands , options }) {
|
|
|
86
104
|
}
|
|
87
105
|
console.log();
|
|
88
106
|
console.log('Options:');
|
|
89
|
-
for (let { flags , description , deprecated } of Object.values(groupedOptions)){
|
|
107
|
+
for (let { flags: flags1 , description , deprecated } of Object.values(groupedOptions)){
|
|
90
108
|
if (deprecated) continue;
|
|
91
|
-
if (
|
|
92
|
-
console.log(' '.repeat(indent + 4 /* 4 = "-i, ".length */ ),
|
|
109
|
+
if (flags1.length === 1) {
|
|
110
|
+
console.log(' '.repeat(indent + 4 /* 4 = "-i, ".length */ ), flags1.slice().reverse().join(', ').padEnd(20, ' '), description);
|
|
93
111
|
} else {
|
|
94
|
-
console.log(' '.repeat(indent),
|
|
112
|
+
console.log(' '.repeat(indent), flags1.slice().reverse().join(', ').padEnd(24, ' '), description);
|
|
95
113
|
}
|
|
96
114
|
}
|
|
97
115
|
}
|
|
@@ -110,7 +128,7 @@ function oneOf(...options) {
|
|
|
110
128
|
manualParsing: true
|
|
111
129
|
});
|
|
112
130
|
}
|
|
113
|
-
let
|
|
131
|
+
let commands = {
|
|
114
132
|
init: {
|
|
115
133
|
run: init,
|
|
116
134
|
args: {
|
|
@@ -187,31 +205,31 @@ if (process.stdout.isTTY /* Detect redirecting output to a file */ && (process.
|
|
|
187
205
|
'tailwindcss [--input input.css] [--output output.css] [--watch] [options...]',
|
|
188
206
|
'tailwindcss init [--full] [--postcss] [options...]',
|
|
189
207
|
],
|
|
190
|
-
commands: Object.keys(
|
|
191
|
-
).map((
|
|
208
|
+
commands: Object.keys(commands).filter((command2)=>command2 !== 'build'
|
|
209
|
+
).map((command3)=>`${command3} [options]`
|
|
192
210
|
),
|
|
193
211
|
options: {
|
|
194
|
-
...
|
|
212
|
+
...commands.build.args,
|
|
195
213
|
...sharedFlags
|
|
196
214
|
}
|
|
197
215
|
});
|
|
198
216
|
process.exit(0);
|
|
199
217
|
}
|
|
200
|
-
let
|
|
218
|
+
let command = ((arg = '')=>arg.startsWith('-') ? undefined : arg
|
|
201
219
|
)(process.argv[2]) || 'build';
|
|
202
|
-
if (
|
|
203
|
-
if (_fs.default.existsSync(_path.default.resolve(
|
|
220
|
+
if (commands[command] === undefined) {
|
|
221
|
+
if (_fs.default.existsSync(_path.default.resolve(command))) {
|
|
204
222
|
// TODO: Deprecate this in future versions
|
|
205
223
|
// Check if non-existing command, might be a file.
|
|
206
|
-
|
|
224
|
+
command = 'build';
|
|
207
225
|
} else {
|
|
208
226
|
help({
|
|
209
|
-
message: `Invalid command: ${
|
|
227
|
+
message: `Invalid command: ${command}`,
|
|
210
228
|
usage: [
|
|
211
229
|
'tailwindcss <command> [options]'
|
|
212
230
|
],
|
|
213
|
-
commands: Object.keys(
|
|
214
|
-
).map((
|
|
231
|
+
commands: Object.keys(commands).filter((command4)=>command4 !== 'build'
|
|
232
|
+
).map((command5)=>`${command5} [options]`
|
|
215
233
|
),
|
|
216
234
|
options: sharedFlags
|
|
217
235
|
});
|
|
@@ -219,11 +237,11 @@ if (commands1[command1] === undefined) {
|
|
|
219
237
|
}
|
|
220
238
|
}
|
|
221
239
|
// Execute command
|
|
222
|
-
let { args:
|
|
223
|
-
let
|
|
240
|
+
let { args: flags , run } = commands[command];
|
|
241
|
+
let args = (()=>{
|
|
224
242
|
try {
|
|
225
243
|
let result = (0, _arg).default(Object.fromEntries(Object.entries({
|
|
226
|
-
...
|
|
244
|
+
...flags,
|
|
227
245
|
...sharedFlags
|
|
228
246
|
}).filter(([_key, value])=>{
|
|
229
247
|
var ref;
|
|
@@ -240,23 +258,23 @@ let args1 = (()=>{
|
|
|
240
258
|
let flag = result['_'][i];
|
|
241
259
|
if (!flag.startsWith('-')) continue;
|
|
242
260
|
let flagName = flag;
|
|
243
|
-
let handler =
|
|
261
|
+
let handler = flags[flag];
|
|
244
262
|
// Resolve flagName & handler
|
|
245
263
|
while(typeof handler === 'string'){
|
|
246
264
|
flagName = handler;
|
|
247
|
-
handler =
|
|
265
|
+
handler = flags[handler];
|
|
248
266
|
}
|
|
249
267
|
if (!handler) continue;
|
|
250
|
-
let
|
|
268
|
+
let args1 = [];
|
|
251
269
|
let offset = i + 1;
|
|
252
270
|
// Parse args for current flag
|
|
253
271
|
while(result['_'][offset] && !result['_'][offset].startsWith('-')){
|
|
254
|
-
|
|
272
|
+
args1.push(result['_'][offset++]);
|
|
255
273
|
}
|
|
256
274
|
// Cleanup manually parsed flags + args
|
|
257
|
-
result['_'].splice(i, 1 +
|
|
275
|
+
result['_'].splice(i, 1 + args1.length);
|
|
258
276
|
// Set the resolved value in the `result` object
|
|
259
|
-
result[flagName] = handler.type(
|
|
277
|
+
result[flagName] = handler.type(args1.length === 0 ? undefined : args1.length === 1 ? args1[0] : args1, flagName);
|
|
260
278
|
}
|
|
261
279
|
// Ensure that the `command` is always the first argument in the `args`.
|
|
262
280
|
// This is important so that we don't have to check if a default command
|
|
@@ -264,8 +282,8 @@ let args1 = (()=>{
|
|
|
264
282
|
//
|
|
265
283
|
// E.g.: tailwindcss input.css -> _: ['build', 'input.css']
|
|
266
284
|
// E.g.: tailwindcss build input.css -> _: ['build', 'input.css']
|
|
267
|
-
if (result['_'][0] !==
|
|
268
|
-
result['_'].unshift(
|
|
285
|
+
if (result['_'][0] !== command) {
|
|
286
|
+
result['_'].unshift(command);
|
|
269
287
|
}
|
|
270
288
|
return result;
|
|
271
289
|
} catch (err) {
|
|
@@ -282,14 +300,14 @@ let args1 = (()=>{
|
|
|
282
300
|
throw err;
|
|
283
301
|
}
|
|
284
302
|
})();
|
|
285
|
-
if (
|
|
303
|
+
if (args['--help']) {
|
|
286
304
|
help({
|
|
287
305
|
options: {
|
|
288
|
-
...
|
|
306
|
+
...flags,
|
|
289
307
|
...sharedFlags
|
|
290
308
|
},
|
|
291
309
|
usage: [
|
|
292
|
-
`tailwindcss ${
|
|
310
|
+
`tailwindcss ${command} [options]`
|
|
293
311
|
]
|
|
294
312
|
});
|
|
295
313
|
process.exit(0);
|
|
@@ -299,17 +317,17 @@ run();
|
|
|
299
317
|
function init() {
|
|
300
318
|
let messages = [];
|
|
301
319
|
var ref;
|
|
302
|
-
let tailwindConfigLocation = _path.default.resolve((ref =
|
|
320
|
+
let tailwindConfigLocation = _path.default.resolve((ref = args['_'][1]) !== null && ref !== void 0 ? ref : './tailwind.config.js');
|
|
303
321
|
if (_fs.default.existsSync(tailwindConfigLocation)) {
|
|
304
322
|
messages.push(`${_path.default.basename(tailwindConfigLocation)} already exists.`);
|
|
305
323
|
} else {
|
|
306
|
-
let stubFile = _fs.default.readFileSync(
|
|
324
|
+
let stubFile = _fs.default.readFileSync(args['--full'] ? _path.default.resolve(__dirname, '../stubs/defaultConfig.stub.js') : _path.default.resolve(__dirname, '../stubs/simpleConfig.stub.js'), 'utf8');
|
|
307
325
|
// Change colors import
|
|
308
326
|
stubFile = stubFile.replace('../colors', 'tailwindcss/colors');
|
|
309
327
|
_fs.default.writeFileSync(tailwindConfigLocation, stubFile, 'utf8');
|
|
310
328
|
messages.push(`Created Tailwind CSS config file: ${_path.default.basename(tailwindConfigLocation)}`);
|
|
311
329
|
}
|
|
312
|
-
if (
|
|
330
|
+
if (args['--postcss']) {
|
|
313
331
|
let postcssConfigLocation = _path.default.resolve('./postcss.config.js');
|
|
314
332
|
if (_fs.default.existsSync(postcssConfigLocation)) {
|
|
315
333
|
messages.push(`${_path.default.basename(postcssConfigLocation)} already exists.`);
|
|
@@ -327,37 +345,35 @@ function init() {
|
|
|
327
345
|
}
|
|
328
346
|
}
|
|
329
347
|
async function build() {
|
|
330
|
-
let input =
|
|
331
|
-
let output =
|
|
332
|
-
let shouldWatch =
|
|
333
|
-
let includePostCss =
|
|
348
|
+
let input = args['--input'];
|
|
349
|
+
let output = args['--output'];
|
|
350
|
+
let shouldWatch = args['--watch'];
|
|
351
|
+
let includePostCss = args['--postcss'];
|
|
334
352
|
// TODO: Deprecate this in future versions
|
|
335
|
-
if (!input &&
|
|
353
|
+
if (!input && args['_'][1]) {
|
|
336
354
|
console.error('[deprecation] Running tailwindcss without -i, please provide an input file.');
|
|
337
|
-
input =
|
|
355
|
+
input = args['--input'] = args['_'][1];
|
|
338
356
|
}
|
|
339
|
-
if (input && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
340
|
-
console.error(`Specified input file ${
|
|
357
|
+
if (input && input !== '-' && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
358
|
+
console.error(`Specified input file ${args['--input']} does not exist.`);
|
|
341
359
|
process.exit(9);
|
|
342
360
|
}
|
|
343
|
-
if (
|
|
344
|
-
console.error(`Specified config file ${
|
|
361
|
+
if (args['--config'] && !_fs.default.existsSync(args['--config'] = _path.default.resolve(args['--config']))) {
|
|
362
|
+
console.error(`Specified config file ${args['--config']} does not exist.`);
|
|
345
363
|
process.exit(9);
|
|
346
364
|
}
|
|
347
|
-
let configPath =
|
|
365
|
+
let configPath = args['--config'] ? args['--config'] : ((defaultPath)=>_fs.default.existsSync(defaultPath) ? defaultPath : null
|
|
348
366
|
)(_path.default.resolve('./tailwind.config.js'));
|
|
349
367
|
async function loadPostCssPlugins() {
|
|
350
|
-
let customPostCssPath = typeof
|
|
368
|
+
let customPostCssPath = typeof args['--postcss'] === 'string' ? args['--postcss'] : undefined;
|
|
351
369
|
let { plugins: configPlugins } = customPostCssPath ? await (async ()=>{
|
|
352
370
|
let file = _path.default.resolve(customPostCssPath);
|
|
353
371
|
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.0.1/src/index.js
|
|
354
|
-
let { config ={
|
|
355
|
-
} } = await (0, _cosmiconfig).cosmiconfig('postcss').load(file);
|
|
372
|
+
let { config ={} } = await (0, _cosmiconfig).cosmiconfig('postcss').load(file);
|
|
356
373
|
if (typeof config === 'function') {
|
|
357
374
|
config = config();
|
|
358
375
|
} else {
|
|
359
|
-
config = Object.assign({
|
|
360
|
-
}, config);
|
|
376
|
+
config = Object.assign({}, config);
|
|
361
377
|
}
|
|
362
378
|
if (!config.plugins) {
|
|
363
379
|
config.plugins = [];
|
|
@@ -383,20 +399,19 @@ async function build() {
|
|
|
383
399
|
];
|
|
384
400
|
}
|
|
385
401
|
function resolveConfig() {
|
|
386
|
-
let config = configPath ? require(configPath) : {
|
|
387
|
-
};
|
|
402
|
+
let config = configPath ? require(configPath) : {};
|
|
388
403
|
let resolvedConfig = (0, _resolveConfig).default(config);
|
|
389
|
-
if (
|
|
404
|
+
if (args['--purge']) {
|
|
390
405
|
_log.default.warn('purge-flag-deprecated', [
|
|
391
406
|
'The `--purge` flag has been deprecated.',
|
|
392
407
|
'Please use `--content` instead.',
|
|
393
408
|
]);
|
|
394
|
-
if (!
|
|
395
|
-
|
|
409
|
+
if (!args['--content']) {
|
|
410
|
+
args['--content'] = args['--purge'];
|
|
396
411
|
}
|
|
397
412
|
}
|
|
398
|
-
if (
|
|
399
|
-
resolvedConfig.content.files =
|
|
413
|
+
if (args['--content']) {
|
|
414
|
+
resolvedConfig.content.files = args['--content'].split(/(?<!{[^}]+),/);
|
|
400
415
|
}
|
|
401
416
|
return resolvedConfig;
|
|
402
417
|
}
|
|
@@ -457,17 +472,16 @@ async function build() {
|
|
|
457
472
|
let plugins = [
|
|
458
473
|
...beforePlugins,
|
|
459
474
|
tailwindPlugin,
|
|
460
|
-
!
|
|
475
|
+
!args['--minify'] && formatNodes,
|
|
461
476
|
...afterPlugins,
|
|
462
|
-
!
|
|
477
|
+
!args['--no-autoprefixer'] && (()=>{
|
|
463
478
|
// Try to load a local `autoprefixer` version first
|
|
464
479
|
try {
|
|
465
480
|
return require('autoprefixer');
|
|
466
|
-
} catch {
|
|
467
|
-
}
|
|
481
|
+
} catch {}
|
|
468
482
|
return (0, _indexJs).lazyAutoprefixer();
|
|
469
483
|
})(),
|
|
470
|
-
|
|
484
|
+
args['--minify'] && (()=>{
|
|
471
485
|
let options = {
|
|
472
486
|
preset: [
|
|
473
487
|
'default',
|
|
@@ -479,8 +493,7 @@ async function build() {
|
|
|
479
493
|
// Try to load a local `cssnano` version first
|
|
480
494
|
try {
|
|
481
495
|
return require('cssnano');
|
|
482
|
-
} catch {
|
|
483
|
-
}
|
|
496
|
+
} catch {}
|
|
484
497
|
return (0, _indexJs).lazyCssnano()(options);
|
|
485
498
|
})(),
|
|
486
499
|
].filter(Boolean);
|
|
@@ -499,10 +512,8 @@ async function build() {
|
|
|
499
512
|
return process.stdout.write(result.css);
|
|
500
513
|
}
|
|
501
514
|
return Promise.all([
|
|
502
|
-
|
|
503
|
-
),
|
|
504
|
-
result.map && _fs.default.writeFile(output + '.map', result.map.toString(), ()=>true
|
|
505
|
-
),
|
|
515
|
+
outputFile(output, result.css),
|
|
516
|
+
result.map && outputFile(output + '.map', result.map.toString()),
|
|
506
517
|
].filter(Boolean));
|
|
507
518
|
}).then(()=>{
|
|
508
519
|
let end = process.hrtime.bigint();
|
|
@@ -510,7 +521,18 @@ async function build() {
|
|
|
510
521
|
console.error('Done in', (end - start) / BigInt(1000000) + 'ms.');
|
|
511
522
|
});
|
|
512
523
|
}
|
|
513
|
-
let css1 =
|
|
524
|
+
let css1 = await (()=>{
|
|
525
|
+
// Piping in data, let's drain the stdin
|
|
526
|
+
if (input === '-') {
|
|
527
|
+
return drainStdin();
|
|
528
|
+
}
|
|
529
|
+
// Input file has been provided
|
|
530
|
+
if (input) {
|
|
531
|
+
return _fs.default.readFileSync(_path.default.resolve(input), 'utf8');
|
|
532
|
+
}
|
|
533
|
+
// No input file provided, fallback to default atrules
|
|
534
|
+
return '@tailwind base; @tailwind components; @tailwind utilities';
|
|
535
|
+
})();
|
|
514
536
|
return processCSS(css1);
|
|
515
537
|
}
|
|
516
538
|
let context = null;
|
|
@@ -541,17 +563,16 @@ async function build() {
|
|
|
541
563
|
let plugins = [
|
|
542
564
|
...beforePlugins,
|
|
543
565
|
'__TAILWIND_PLUGIN_POSITION__',
|
|
544
|
-
!
|
|
566
|
+
!args['--minify'] && formatNodes,
|
|
545
567
|
...afterPlugins,
|
|
546
|
-
!
|
|
568
|
+
!args['--no-autoprefixer'] && (()=>{
|
|
547
569
|
// Try to load a local `autoprefixer` version first
|
|
548
570
|
try {
|
|
549
571
|
return require('autoprefixer');
|
|
550
|
-
} catch {
|
|
551
|
-
}
|
|
572
|
+
} catch {}
|
|
552
573
|
return (0, _indexJs).lazyAutoprefixer();
|
|
553
574
|
})(),
|
|
554
|
-
|
|
575
|
+
args['--minify'] && (()=>{
|
|
555
576
|
let options = {
|
|
556
577
|
preset: [
|
|
557
578
|
'default',
|
|
@@ -563,8 +584,7 @@ async function build() {
|
|
|
563
584
|
// Try to load a local `cssnano` version first
|
|
564
585
|
try {
|
|
565
586
|
return require('cssnano');
|
|
566
|
-
} catch {
|
|
567
|
-
}
|
|
587
|
+
} catch {}
|
|
568
588
|
return (0, _indexJs).lazyCssnano()(options);
|
|
569
589
|
})(),
|
|
570
590
|
].filter(Boolean);
|
|
@@ -619,11 +639,9 @@ async function build() {
|
|
|
619
639
|
if (!output) {
|
|
620
640
|
return process.stdout.write(result.css);
|
|
621
641
|
}
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
),
|
|
625
|
-
result.map && _fs.default.writeFile(output + '.map', result.map.toString(), ()=>true
|
|
626
|
-
),
|
|
642
|
+
return Promise.all([
|
|
643
|
+
outputFile(output, result.css),
|
|
644
|
+
result.map && outputFile(output + '.map', result.map.toString()),
|
|
627
645
|
].filter(Boolean));
|
|
628
646
|
}).then(()=>{
|
|
629
647
|
let end = process.hrtime.bigint();
|
|
@@ -636,7 +654,18 @@ async function build() {
|
|
|
636
654
|
}
|
|
637
655
|
});
|
|
638
656
|
}
|
|
639
|
-
let css2 =
|
|
657
|
+
let css2 = await (()=>{
|
|
658
|
+
// Piping in data, let's drain the stdin
|
|
659
|
+
if (input === '-') {
|
|
660
|
+
return drainStdin();
|
|
661
|
+
}
|
|
662
|
+
// Input file has been provided
|
|
663
|
+
if (input) {
|
|
664
|
+
return _fs.default.readFileSync(_path.default.resolve(input), 'utf8');
|
|
665
|
+
}
|
|
666
|
+
// No input file provided, fallback to default atrules
|
|
667
|
+
return '@tailwind base; @tailwind components; @tailwind utilities';
|
|
668
|
+
})();
|
|
640
669
|
let result1 = await processCSS(css2);
|
|
641
670
|
env.DEBUG && console.timeEnd('Finished in');
|
|
642
671
|
return result1;
|