tailwindcss 0.0.0-insiders.89c7f7d → 0.0.0-insiders.8e0ccda
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 +135 -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 +107 -70
- package/lib/corePlugins.js +170 -214
- package/lib/css/preflight.css +4 -4
- package/lib/featureFlags.js +1 -1
- 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 +22 -33
- package/lib/lib/generateRules.js +23 -2
- package/lib/lib/normalizeTailwindDirectives.js +8 -1
- package/lib/lib/resolveDefaultsAtRules.js +26 -12
- package/lib/lib/setupContextUtils.js +162 -66
- package/lib/lib/setupTrackingContext.js +11 -10
- package/lib/lib/sharedState.js +33 -4
- package/lib/processTailwindFeatures.js +3 -2
- package/lib/util/color.js +23 -8
- package/lib/util/dataTypes.js +14 -3
- package/lib/util/defaults.js +6 -0
- package/lib/util/log.js +4 -0
- package/lib/util/normalizeConfig.js +34 -5
- package/lib/util/normalizeScreens.js +5 -2
- package/lib/util/pluginUtils.js +1 -1
- package/lib/util/resolveConfig.js +17 -9
- package/lib/util/toPath.js +6 -1
- package/package.json +19 -19
- package/peers/index.js +1414 -1334
- package/plugin.js +2 -1
- package/resolveConfig.js +2 -1
- package/src/cli.js +57 -12
- package/src/corePlugins.js +177 -221
- 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 +24 -31
- package/src/lib/generateRules.js +29 -2
- package/src/lib/normalizeTailwindDirectives.js +6 -1
- package/src/lib/resolveDefaultsAtRules.js +31 -10
- package/src/lib/setupContextUtils.js +145 -23
- package/src/lib/setupTrackingContext.js +11 -10
- package/src/lib/sharedState.js +40 -4
- package/src/processTailwindFeatures.js +4 -2
- package/src/util/color.js +20 -7
- package/src/util/dataTypes.js +11 -6
- package/src/util/defaults.js +6 -0
- package/src/util/log.js +4 -0
- package/src/util/normalizeConfig.js +14 -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,121 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
- Nothing yet!
|
|
11
|
+
|
|
12
|
+
## [3.0.12] - 2022-01-07
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Allow use of falsy values in theme config ([#6917](https://github.com/tailwindlabs/tailwindcss/pull/6917))
|
|
17
|
+
- Ensure we can apply classes that are grouped with non-class selectors ([#6922](https://github.com/tailwindlabs/tailwindcss/pull/6922))
|
|
18
|
+
- Improve standalone CLI compatibility on Linux by switching to the `linuxstatic` build target ([#6914](https://github.com/tailwindlabs/tailwindcss/pull/6914))
|
|
19
|
+
- Ensure `@apply` works consistently with or without `@layer` ([#6938](https://github.com/tailwindlabs/tailwindcss/pull/6938))
|
|
20
|
+
- Only emit defaults when using base layer ([#6906](https://github.com/tailwindlabs/tailwindcss/pull/6906))
|
|
21
|
+
- Emit plugin defaults regardless of usage ([#6906](https://github.com/tailwindlabs/tailwindcss/pull/6906))
|
|
22
|
+
- Move default border color back to preflight ([#6906](https://github.com/tailwindlabs/tailwindcss/pull/6906))
|
|
23
|
+
- Change `experimental.optimizeUniversalDefaults` to only work with `@tailwind base` ([#6906](https://github.com/tailwindlabs/tailwindcss/pull/6906))
|
|
24
|
+
|
|
25
|
+
## [3.0.11] - 2022-01-05
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- Preserve casing of CSS variables added by plugins ([#6888](https://github.com/tailwindlabs/tailwindcss/pull/6888))
|
|
30
|
+
- Ignore content paths that are passed in but don't actually exist ([#6901](https://github.com/tailwindlabs/tailwindcss/pull/6901))
|
|
31
|
+
- Revert change that applies Tailwind's defaults in isolated environments like CSS modules ([9fdc391](https://github.com/tailwindlabs/tailwindcss/commit/9fdc391d4ff93e7e350f5ce439060176b1f0162f))
|
|
32
|
+
|
|
33
|
+
## [3.0.10] - 2022-01-04
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Fix `@apply` in files without `@tailwind` directives ([#6580](https://github.com/tailwindlabs/tailwindcss/pull/6580), [#6875](https://github.com/tailwindlabs/tailwindcss/pull/6875))
|
|
38
|
+
- CLI: avoid unnecessary writes to output files ([#6550](https://github.com/tailwindlabs/tailwindcss/pull/6550))
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- Allow piping data into the CLI ([#6876](https://github.com/tailwindlabs/tailwindcss/pull/6876))
|
|
43
|
+
|
|
44
|
+
## [3.0.9] - 2022-01-03
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- Improve `DEBUG` flag ([#6797](https://github.com/tailwindlabs/tailwindcss/pull/6797), [#6804](https://github.com/tailwindlabs/tailwindcss/pull/6804))
|
|
49
|
+
- Ensure we can use `<` and `>` characters in modifiers ([#6851](https://github.com/tailwindlabs/tailwindcss/pull/6851))
|
|
50
|
+
- Validate `theme()` works in arbitrary values ([#6852](https://github.com/tailwindlabs/tailwindcss/pull/6852))
|
|
51
|
+
- Properly detect `theme()` value usage in arbitrary properties ([#6854](https://github.com/tailwindlabs/tailwindcss/pull/6854))
|
|
52
|
+
- Improve collapsing of duplicate declarations ([#6856](https://github.com/tailwindlabs/tailwindcss/pull/6856))
|
|
53
|
+
- Remove support for `TAILWIND_MODE=watch` ([#6858](https://github.com/tailwindlabs/tailwindcss/pull/6858))
|
|
54
|
+
|
|
55
|
+
## [3.0.8] - 2021-12-28
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
|
|
59
|
+
- Reduce specificity of `abbr` rule in preflight ([#6671](https://github.com/tailwindlabs/tailwindcss/pull/6671))
|
|
60
|
+
- Support HSL with hue units in arbitrary values ([#6726](https://github.com/tailwindlabs/tailwindcss/pull/6726))
|
|
61
|
+
- Add `node16-linux-arm64` target for standalone CLI ([#6693](https://github.com/tailwindlabs/tailwindcss/pull/6693))
|
|
62
|
+
|
|
63
|
+
## [3.0.7] - 2021-12-17
|
|
64
|
+
|
|
65
|
+
### Fixed
|
|
66
|
+
|
|
67
|
+
- Don't mutate custom color palette when overriding per-plugin colors ([#6546](https://github.com/tailwindlabs/tailwindcss/pull/6546))
|
|
68
|
+
- Improve circular dependency detection when using `@apply` ([#6588](https://github.com/tailwindlabs/tailwindcss/pull/6588))
|
|
69
|
+
- Only generate variants for non-`user` layers ([#6589](https://github.com/tailwindlabs/tailwindcss/pull/6589))
|
|
70
|
+
- Properly extract classes with arbitrary values in arrays and classes followed by escaped quotes ([#6590](https://github.com/tailwindlabs/tailwindcss/pull/6590))
|
|
71
|
+
- Improve jsx interpolation candidate matching ([#6593](https://github.com/tailwindlabs/tailwindcss/pull/6593))
|
|
72
|
+
- Ensure `@apply` of a rule inside an AtRule works ([#6594](https://github.com/tailwindlabs/tailwindcss/pull/6594))
|
|
73
|
+
|
|
74
|
+
## [3.0.6] - 2021-12-16
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
|
|
78
|
+
- Support square bracket notation in paths ([#6519](https://github.com/tailwindlabs/tailwindcss/pull/6519))
|
|
79
|
+
- Ensure all plugins are executed for a given candidate ([#6540](https://github.com/tailwindlabs/tailwindcss/pull/6540))
|
|
80
|
+
|
|
81
|
+
## [3.0.5] - 2021-12-15
|
|
82
|
+
|
|
83
|
+
### Fixed
|
|
84
|
+
|
|
85
|
+
- Revert: add `li` to list-style reset ([9777562d](https://github.com/tailwindlabs/tailwindcss/commit/9777562da37ee631bbf77374c0d14825f09ef9af))
|
|
86
|
+
|
|
87
|
+
## [3.0.4] - 2021-12-15
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
|
|
91
|
+
- Insert always-on defaults layer in correct spot ([#6526](https://github.com/tailwindlabs/tailwindcss/pull/6526))
|
|
92
|
+
|
|
93
|
+
## [3.0.3] - 2021-12-15
|
|
94
|
+
|
|
95
|
+
### Added
|
|
96
|
+
|
|
97
|
+
- Warn about invalid globs in `content` ([#6449](https://github.com/tailwindlabs/tailwindcss/pull/6449))
|
|
98
|
+
- Add standalone tailwindcss CLI ([#6506](https://github.com/tailwindlabs/tailwindcss/pull/6506))
|
|
99
|
+
- Add `li` to list-style reset ([00f60e6](https://github.com/tailwindlabs/tailwindcss/commit/00f60e61013c6e4e3419e4b699371a13eb30b75d))
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- Don't output unparsable values ([#6469](https://github.com/tailwindlabs/tailwindcss/pull/6469))
|
|
104
|
+
- 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))
|
|
105
|
+
- Move defaults to their own always-on layer ([#6500](https://github.com/tailwindlabs/tailwindcss/pull/6500))
|
|
106
|
+
- Support negative values in safelist patterns ([#6480](https://github.com/tailwindlabs/tailwindcss/pull/6480))
|
|
107
|
+
|
|
108
|
+
## [3.0.2] - 2021-12-13
|
|
109
|
+
|
|
110
|
+
### Fixed
|
|
111
|
+
|
|
112
|
+
- 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))
|
|
113
|
+
|
|
114
|
+
## [3.0.1] - 2021-12-10
|
|
115
|
+
|
|
116
|
+
### Fixed
|
|
117
|
+
|
|
118
|
+
- Ensure complex variants with multiple classes work ([#6311](https://github.com/tailwindlabs/tailwindcss/pull/6311))
|
|
119
|
+
- Re-add `default` interop to public available functions ([#6348](https://github.com/tailwindlabs/tailwindcss/pull/6348))
|
|
120
|
+
- Detect circular dependencies when using `@apply` ([#6365](https://github.com/tailwindlabs/tailwindcss/pull/6365))
|
|
121
|
+
- Fix defaults optimization when vendor prefixes are involved ([#6369](https://github.com/tailwindlabs/tailwindcss/pull/6369))
|
|
122
|
+
|
|
123
|
+
## [3.0.0] - 2021-12-09
|
|
124
|
+
|
|
10
125
|
### Fixed
|
|
11
126
|
|
|
12
127
|
- Enforce the order of some variants (like `before` and `after`) ([#6018](https://github.com/tailwindlabs/tailwindcss/pull/6018))
|
|
@@ -14,12 +129,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
14
129
|
### Added
|
|
15
130
|
|
|
16
131
|
- Add `placeholder` variant ([#6106](https://github.com/tailwindlabs/tailwindcss/pull/6106))
|
|
17
|
-
- Add
|
|
18
|
-
- Add combinable `touch-action` support ([#6115](https://github.com/tailwindlabs/tailwindcss/pull/6115))
|
|
132
|
+
- Add composable `touch-action` utilities ([#6115](https://github.com/tailwindlabs/tailwindcss/pull/6115))
|
|
19
133
|
- Add support for "arbitrary properties" ([#6161](https://github.com/tailwindlabs/tailwindcss/pull/6161))
|
|
20
134
|
- Add `portrait` and `landscape` variants ([#6046](https://github.com/tailwindlabs/tailwindcss/pull/6046))
|
|
21
135
|
- Add `text-decoration-style`, `text-decoration-thickness`, and `text-underline-offset` utilities ([#6004](https://github.com/tailwindlabs/tailwindcss/pull/6004))
|
|
22
136
|
- Add `menu` reset to preflight ([#6213](https://github.com/tailwindlabs/tailwindcss/pull/6213))
|
|
137
|
+
- Allow `0` as a valid `length` value ([#6233](https://github.com/tailwindlabs/tailwindcss/pull/6233), [#6259](https://github.com/tailwindlabs/tailwindcss/pull/6259))
|
|
138
|
+
- Add CSS functions to data types ([#6258](https://github.com/tailwindlabs/tailwindcss/pull/6258))
|
|
139
|
+
- Support negative values for `scale-*` utilities ([c48e629](https://github.com/tailwindlabs/tailwindcss/commit/c48e629955585ad18dadba9f470fda59cc448ab7))
|
|
140
|
+
- Improve `length` data type, by validating each value individually ([#6283](https://github.com/tailwindlabs/tailwindcss/pull/6283))
|
|
23
141
|
|
|
24
142
|
### Changed
|
|
25
143
|
|
|
@@ -44,6 +162,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
44
162
|
- Add `text-decoration-color` utilities ([#5760](https://github.com/tailwindlabs/tailwindcss/pull/5760))
|
|
45
163
|
- Add new declarative `addVariant` API ([#5809](https://github.com/tailwindlabs/tailwindcss/pull/5809))
|
|
46
164
|
- Add first-class `print` variant for targeting printed media ([#5885](https://github.com/tailwindlabs/tailwindcss/pull/5885))
|
|
165
|
+
- Add `outline-style`, `outline-color`, `outline-width` and `outline-offset` utilities ([#5887](https://github.com/tailwindlabs/tailwindcss/pull/5887))
|
|
47
166
|
- Add full color palette for `fill-*` and `stroke-*` utilities (#5933[](https://github.com/tailwindlabs/tailwindcss/pull/5933))
|
|
48
167
|
- Add composable API for colored box shadows ([#5979](https://github.com/tailwindlabs/tailwindcss/pull/5979))
|
|
49
168
|
|
|
@@ -1673,7 +1792,20 @@ No release notes
|
|
|
1673
1792
|
|
|
1674
1793
|
- Everything!
|
|
1675
1794
|
|
|
1676
|
-
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.
|
|
1795
|
+
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.12...HEAD
|
|
1796
|
+
[3.0.12]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.11...v3.0.12
|
|
1797
|
+
[3.0.11]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.10...v3.0.11
|
|
1798
|
+
[3.0.10]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.9...v3.0.10
|
|
1799
|
+
[3.0.9]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.8...v3.0.9
|
|
1800
|
+
[3.0.8]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.7...v3.0.8
|
|
1801
|
+
[3.0.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.6...v3.0.7
|
|
1802
|
+
[3.0.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.5...v3.0.6
|
|
1803
|
+
[3.0.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.4...v3.0.5
|
|
1804
|
+
[3.0.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.3...v3.0.4
|
|
1805
|
+
[3.0.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.2...v3.0.3
|
|
1806
|
+
[3.0.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.1...v3.0.2
|
|
1807
|
+
[3.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0...v3.0.1
|
|
1808
|
+
[3.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.2...v3.0.0
|
|
1677
1809
|
[3.0.0-alpha.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.1...v3.0.0-alpha.2
|
|
1678
1810
|
[3.0.0-alpha.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.19...v3.0.0-alpha.1
|
|
1679
1811
|
[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,11 +80,11 @@ 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
|
|
@@ -86,12 +105,12 @@ function help({ message , usage , commands , options }) {
|
|
|
86
105
|
}
|
|
87
106
|
console.log();
|
|
88
107
|
console.log('Options:');
|
|
89
|
-
for (let { flags , description , deprecated } of Object.values(groupedOptions)){
|
|
108
|
+
for (let { flags: flags1 , description , deprecated } of Object.values(groupedOptions)){
|
|
90
109
|
if (deprecated) continue;
|
|
91
|
-
if (
|
|
92
|
-
console.log(' '.repeat(indent + 4 /* 4 = "-i, ".length */ ),
|
|
110
|
+
if (flags1.length === 1) {
|
|
111
|
+
console.log(' '.repeat(indent + 4 /* 4 = "-i, ".length */ ), flags1.slice().reverse().join(', ').padEnd(20, ' '), description);
|
|
93
112
|
} else {
|
|
94
|
-
console.log(' '.repeat(indent),
|
|
113
|
+
console.log(' '.repeat(indent), flags1.slice().reverse().join(', ').padEnd(24, ' '), description);
|
|
95
114
|
}
|
|
96
115
|
}
|
|
97
116
|
}
|
|
@@ -110,7 +129,7 @@ function oneOf(...options) {
|
|
|
110
129
|
manualParsing: true
|
|
111
130
|
});
|
|
112
131
|
}
|
|
113
|
-
let
|
|
132
|
+
let commands = {
|
|
114
133
|
init: {
|
|
115
134
|
run: init,
|
|
116
135
|
args: {
|
|
@@ -187,31 +206,31 @@ if (process.stdout.isTTY /* Detect redirecting output to a file */ && (process.
|
|
|
187
206
|
'tailwindcss [--input input.css] [--output output.css] [--watch] [options...]',
|
|
188
207
|
'tailwindcss init [--full] [--postcss] [options...]',
|
|
189
208
|
],
|
|
190
|
-
commands: Object.keys(
|
|
191
|
-
).map((
|
|
209
|
+
commands: Object.keys(commands).filter((command2)=>command2 !== 'build'
|
|
210
|
+
).map((command3)=>`${command3} [options]`
|
|
192
211
|
),
|
|
193
212
|
options: {
|
|
194
|
-
...
|
|
213
|
+
...commands.build.args,
|
|
195
214
|
...sharedFlags
|
|
196
215
|
}
|
|
197
216
|
});
|
|
198
217
|
process.exit(0);
|
|
199
218
|
}
|
|
200
|
-
let
|
|
219
|
+
let command = ((arg = '')=>arg.startsWith('-') ? undefined : arg
|
|
201
220
|
)(process.argv[2]) || 'build';
|
|
202
|
-
if (
|
|
203
|
-
if (_fs.default.existsSync(_path.default.resolve(
|
|
221
|
+
if (commands[command] === undefined) {
|
|
222
|
+
if (_fs.default.existsSync(_path.default.resolve(command))) {
|
|
204
223
|
// TODO: Deprecate this in future versions
|
|
205
224
|
// Check if non-existing command, might be a file.
|
|
206
|
-
|
|
225
|
+
command = 'build';
|
|
207
226
|
} else {
|
|
208
227
|
help({
|
|
209
|
-
message: `Invalid command: ${
|
|
228
|
+
message: `Invalid command: ${command}`,
|
|
210
229
|
usage: [
|
|
211
230
|
'tailwindcss <command> [options]'
|
|
212
231
|
],
|
|
213
|
-
commands: Object.keys(
|
|
214
|
-
).map((
|
|
232
|
+
commands: Object.keys(commands).filter((command4)=>command4 !== 'build'
|
|
233
|
+
).map((command5)=>`${command5} [options]`
|
|
215
234
|
),
|
|
216
235
|
options: sharedFlags
|
|
217
236
|
});
|
|
@@ -219,11 +238,11 @@ if (commands1[command1] === undefined) {
|
|
|
219
238
|
}
|
|
220
239
|
}
|
|
221
240
|
// Execute command
|
|
222
|
-
let { args:
|
|
223
|
-
let
|
|
241
|
+
let { args: flags , run } = commands[command];
|
|
242
|
+
let args = (()=>{
|
|
224
243
|
try {
|
|
225
244
|
let result = (0, _arg).default(Object.fromEntries(Object.entries({
|
|
226
|
-
...
|
|
245
|
+
...flags,
|
|
227
246
|
...sharedFlags
|
|
228
247
|
}).filter(([_key, value])=>{
|
|
229
248
|
var ref;
|
|
@@ -240,23 +259,23 @@ let args1 = (()=>{
|
|
|
240
259
|
let flag = result['_'][i];
|
|
241
260
|
if (!flag.startsWith('-')) continue;
|
|
242
261
|
let flagName = flag;
|
|
243
|
-
let handler =
|
|
262
|
+
let handler = flags[flag];
|
|
244
263
|
// Resolve flagName & handler
|
|
245
264
|
while(typeof handler === 'string'){
|
|
246
265
|
flagName = handler;
|
|
247
|
-
handler =
|
|
266
|
+
handler = flags[handler];
|
|
248
267
|
}
|
|
249
268
|
if (!handler) continue;
|
|
250
|
-
let
|
|
269
|
+
let args1 = [];
|
|
251
270
|
let offset = i + 1;
|
|
252
271
|
// Parse args for current flag
|
|
253
272
|
while(result['_'][offset] && !result['_'][offset].startsWith('-')){
|
|
254
|
-
|
|
273
|
+
args1.push(result['_'][offset++]);
|
|
255
274
|
}
|
|
256
275
|
// Cleanup manually parsed flags + args
|
|
257
|
-
result['_'].splice(i, 1 +
|
|
276
|
+
result['_'].splice(i, 1 + args1.length);
|
|
258
277
|
// Set the resolved value in the `result` object
|
|
259
|
-
result[flagName] = handler.type(
|
|
278
|
+
result[flagName] = handler.type(args1.length === 0 ? undefined : args1.length === 1 ? args1[0] : args1, flagName);
|
|
260
279
|
}
|
|
261
280
|
// Ensure that the `command` is always the first argument in the `args`.
|
|
262
281
|
// This is important so that we don't have to check if a default command
|
|
@@ -264,8 +283,8 @@ let args1 = (()=>{
|
|
|
264
283
|
//
|
|
265
284
|
// E.g.: tailwindcss input.css -> _: ['build', 'input.css']
|
|
266
285
|
// E.g.: tailwindcss build input.css -> _: ['build', 'input.css']
|
|
267
|
-
if (result['_'][0] !==
|
|
268
|
-
result['_'].unshift(
|
|
286
|
+
if (result['_'][0] !== command) {
|
|
287
|
+
result['_'].unshift(command);
|
|
269
288
|
}
|
|
270
289
|
return result;
|
|
271
290
|
} catch (err) {
|
|
@@ -282,14 +301,14 @@ let args1 = (()=>{
|
|
|
282
301
|
throw err;
|
|
283
302
|
}
|
|
284
303
|
})();
|
|
285
|
-
if (
|
|
304
|
+
if (args['--help']) {
|
|
286
305
|
help({
|
|
287
306
|
options: {
|
|
288
|
-
...
|
|
307
|
+
...flags,
|
|
289
308
|
...sharedFlags
|
|
290
309
|
},
|
|
291
310
|
usage: [
|
|
292
|
-
`tailwindcss ${
|
|
311
|
+
`tailwindcss ${command} [options]`
|
|
293
312
|
]
|
|
294
313
|
});
|
|
295
314
|
process.exit(0);
|
|
@@ -299,17 +318,17 @@ run();
|
|
|
299
318
|
function init() {
|
|
300
319
|
let messages = [];
|
|
301
320
|
var ref;
|
|
302
|
-
let tailwindConfigLocation = _path.default.resolve((ref =
|
|
321
|
+
let tailwindConfigLocation = _path.default.resolve((ref = args['_'][1]) !== null && ref !== void 0 ? ref : './tailwind.config.js');
|
|
303
322
|
if (_fs.default.existsSync(tailwindConfigLocation)) {
|
|
304
323
|
messages.push(`${_path.default.basename(tailwindConfigLocation)} already exists.`);
|
|
305
324
|
} else {
|
|
306
|
-
let stubFile = _fs.default.readFileSync(
|
|
325
|
+
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
326
|
// Change colors import
|
|
308
327
|
stubFile = stubFile.replace('../colors', 'tailwindcss/colors');
|
|
309
328
|
_fs.default.writeFileSync(tailwindConfigLocation, stubFile, 'utf8');
|
|
310
329
|
messages.push(`Created Tailwind CSS config file: ${_path.default.basename(tailwindConfigLocation)}`);
|
|
311
330
|
}
|
|
312
|
-
if (
|
|
331
|
+
if (args['--postcss']) {
|
|
313
332
|
let postcssConfigLocation = _path.default.resolve('./postcss.config.js');
|
|
314
333
|
if (_fs.default.existsSync(postcssConfigLocation)) {
|
|
315
334
|
messages.push(`${_path.default.basename(postcssConfigLocation)} already exists.`);
|
|
@@ -327,27 +346,27 @@ function init() {
|
|
|
327
346
|
}
|
|
328
347
|
}
|
|
329
348
|
async function build() {
|
|
330
|
-
let input =
|
|
331
|
-
let output =
|
|
332
|
-
let shouldWatch =
|
|
333
|
-
let includePostCss =
|
|
349
|
+
let input = args['--input'];
|
|
350
|
+
let output = args['--output'];
|
|
351
|
+
let shouldWatch = args['--watch'];
|
|
352
|
+
let includePostCss = args['--postcss'];
|
|
334
353
|
// TODO: Deprecate this in future versions
|
|
335
|
-
if (!input &&
|
|
354
|
+
if (!input && args['_'][1]) {
|
|
336
355
|
console.error('[deprecation] Running tailwindcss without -i, please provide an input file.');
|
|
337
|
-
input =
|
|
356
|
+
input = args['--input'] = args['_'][1];
|
|
338
357
|
}
|
|
339
|
-
if (input && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
340
|
-
console.error(`Specified input file ${
|
|
358
|
+
if (input && input !== '-' && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
359
|
+
console.error(`Specified input file ${args['--input']} does not exist.`);
|
|
341
360
|
process.exit(9);
|
|
342
361
|
}
|
|
343
|
-
if (
|
|
344
|
-
console.error(`Specified config file ${
|
|
362
|
+
if (args['--config'] && !_fs.default.existsSync(args['--config'] = _path.default.resolve(args['--config']))) {
|
|
363
|
+
console.error(`Specified config file ${args['--config']} does not exist.`);
|
|
345
364
|
process.exit(9);
|
|
346
365
|
}
|
|
347
|
-
let configPath =
|
|
366
|
+
let configPath = args['--config'] ? args['--config'] : ((defaultPath)=>_fs.default.existsSync(defaultPath) ? defaultPath : null
|
|
348
367
|
)(_path.default.resolve('./tailwind.config.js'));
|
|
349
368
|
async function loadPostCssPlugins() {
|
|
350
|
-
let customPostCssPath = typeof
|
|
369
|
+
let customPostCssPath = typeof args['--postcss'] === 'string' ? args['--postcss'] : undefined;
|
|
351
370
|
let { plugins: configPlugins } = customPostCssPath ? await (async ()=>{
|
|
352
371
|
let file = _path.default.resolve(customPostCssPath);
|
|
353
372
|
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.0.1/src/index.js
|
|
@@ -386,17 +405,17 @@ async function build() {
|
|
|
386
405
|
let config = configPath ? require(configPath) : {
|
|
387
406
|
};
|
|
388
407
|
let resolvedConfig = (0, _resolveConfig).default(config);
|
|
389
|
-
if (
|
|
408
|
+
if (args['--purge']) {
|
|
390
409
|
_log.default.warn('purge-flag-deprecated', [
|
|
391
410
|
'The `--purge` flag has been deprecated.',
|
|
392
411
|
'Please use `--content` instead.',
|
|
393
412
|
]);
|
|
394
|
-
if (!
|
|
395
|
-
|
|
413
|
+
if (!args['--content']) {
|
|
414
|
+
args['--content'] = args['--purge'];
|
|
396
415
|
}
|
|
397
416
|
}
|
|
398
|
-
if (
|
|
399
|
-
resolvedConfig.content.files =
|
|
417
|
+
if (args['--content']) {
|
|
418
|
+
resolvedConfig.content.files = args['--content'].split(/(?<!{[^}]+),/);
|
|
400
419
|
}
|
|
401
420
|
return resolvedConfig;
|
|
402
421
|
}
|
|
@@ -457,9 +476,9 @@ async function build() {
|
|
|
457
476
|
let plugins = [
|
|
458
477
|
...beforePlugins,
|
|
459
478
|
tailwindPlugin,
|
|
460
|
-
!
|
|
479
|
+
!args['--minify'] && formatNodes,
|
|
461
480
|
...afterPlugins,
|
|
462
|
-
!
|
|
481
|
+
!args['--no-autoprefixer'] && (()=>{
|
|
463
482
|
// Try to load a local `autoprefixer` version first
|
|
464
483
|
try {
|
|
465
484
|
return require('autoprefixer');
|
|
@@ -467,7 +486,7 @@ async function build() {
|
|
|
467
486
|
}
|
|
468
487
|
return (0, _indexJs).lazyAutoprefixer();
|
|
469
488
|
})(),
|
|
470
|
-
|
|
489
|
+
args['--minify'] && (()=>{
|
|
471
490
|
let options = {
|
|
472
491
|
preset: [
|
|
473
492
|
'default',
|
|
@@ -499,10 +518,8 @@ async function build() {
|
|
|
499
518
|
return process.stdout.write(result.css);
|
|
500
519
|
}
|
|
501
520
|
return Promise.all([
|
|
502
|
-
|
|
503
|
-
),
|
|
504
|
-
result.map && _fs.default.writeFile(output + '.map', result.map.toString(), ()=>true
|
|
505
|
-
),
|
|
521
|
+
outputFile(output, result.css),
|
|
522
|
+
result.map && outputFile(output + '.map', result.map.toString()),
|
|
506
523
|
].filter(Boolean));
|
|
507
524
|
}).then(()=>{
|
|
508
525
|
let end = process.hrtime.bigint();
|
|
@@ -510,7 +527,18 @@ async function build() {
|
|
|
510
527
|
console.error('Done in', (end - start) / BigInt(1000000) + 'ms.');
|
|
511
528
|
});
|
|
512
529
|
}
|
|
513
|
-
let css1 =
|
|
530
|
+
let css1 = await (()=>{
|
|
531
|
+
// Piping in data, let's drain the stdin
|
|
532
|
+
if (input === '-') {
|
|
533
|
+
return drainStdin();
|
|
534
|
+
}
|
|
535
|
+
// Input file has been provided
|
|
536
|
+
if (input) {
|
|
537
|
+
return _fs.default.readFileSync(_path.default.resolve(input), 'utf8');
|
|
538
|
+
}
|
|
539
|
+
// No input file provided, fallback to default atrules
|
|
540
|
+
return '@tailwind base; @tailwind components; @tailwind utilities';
|
|
541
|
+
})();
|
|
514
542
|
return processCSS(css1);
|
|
515
543
|
}
|
|
516
544
|
let context = null;
|
|
@@ -541,9 +569,9 @@ async function build() {
|
|
|
541
569
|
let plugins = [
|
|
542
570
|
...beforePlugins,
|
|
543
571
|
'__TAILWIND_PLUGIN_POSITION__',
|
|
544
|
-
!
|
|
572
|
+
!args['--minify'] && formatNodes,
|
|
545
573
|
...afterPlugins,
|
|
546
|
-
!
|
|
574
|
+
!args['--no-autoprefixer'] && (()=>{
|
|
547
575
|
// Try to load a local `autoprefixer` version first
|
|
548
576
|
try {
|
|
549
577
|
return require('autoprefixer');
|
|
@@ -551,7 +579,7 @@ async function build() {
|
|
|
551
579
|
}
|
|
552
580
|
return (0, _indexJs).lazyAutoprefixer();
|
|
553
581
|
})(),
|
|
554
|
-
|
|
582
|
+
args['--minify'] && (()=>{
|
|
555
583
|
let options = {
|
|
556
584
|
preset: [
|
|
557
585
|
'default',
|
|
@@ -619,11 +647,9 @@ async function build() {
|
|
|
619
647
|
if (!output) {
|
|
620
648
|
return process.stdout.write(result.css);
|
|
621
649
|
}
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
),
|
|
625
|
-
result.map && _fs.default.writeFile(output + '.map', result.map.toString(), ()=>true
|
|
626
|
-
),
|
|
650
|
+
return Promise.all([
|
|
651
|
+
outputFile(output, result.css),
|
|
652
|
+
result.map && outputFile(output + '.map', result.map.toString()),
|
|
627
653
|
].filter(Boolean));
|
|
628
654
|
}).then(()=>{
|
|
629
655
|
let end = process.hrtime.bigint();
|
|
@@ -636,7 +662,18 @@ async function build() {
|
|
|
636
662
|
}
|
|
637
663
|
});
|
|
638
664
|
}
|
|
639
|
-
let css2 =
|
|
665
|
+
let css2 = await (()=>{
|
|
666
|
+
// Piping in data, let's drain the stdin
|
|
667
|
+
if (input === '-') {
|
|
668
|
+
return drainStdin();
|
|
669
|
+
}
|
|
670
|
+
// Input file has been provided
|
|
671
|
+
if (input) {
|
|
672
|
+
return _fs.default.readFileSync(_path.default.resolve(input), 'utf8');
|
|
673
|
+
}
|
|
674
|
+
// No input file provided, fallback to default atrules
|
|
675
|
+
return '@tailwind base; @tailwind components; @tailwind utilities';
|
|
676
|
+
})();
|
|
640
677
|
let result1 = await processCSS(css2);
|
|
641
678
|
env.DEBUG && console.timeEnd('Finished in');
|
|
642
679
|
return result1;
|