tailwindcss 0.0.0-insiders.e8e64f0 → 0.0.0-insiders.ea80db2
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 +184 -2
- package/LICENSE +1 -2
- package/colors.d.ts +3 -0
- package/defaultConfig.d.ts +3 -0
- package/defaultTheme.d.ts +3 -0
- package/lib/cli.js +92 -37
- package/lib/corePluginList.js +1 -0
- package/lib/corePlugins.js +272 -291
- package/lib/css/preflight.css +2 -2
- package/lib/featureFlags.js +4 -7
- package/lib/index.js +12 -3
- package/lib/lib/cacheInvalidation.js +69 -0
- package/lib/lib/collapseAdjacentRules.js +14 -1
- package/lib/lib/collapseDuplicateDeclarations.js +52 -1
- package/lib/lib/defaultExtractor.js +16 -6
- package/lib/lib/expandApplyAtRules.js +173 -57
- package/lib/lib/expandTailwindAtRules.js +55 -42
- package/lib/lib/generateRules.js +165 -69
- package/lib/lib/normalizeTailwindDirectives.js +10 -2
- package/lib/lib/partitionApplyAtRules.js +53 -0
- package/lib/lib/resolveDefaultsAtRules.js +10 -6
- package/lib/lib/setupContextUtils.js +121 -85
- package/lib/lib/setupTrackingContext.js +8 -7
- package/lib/lib/sharedState.js +38 -5
- package/{nesting → lib/postcss-plugins/nesting}/README.md +0 -0
- package/lib/postcss-plugins/nesting/index.js +17 -0
- package/lib/postcss-plugins/nesting/plugin.js +85 -0
- package/lib/processTailwindFeatures.js +10 -2
- package/lib/util/cloneNodes.js +12 -1
- package/lib/util/color.js +27 -11
- package/lib/util/createPlugin.js +1 -2
- package/lib/util/createUtilityPlugin.js +4 -8
- package/lib/util/flattenColorPalette.js +1 -3
- package/lib/util/log.js +7 -7
- package/lib/util/normalizeConfig.js +19 -16
- package/lib/util/normalizeScreens.js +2 -4
- package/lib/util/parseBoxShadowValue.js +44 -4
- package/lib/util/pluginUtils.js +6 -13
- package/lib/util/prefixSelector.js +4 -5
- package/lib/util/resolveConfig.js +31 -18
- package/lib/util/resolveConfigPath.js +1 -2
- package/lib/util/toColorValue.js +1 -2
- package/lib/util/transformThemeValue.js +4 -8
- package/nesting/index.js +2 -12
- package/package.json +35 -38
- package/peers/index.js +3401 -4354
- package/plugin.d.ts +6 -0
- package/scripts/generate-types.js +52 -0
- package/src/cli.js +96 -26
- package/src/corePluginList.js +1 -1
- package/src/corePlugins.js +213 -165
- package/src/css/preflight.css +2 -2
- package/src/featureFlags.js +3 -7
- package/src/index.js +14 -6
- package/src/lib/cacheInvalidation.js +52 -0
- package/src/lib/collapseAdjacentRules.js +16 -1
- package/src/lib/collapseDuplicateDeclarations.js +66 -1
- package/src/lib/defaultExtractor.js +23 -4
- package/src/lib/expandApplyAtRules.js +184 -53
- package/src/lib/expandTailwindAtRules.js +66 -30
- package/src/lib/generateRules.js +154 -68
- package/src/lib/normalizeTailwindDirectives.js +7 -1
- package/src/lib/partitionApplyAtRules.js +52 -0
- package/src/lib/resolveDefaultsAtRules.js +11 -7
- package/src/lib/setupContextUtils.js +112 -47
- package/src/lib/setupTrackingContext.js +8 -7
- package/src/lib/sharedState.js +42 -4
- package/src/postcss-plugins/nesting/README.md +42 -0
- package/src/postcss-plugins/nesting/index.js +13 -0
- package/src/postcss-plugins/nesting/plugin.js +80 -0
- package/src/processTailwindFeatures.js +12 -2
- package/src/util/cloneNodes.js +14 -1
- package/src/util/color.js +25 -10
- package/src/util/log.js +7 -7
- package/src/util/normalizeConfig.js +12 -4
- package/src/util/parseBoxShadowValue.js +51 -3
- package/src/util/pluginUtils.js +1 -1
- package/src/util/prefixSelector.js +7 -5
- package/src/util/resolveConfig.js +30 -0
- package/stubs/defaultConfig.stub.js +3 -0
- package/types/config.d.ts +323 -0
- package/types/generated/.gitkeep +0 -0
- package/types/generated/colors.d.ts +276 -0
- package/types/generated/corePluginList.d.ts +1 -0
- package/types/index.d.ts +1 -0
- package/types.d.ts +1 -0
- package/lib/lib/setupWatchingContext.js +0 -288
- package/nesting/plugin.js +0 -41
- package/src/lib/setupWatchingContext.js +0 -311
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,173 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Prevent nesting plugin from breaking other plugins ([#7563](https://github.com/tailwindlabs/tailwindcss/pull/7563))
|
|
13
|
+
- Recursively collapse adjacent rules ([#7565](https://github.com/tailwindlabs/tailwindcss/pull/7565))
|
|
14
|
+
- Preserve source maps for generated CSS ([#7588](https://github.com/tailwindlabs/tailwindcss/pull/7588))
|
|
15
|
+
- Split box shadows on top-level commas only ([#7479](https://github.com/tailwindlabs/tailwindcss/pull/7479))
|
|
16
|
+
- Use local user CSS cache for `@apply` ([#7524](https://github.com/tailwindlabs/tailwindcss/pull/7524))
|
|
17
|
+
- Invalidate context when main CSS changes ([#7626](https://github.com/tailwindlabs/tailwindcss/pull/7626))
|
|
18
|
+
- Only add `!` to selector class matching template candidate when using important modifier with mutli-class selectors ([#7664](https://github.com/tailwindlabs/tailwindcss/pull/7664))
|
|
19
|
+
- Correctly parse and prefix animation names with dots ([#7163](https://github.com/tailwindlabs/tailwindcss/pull/7163))
|
|
20
|
+
- Fix extraction from template literal/function with array ([#7481](https://github.com/tailwindlabs/tailwindcss/pull/7481))
|
|
21
|
+
- Don't output unparsable arbitrary values ([#7789](https://github.com/tailwindlabs/tailwindcss/pull/7789))
|
|
22
|
+
- Fix generation of `div:not(.foo)` if `.foo` is never defined ([#7815](https://github.com/tailwindlabs/tailwindcss/pull/7815))
|
|
23
|
+
- Allow for custom properties in `rgb`, `rgba`, `hsl` and `hsla` colors ([#7933](https://github.com/tailwindlabs/tailwindcss/pull/7933))
|
|
24
|
+
- Remove autoprefixer as explicit peer-dependency to avoid invalid warnings in situations where it isn't actually needed ([#7949](https://github.com/tailwindlabs/tailwindcss/pull/7949))
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- Replace `chalk` with `picocolors` ([#6039](https://github.com/tailwindlabs/tailwindcss/pull/6039))
|
|
29
|
+
- Replace `cosmiconfig` with `lilconfig` ([#6039](https://github.com/tailwindlabs/tailwindcss/pull/6038))
|
|
30
|
+
- Update `cssnano` to avoid removing empty variables when minifying ([#7818](https://github.com/tailwindlabs/tailwindcss/pull/7818))
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- Allow default ring color to be a function ([#7587](https://github.com/tailwindlabs/tailwindcss/pull/7587))
|
|
35
|
+
- Add `rgb` and `hsl` color helpers for CSS variables ([#7665](https://github.com/tailwindlabs/tailwindcss/pull/7665))
|
|
36
|
+
- Support PostCSS `Document` nodes ([#7291](https://github.com/tailwindlabs/tailwindcss/pull/7291))
|
|
37
|
+
- Add `text-start` and `text-end` utilities ([#6656](https://github.com/tailwindlabs/tailwindcss/pull/6656))
|
|
38
|
+
- Support customizing class name when using `darkMode: 'class'` ([#5800](https://github.com/tailwindlabs/tailwindcss/pull/5800))
|
|
39
|
+
- Add `--poll` option to the CLI ([#7725](https://github.com/tailwindlabs/tailwindcss/pull/7725))
|
|
40
|
+
- Add new `border-spacing` utilities ([#7102](https://github.com/tailwindlabs/tailwindcss/pull/7102))
|
|
41
|
+
- Add `enabled` variant ([#7905](https://github.com/tailwindlabs/tailwindcss/pull/7905))
|
|
42
|
+
- Add TypeScript types for the `tailwind.config.js` file ([#7891](https://github.com/tailwindlabs/tailwindcss/pull/7891))
|
|
43
|
+
- Add `backdrop` variant ([#7924](https://github.com/tailwindlabs/tailwindcss/pull/7924))
|
|
44
|
+
|
|
45
|
+
## [3.0.23] - 2022-02-16
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- Remove opacity variables from `:visited` pseudo class ([#7458](https://github.com/tailwindlabs/tailwindcss/pull/7458))
|
|
50
|
+
- Support arbitrary values + calc + theme with quotes ([#7462](https://github.com/tailwindlabs/tailwindcss/pull/7462))
|
|
51
|
+
- Don't duplicate layer output when scanning content with variants + wildcards ([#7478](https://github.com/tailwindlabs/tailwindcss/pull/7478))
|
|
52
|
+
- Implement `getClassOrder` instead of `sortClassList` ([#7459](https://github.com/tailwindlabs/tailwindcss/pull/7459))
|
|
53
|
+
|
|
54
|
+
## [3.0.22] - 2022-02-11
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- Temporarily move `postcss` to dependencies ([#7424](https://github.com/tailwindlabs/tailwindcss/pull/7424))
|
|
59
|
+
|
|
60
|
+
## [3.0.21] - 2022-02-10
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- Move prettier plugin to dev dependencies ([#7418](https://github.com/tailwindlabs/tailwindcss/pull/7418))
|
|
65
|
+
|
|
66
|
+
## [3.0.20] - 2022-02-10
|
|
67
|
+
|
|
68
|
+
### Added
|
|
69
|
+
|
|
70
|
+
- Expose `context.sortClassList(classes)` ([#7412](https://github.com/tailwindlabs/tailwindcss/pull/7412))
|
|
71
|
+
|
|
72
|
+
## [3.0.19] - 2022-02-07
|
|
73
|
+
|
|
74
|
+
### Fixed
|
|
75
|
+
|
|
76
|
+
- Fix preflight border color fallback ([#7288](https://github.com/tailwindlabs/tailwindcss/pull/7288))
|
|
77
|
+
- Correctly parse shadow lengths without a leading zero ([#7289](https://github.com/tailwindlabs/tailwindcss/pull/7289))
|
|
78
|
+
- Don't crash when scanning extremely long class candidates ([#7331](https://github.com/tailwindlabs/tailwindcss/pull/7331))
|
|
79
|
+
- Use less hacky fix for URLs detected as custom properties ([#7275](https://github.com/tailwindlabs/tailwindcss/pull/7275))
|
|
80
|
+
- Correctly generate negative utilities when dash is before the prefix ([#7295](https://github.com/tailwindlabs/tailwindcss/pull/7295))
|
|
81
|
+
- Detect prefixed negative utilities in the safelist ([#7295](https://github.com/tailwindlabs/tailwindcss/pull/7295))
|
|
82
|
+
|
|
83
|
+
## [3.0.18] - 2022-01-28
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
|
|
87
|
+
- Fix `@apply` order regression (in `addComponents`, `addUtilities`, ...) ([#7232](https://github.com/tailwindlabs/tailwindcss/pull/7232))
|
|
88
|
+
- Quick fix for incorrect arbitrary properties when using URLs ([#7252](https://github.com/tailwindlabs/tailwindcss/pull/7252))
|
|
89
|
+
|
|
90
|
+
## [3.0.17] - 2022-01-26
|
|
91
|
+
|
|
92
|
+
### Fixed
|
|
93
|
+
|
|
94
|
+
- Remove false positive warning in CLI when using the `--content` option ([#7220](https://github.com/tailwindlabs/tailwindcss/pull/7220))
|
|
95
|
+
|
|
96
|
+
## [3.0.16] - 2022-01-24
|
|
97
|
+
|
|
98
|
+
### Fixed
|
|
99
|
+
|
|
100
|
+
- Ensure to transpile the PostCSS Nesting plugin (tailwindcss/nesting) ([#7080](https://github.com/tailwindlabs/tailwindcss/pull/7080))
|
|
101
|
+
- Improve various warnings ([#7118](https://github.com/tailwindlabs/tailwindcss/pull/7118))
|
|
102
|
+
- Fix grammatical mistake ([cca5a38](https://github.com/tailwindlabs/tailwindcss/commit/cca5a3804e1d3ee0214491921e1aec35bf62a813))
|
|
103
|
+
|
|
104
|
+
## [3.0.15] - 2022-01-15
|
|
105
|
+
|
|
106
|
+
### Fixed
|
|
107
|
+
|
|
108
|
+
- Temporarily remove optional chaining in nesting plugin ([#7077](https://github.com/tailwindlabs/tailwindcss/pull/7077))
|
|
109
|
+
|
|
110
|
+
## [3.0.14] - 2022-01-14
|
|
111
|
+
|
|
112
|
+
### Added
|
|
113
|
+
|
|
114
|
+
- Show warnings for invalid content config ([#7065](https://github.com/tailwindlabs/tailwindcss/pull/7065))
|
|
115
|
+
|
|
116
|
+
### Fixed
|
|
117
|
+
|
|
118
|
+
- Only emit utility/component variants when those layers exist ([#7066](https://github.com/tailwindlabs/tailwindcss/pull/7066))
|
|
119
|
+
- Ensure nesting plugins can receive options ([#7016](https://github.com/tailwindlabs/tailwindcss/pull/7016))
|
|
120
|
+
|
|
121
|
+
## [3.0.13] - 2022-01-11
|
|
122
|
+
|
|
123
|
+
### Fixed
|
|
124
|
+
|
|
125
|
+
- Fix consecutive builds with at apply producing different CSS ([#6999](https://github.com/tailwindlabs/tailwindcss/pull/6999))
|
|
126
|
+
|
|
127
|
+
## [3.0.12] - 2022-01-07
|
|
128
|
+
|
|
129
|
+
### Fixed
|
|
130
|
+
|
|
131
|
+
- Allow use of falsy values in theme config ([#6917](https://github.com/tailwindlabs/tailwindcss/pull/6917))
|
|
132
|
+
- Ensure we can apply classes that are grouped with non-class selectors ([#6922](https://github.com/tailwindlabs/tailwindcss/pull/6922))
|
|
133
|
+
- Improve standalone CLI compatibility on Linux by switching to the `linuxstatic` build target ([#6914](https://github.com/tailwindlabs/tailwindcss/pull/6914))
|
|
134
|
+
- Ensure `@apply` works consistently with or without `@layer` ([#6938](https://github.com/tailwindlabs/tailwindcss/pull/6938))
|
|
135
|
+
- Only emit defaults when using base layer ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926))
|
|
136
|
+
- Emit plugin defaults regardless of usage ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926))
|
|
137
|
+
- Move default border color back to preflight ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926))
|
|
138
|
+
- Change `experimental.optimizeUniversalDefaults` to only work with `@tailwind base` ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926))
|
|
139
|
+
|
|
140
|
+
## [3.0.11] - 2022-01-05
|
|
141
|
+
|
|
142
|
+
### Fixed
|
|
143
|
+
|
|
144
|
+
- Preserve casing of CSS variables added by plugins ([#6888](https://github.com/tailwindlabs/tailwindcss/pull/6888))
|
|
145
|
+
- Ignore content paths that are passed in but don't actually exist ([#6901](https://github.com/tailwindlabs/tailwindcss/pull/6901))
|
|
146
|
+
- Revert change that applies Tailwind's defaults in isolated environments like CSS modules ([9fdc391](https://github.com/tailwindlabs/tailwindcss/commit/9fdc391d4ff93e7e350f5ce439060176b1f0162f))
|
|
147
|
+
|
|
148
|
+
## [3.0.10] - 2022-01-04
|
|
149
|
+
|
|
150
|
+
### Fixed
|
|
151
|
+
|
|
152
|
+
- Fix `@apply` in files without `@tailwind` directives ([#6580](https://github.com/tailwindlabs/tailwindcss/pull/6580), [#6875](https://github.com/tailwindlabs/tailwindcss/pull/6875))
|
|
153
|
+
- CLI: avoid unnecessary writes to output files ([#6550](https://github.com/tailwindlabs/tailwindcss/pull/6550))
|
|
154
|
+
|
|
155
|
+
### Added
|
|
156
|
+
|
|
157
|
+
- Allow piping data into the CLI ([#6876](https://github.com/tailwindlabs/tailwindcss/pull/6876))
|
|
158
|
+
|
|
159
|
+
## [3.0.9] - 2022-01-03
|
|
160
|
+
|
|
161
|
+
### Fixed
|
|
162
|
+
|
|
163
|
+
- Improve `DEBUG` flag ([#6797](https://github.com/tailwindlabs/tailwindcss/pull/6797), [#6804](https://github.com/tailwindlabs/tailwindcss/pull/6804))
|
|
164
|
+
- Ensure we can use `<` and `>` characters in modifiers ([#6851](https://github.com/tailwindlabs/tailwindcss/pull/6851))
|
|
165
|
+
- Validate `theme()` works in arbitrary values ([#6852](https://github.com/tailwindlabs/tailwindcss/pull/6852))
|
|
166
|
+
- Properly detect `theme()` value usage in arbitrary properties ([#6854](https://github.com/tailwindlabs/tailwindcss/pull/6854))
|
|
167
|
+
- Improve collapsing of duplicate declarations ([#6856](https://github.com/tailwindlabs/tailwindcss/pull/6856))
|
|
168
|
+
- Remove support for `TAILWIND_MODE=watch` ([#6858](https://github.com/tailwindlabs/tailwindcss/pull/6858))
|
|
169
|
+
|
|
170
|
+
## [3.0.8] - 2021-12-28
|
|
171
|
+
|
|
172
|
+
### Fixed
|
|
173
|
+
|
|
174
|
+
- Reduce specificity of `abbr` rule in preflight ([#6671](https://github.com/tailwindlabs/tailwindcss/pull/6671))
|
|
175
|
+
- Support HSL with hue units in arbitrary values ([#6726](https://github.com/tailwindlabs/tailwindcss/pull/6726))
|
|
176
|
+
- Add `node16-linux-arm64` target for standalone CLI ([#6693](https://github.com/tailwindlabs/tailwindcss/pull/6693))
|
|
11
177
|
|
|
12
178
|
## [3.0.7] - 2021-12-17
|
|
13
179
|
|
|
@@ -1741,7 +1907,23 @@ No release notes
|
|
|
1741
1907
|
|
|
1742
1908
|
- Everything!
|
|
1743
1909
|
|
|
1744
|
-
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.
|
|
1910
|
+
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.23...HEAD
|
|
1911
|
+
[3.0.23]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.22...v3.0.23
|
|
1912
|
+
[3.0.22]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.21...v3.0.22
|
|
1913
|
+
[3.0.21]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.20...v3.0.21
|
|
1914
|
+
[3.0.20]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.19...v3.0.20
|
|
1915
|
+
[3.0.19]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.18...v3.0.19
|
|
1916
|
+
[3.0.18]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.17...v3.0.18
|
|
1917
|
+
[3.0.17]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.16...v3.0.17
|
|
1918
|
+
[3.0.16]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.15...v3.0.16
|
|
1919
|
+
[3.0.15]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.14...v3.0.15
|
|
1920
|
+
[3.0.14]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.13...v3.0.14
|
|
1921
|
+
[3.0.13]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.12...v3.0.13
|
|
1922
|
+
[3.0.12]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.11...v3.0.12
|
|
1923
|
+
[3.0.11]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.10...v3.0.11
|
|
1924
|
+
[3.0.10]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.9...v3.0.10
|
|
1925
|
+
[3.0.9]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.8...v3.0.9
|
|
1926
|
+
[3.0.8]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.7...v3.0.8
|
|
1745
1927
|
[3.0.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.6...v3.0.7
|
|
1746
1928
|
[3.0.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.5...v3.0.6
|
|
1747
1929
|
[3.0.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.4...v3.0.5
|
package/LICENSE
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
4
|
-
Copyright (c) Jonathan Reinink <jonathan@reinink.ca>
|
|
3
|
+
Copyright (c) Tailwind Labs, Inc.
|
|
5
4
|
|
|
6
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/colors.d.ts
ADDED
package/lib/cli.js
CHANGED
|
@@ -6,7 +6,7 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
6
6
|
var _arg = _interopRequireDefault(require("arg"));
|
|
7
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
8
|
var _postcssLoadConfig = _interopRequireDefault(require("postcss-load-config"));
|
|
9
|
-
var
|
|
9
|
+
var _lilconfig = require("lilconfig");
|
|
10
10
|
var _plugins // Little bit scary, looking at private/internal API
|
|
11
11
|
= _interopRequireDefault(require("postcss-load-config/src/plugins"));
|
|
12
12
|
var _processTailwindFeatures = _interopRequireDefault(require("./processTailwindFeatures"));
|
|
@@ -40,6 +40,25 @@ function formatNodes(root) {
|
|
|
40
40
|
root.first.raws.before = '';
|
|
41
41
|
}
|
|
42
42
|
}
|
|
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
|
+
}
|
|
43
62
|
function help({ message , usage , commands: commands1 , options }) {
|
|
44
63
|
let indent = 2;
|
|
45
64
|
// Render header
|
|
@@ -70,8 +89,7 @@ function help({ message , usage , commands: commands1 , options }) {
|
|
|
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] = {
|
|
@@ -122,6 +140,10 @@ let commands = {
|
|
|
122
140
|
type: Boolean,
|
|
123
141
|
description: 'Initialize a `postcss.config.js` file'
|
|
124
142
|
},
|
|
143
|
+
'--types': {
|
|
144
|
+
type: Boolean,
|
|
145
|
+
description: 'Add TypeScript types for the `tailwind.config.js` file'
|
|
146
|
+
},
|
|
125
147
|
'-f': '--full',
|
|
126
148
|
'-p': '--postcss'
|
|
127
149
|
}
|
|
@@ -141,6 +163,10 @@ let commands = {
|
|
|
141
163
|
type: Boolean,
|
|
142
164
|
description: 'Watch for changes and rebuild as needed'
|
|
143
165
|
},
|
|
166
|
+
'--poll': {
|
|
167
|
+
type: Boolean,
|
|
168
|
+
description: 'Use polling instead of filesystem events when watching'
|
|
169
|
+
},
|
|
144
170
|
'--content': {
|
|
145
171
|
type: String,
|
|
146
172
|
description: 'Content paths to use for removing unused classes'
|
|
@@ -169,7 +195,8 @@ let commands = {
|
|
|
169
195
|
'-i': '--input',
|
|
170
196
|
'-o': '--output',
|
|
171
197
|
'-m': '--minify',
|
|
172
|
-
'-w': '--watch'
|
|
198
|
+
'-w': '--watch',
|
|
199
|
+
'-p': '--poll'
|
|
173
200
|
}
|
|
174
201
|
}
|
|
175
202
|
};
|
|
@@ -185,7 +212,7 @@ if (process.stdout.isTTY /* Detect redirecting output to a file */ && (process.
|
|
|
185
212
|
help({
|
|
186
213
|
usage: [
|
|
187
214
|
'tailwindcss [--input input.css] [--output output.css] [--watch] [options...]',
|
|
188
|
-
'tailwindcss init [--full] [--postcss] [options...]',
|
|
215
|
+
'tailwindcss init [--full] [--postcss] [--types] [options...]',
|
|
189
216
|
],
|
|
190
217
|
commands: Object.keys(commands).filter((command2)=>command2 !== 'build'
|
|
191
218
|
).map((command3)=>`${command3} [options]`
|
|
@@ -304,6 +331,10 @@ function init() {
|
|
|
304
331
|
messages.push(`${_path.default.basename(tailwindConfigLocation)} already exists.`);
|
|
305
332
|
} else {
|
|
306
333
|
let stubFile = _fs.default.readFileSync(args['--full'] ? _path.default.resolve(__dirname, '../stubs/defaultConfig.stub.js') : _path.default.resolve(__dirname, '../stubs/simpleConfig.stub.js'), 'utf8');
|
|
334
|
+
if (args['--types']) {
|
|
335
|
+
let typesHeading = "/** @type {import('tailwindcss/types').Config} */";
|
|
336
|
+
stubFile = stubFile.replace(`module.exports = `, `${typesHeading}\nconst config = `) + '\nmodule.exports = config';
|
|
337
|
+
}
|
|
307
338
|
// Change colors import
|
|
308
339
|
stubFile = stubFile.replace('../colors', 'tailwindcss/colors');
|
|
309
340
|
_fs.default.writeFileSync(tailwindConfigLocation, stubFile, 'utf8');
|
|
@@ -330,13 +361,18 @@ async function build() {
|
|
|
330
361
|
let input = args['--input'];
|
|
331
362
|
let output = args['--output'];
|
|
332
363
|
let shouldWatch = args['--watch'];
|
|
364
|
+
let shouldPoll = args['--poll'];
|
|
365
|
+
let shouldCoalesceWriteEvents = shouldPoll || process.platform === 'win32';
|
|
333
366
|
let includePostCss = args['--postcss'];
|
|
367
|
+
// Polling interval in milliseconds
|
|
368
|
+
// Used only when polling or coalescing add/change events on Windows
|
|
369
|
+
let pollInterval = 10;
|
|
334
370
|
// TODO: Deprecate this in future versions
|
|
335
371
|
if (!input && args['_'][1]) {
|
|
336
372
|
console.error('[deprecation] Running tailwindcss without -i, please provide an input file.');
|
|
337
373
|
input = args['--input'] = args['_'][1];
|
|
338
374
|
}
|
|
339
|
-
if (input && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
375
|
+
if (input && input !== '-' && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
340
376
|
console.error(`Specified input file ${args['--input']} does not exist.`);
|
|
341
377
|
process.exit(9);
|
|
342
378
|
}
|
|
@@ -350,14 +386,12 @@ async function build() {
|
|
|
350
386
|
let customPostCssPath = typeof args['--postcss'] === 'string' ? args['--postcss'] : undefined;
|
|
351
387
|
let { plugins: configPlugins } = customPostCssPath ? await (async ()=>{
|
|
352
388
|
let file = _path.default.resolve(customPostCssPath);
|
|
353
|
-
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.0
|
|
354
|
-
let { config ={
|
|
355
|
-
} } = await (0, _cosmiconfig).cosmiconfig('postcss').load(file);
|
|
389
|
+
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.1.0/src/index.js
|
|
390
|
+
let { config ={} } = await (0, _lilconfig).lilconfig('postcss').load(file);
|
|
356
391
|
if (typeof config === 'function') {
|
|
357
392
|
config = config();
|
|
358
393
|
} else {
|
|
359
|
-
config = Object.assign({
|
|
360
|
-
}, config);
|
|
394
|
+
config = Object.assign({}, config);
|
|
361
395
|
}
|
|
362
396
|
if (!config.plugins) {
|
|
363
397
|
config.plugins = [];
|
|
@@ -383,9 +417,7 @@ async function build() {
|
|
|
383
417
|
];
|
|
384
418
|
}
|
|
385
419
|
function resolveConfig() {
|
|
386
|
-
let config = configPath ? require(configPath) : {
|
|
387
|
-
};
|
|
388
|
-
let resolvedConfig = (0, _resolveConfig).default(config);
|
|
420
|
+
let config = configPath ? require(configPath) : {};
|
|
389
421
|
if (args['--purge']) {
|
|
390
422
|
_log.default.warn('purge-flag-deprecated', [
|
|
391
423
|
'The `--purge` flag has been deprecated.',
|
|
@@ -396,9 +428,16 @@ async function build() {
|
|
|
396
428
|
}
|
|
397
429
|
}
|
|
398
430
|
if (args['--content']) {
|
|
399
|
-
|
|
431
|
+
let files = args['--content'].split(/(?<!{[^}]+),/);
|
|
432
|
+
let resolvedConfig = (0, _resolveConfig).default(config, {
|
|
433
|
+
content: {
|
|
434
|
+
files
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
resolvedConfig.content.files = files;
|
|
438
|
+
return resolvedConfig;
|
|
400
439
|
}
|
|
401
|
-
return
|
|
440
|
+
return (0, _resolveConfig).default(config);
|
|
402
441
|
}
|
|
403
442
|
function extractFileGlobs(config) {
|
|
404
443
|
return config.content.files.filter((file)=>{
|
|
@@ -463,8 +502,7 @@ async function build() {
|
|
|
463
502
|
// Try to load a local `autoprefixer` version first
|
|
464
503
|
try {
|
|
465
504
|
return require('autoprefixer');
|
|
466
|
-
} catch {
|
|
467
|
-
}
|
|
505
|
+
} catch {}
|
|
468
506
|
return (0, _indexJs).lazyAutoprefixer();
|
|
469
507
|
})(),
|
|
470
508
|
args['--minify'] && (()=>{
|
|
@@ -479,8 +517,7 @@ async function build() {
|
|
|
479
517
|
// Try to load a local `cssnano` version first
|
|
480
518
|
try {
|
|
481
519
|
return require('cssnano');
|
|
482
|
-
} catch {
|
|
483
|
-
}
|
|
520
|
+
} catch {}
|
|
484
521
|
return (0, _indexJs).lazyCssnano()(options);
|
|
485
522
|
})(),
|
|
486
523
|
].filter(Boolean);
|
|
@@ -499,10 +536,8 @@ async function build() {
|
|
|
499
536
|
return process.stdout.write(result.css);
|
|
500
537
|
}
|
|
501
538
|
return Promise.all([
|
|
502
|
-
|
|
503
|
-
),
|
|
504
|
-
result.map && _fs.default.writeFile(output + '.map', result.map.toString(), ()=>true
|
|
505
|
-
),
|
|
539
|
+
outputFile(output, result.css),
|
|
540
|
+
result.map && outputFile(output + '.map', result.map.toString()),
|
|
506
541
|
].filter(Boolean));
|
|
507
542
|
}).then(()=>{
|
|
508
543
|
let end = process.hrtime.bigint();
|
|
@@ -510,7 +545,18 @@ async function build() {
|
|
|
510
545
|
console.error('Done in', (end - start) / BigInt(1000000) + 'ms.');
|
|
511
546
|
});
|
|
512
547
|
}
|
|
513
|
-
let css1 =
|
|
548
|
+
let css1 = await (()=>{
|
|
549
|
+
// Piping in data, let's drain the stdin
|
|
550
|
+
if (input === '-') {
|
|
551
|
+
return drainStdin();
|
|
552
|
+
}
|
|
553
|
+
// Input file has been provided
|
|
554
|
+
if (input) {
|
|
555
|
+
return _fs.default.readFileSync(_path.default.resolve(input), 'utf8');
|
|
556
|
+
}
|
|
557
|
+
// No input file provided, fallback to default atrules
|
|
558
|
+
return '@tailwind base; @tailwind components; @tailwind utilities';
|
|
559
|
+
})();
|
|
514
560
|
return processCSS(css1);
|
|
515
561
|
}
|
|
516
562
|
let context = null;
|
|
@@ -547,8 +593,7 @@ async function build() {
|
|
|
547
593
|
// Try to load a local `autoprefixer` version first
|
|
548
594
|
try {
|
|
549
595
|
return require('autoprefixer');
|
|
550
|
-
} catch {
|
|
551
|
-
}
|
|
596
|
+
} catch {}
|
|
552
597
|
return (0, _indexJs).lazyAutoprefixer();
|
|
553
598
|
})(),
|
|
554
599
|
args['--minify'] && (()=>{
|
|
@@ -563,8 +608,7 @@ async function build() {
|
|
|
563
608
|
// Try to load a local `cssnano` version first
|
|
564
609
|
try {
|
|
565
610
|
return require('cssnano');
|
|
566
|
-
} catch {
|
|
567
|
-
}
|
|
611
|
+
} catch {}
|
|
568
612
|
return (0, _indexJs).lazyCssnano()(options);
|
|
569
613
|
})(),
|
|
570
614
|
].filter(Boolean);
|
|
@@ -619,11 +663,9 @@ async function build() {
|
|
|
619
663
|
if (!output) {
|
|
620
664
|
return process.stdout.write(result.css);
|
|
621
665
|
}
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
),
|
|
625
|
-
result.map && _fs.default.writeFile(output + '.map', result.map.toString(), ()=>true
|
|
626
|
-
),
|
|
666
|
+
return Promise.all([
|
|
667
|
+
outputFile(output, result.css),
|
|
668
|
+
result.map && outputFile(output + '.map', result.map.toString()),
|
|
627
669
|
].filter(Boolean));
|
|
628
670
|
}).then(()=>{
|
|
629
671
|
let end = process.hrtime.bigint();
|
|
@@ -636,7 +678,18 @@ async function build() {
|
|
|
636
678
|
}
|
|
637
679
|
});
|
|
638
680
|
}
|
|
639
|
-
let css2 =
|
|
681
|
+
let css2 = await (()=>{
|
|
682
|
+
// Piping in data, let's drain the stdin
|
|
683
|
+
if (input === '-') {
|
|
684
|
+
return drainStdin();
|
|
685
|
+
}
|
|
686
|
+
// Input file has been provided
|
|
687
|
+
if (input) {
|
|
688
|
+
return _fs.default.readFileSync(_path.default.resolve(input), 'utf8');
|
|
689
|
+
}
|
|
690
|
+
// No input file provided, fallback to default atrules
|
|
691
|
+
return '@tailwind base; @tailwind components; @tailwind utilities';
|
|
692
|
+
})();
|
|
640
693
|
let result1 = await processCSS(css2);
|
|
641
694
|
env.DEBUG && console.timeEnd('Finished in');
|
|
642
695
|
return result1;
|
|
@@ -649,10 +702,12 @@ async function build() {
|
|
|
649
702
|
...contextDependencies,
|
|
650
703
|
...extractFileGlobs(config1)
|
|
651
704
|
], {
|
|
705
|
+
usePolling: shouldPoll,
|
|
706
|
+
interval: shouldPoll ? pollInterval : undefined,
|
|
652
707
|
ignoreInitial: true,
|
|
653
|
-
awaitWriteFinish:
|
|
708
|
+
awaitWriteFinish: shouldCoalesceWriteEvents ? {
|
|
654
709
|
stabilityThreshold: 50,
|
|
655
|
-
pollInterval:
|
|
710
|
+
pollInterval: pollInterval
|
|
656
711
|
} : false
|
|
657
712
|
});
|
|
658
713
|
let chain = Promise.resolve();
|