39
39
<div class="flex! sm:block! bg-linear-to-t bg-[var(--my-red)]"></div>
40
40
41
41
--- ./src/input.css ---
42
- @import 'tailwindcss';"
42
+ @import 'tailwindcss';
43
+ @config "../tailwind.config.js";
44
+ "
43
45
` )
44
46
45
47
let packageJsonContent = await fs . read ( 'package.json' )
95
97
--- ./src/input.css ---
96
98
@import 'tailwindcss' prefix(tw);
97
99
100
+ @config "../tailwind.config.js";
101
+
98
102
.btn {
99
103
@apply tw:rounded-md! tw:px-2 tw:py-1 tw:bg-blue-500 tw:text-white;
100
- }"
104
+ }
105
+ "
101
106
` )
102
107
} ,
103
108
)
@@ -140,6 +145,8 @@ test(
140
145
--- ./src/index.css ---
141
146
@import 'tailwindcss';
142
147
148
+ @config "../tailwind.config.js";
149
+
143
150
.a {
144
151
@apply flex;
145
152
}
@@ -150,7 +157,8 @@ test(
150
157
151
158
.c {
152
159
@apply flex! flex-col! items-center!;
153
- }"
160
+ }
161
+ "
154
162
` )
155
163
} ,
156
164
)
@@ -193,6 +201,8 @@ test(
193
201
--- ./src/index.css ---
194
202
@import 'tailwindcss';
195
203
204
+ @config "../tailwind.config.js";
205
+
196
206
@layer base {
197
207
html {
198
208
color: #333;
@@ -203,7 +213,8 @@ test(
203
213
.btn {
204
214
color: red;
205
215
}
206
- }"
216
+ }
217
+ "
207
218
` )
208
219
} ,
209
220
)
@@ -251,6 +262,8 @@ test(
251
262
--- ./src/index.css ---
252
263
@import 'tailwindcss';
253
264
265
+ @config "../tailwind.config.js";
266
+
254
267
@utility btn {
255
268
@apply rounded-md px-2 py-1 bg-blue-500 text-white;
256
269
}
@@ -261,7 +274,8 @@ test(
261
274
}
262
275
-ms-overflow-style: none;
263
276
scrollbar-width: none;
264
- }"
277
+ }
278
+ "
265
279
` )
266
280
} ,
267
281
)
@@ -533,7 +547,8 @@ test(
533
547
<div class="flex"></div>
534
548
535
549
--- ./src/other.html ---
536
- <div class="tw:flex"></div>"
550
+ <div class="tw:flex"></div>
551
+ "
537
552
` )
538
553
} ,
539
554
)
@@ -573,7 +588,8 @@ test(
573
588
<div class="tw:bg-linear-to-t"></div>
574
589
575
590
--- ./src/other.html ---
576
- <div class="bg-gradient-to-t"></div>"
591
+ <div class="bg-gradient-to-t"></div>
592
+ "
577
593
` )
578
594
} ,
579
595
)
@@ -615,6 +631,7 @@ test(
615
631
--- ./src/index.css ---
616
632
@import 'tailwindcss';
617
633
@import './utilities.css';
634
+ @config "../tailwind.config.js";
618
635
619
636
--- ./src/utilities.css ---
620
637
@utility no-scrollbar {
@@ -623,7 +640,8 @@ test(
623
640
}
624
641
-ms-overflow-style: none;
625
642
scrollbar-width: none;
626
- }"
643
+ }
644
+ "
627
645
` )
628
646
} ,
629
647
)
@@ -730,6 +748,7 @@ test(
730
748
@import './c.1.css' layer(utilities);
731
749
@import './c.1.utilities.css';
732
750
@import './d.1.css';
751
+ @config "../tailwind.config.js";
733
752
734
753
--- ./src/a.1.css ---
735
754
@import './a.1.utilities.css'
@@ -804,7 +823,8 @@ test(
804
823
--- ./src/d.4.css ---
805
824
@utility from-a-4 {
806
825
color: blue;
807
- }"
826
+ }
827
+ "
808
828
` )
809
829
} ,
810
830
)
@@ -862,14 +882,141 @@ test(
862
882
--- ./src/root.1.css ---
863
883
@import 'tailwindcss/utilities' layer(utilities);
864
884
@import './a.1.css' layer(utilities);
885
+ @config "../tailwind.config.js";
865
886
866
887
--- ./src/root.2.css ---
867
888
@import 'tailwindcss/utilities' layer(utilities);
868
889
@import './a.1.css' layer(components);
890
+ @config "../tailwind.config.js";
891
+
892
+ --- ./src/root.3.css ---
893
+ @import 'tailwindcss/utilities' layer(utilities);
894
+ @import './a.1.css' layer(utilities);
895
+ @config "../tailwind.config.js";
896
+ "
897
+ ` )
898
+ } ,
899
+ )
900
+
901
+ test (
902
+ 'injecting `@config` when a tailwind.config.{js,ts,…} is detected' ,
903
+ {
904
+ fs : {
905
+ 'package.json' : json `
906
+ {
907
+ "dependencies" : {
908
+ "@tailwindcss/upgrade" : "workspace:^"
909
+ }
910
+ }
911
+ ` ,
912
+ 'tailwind.config.ts' : js `
913
+ export default {
914
+ content : ['./src/**/*.{html,js}' ],
915
+ }
916
+ ` ,
917
+ 'src/index.html' : html `
918
+ <h1 > 🤠👋</ h1>
919
+ <div class= "!flex sm:!block bg-gradient-to-t bg-[--my-red]" > </div>
920
+ ` ,
921
+ 'src/root.1.css' : css `
922
+ /* Inject missing @config */
923
+ @tailwind base;
924
+ @tailwind components;
925
+ @tailwind utilities;
926
+ ` ,
927
+ 'src/root.2.css' : css `
928
+ /* Already contains @config */
929
+ @tailwind base;
930
+ @tailwind components;
931
+ @tailwind utilities;
932
+ @config "../tailwind.config.js" ;
933
+ ` ,
934
+ 'src/root.3.css' : css `
935
+ /* Inject missing @config above first @theme */
936
+ @tailwind base;
937
+ @tailwind components;
938
+ @tailwind utilities;
939
+
940
+ @variant hocus (& : hover, & : focus);
941
+
942
+ @theme {
943
+ --color-red-500 : # f00 ;
944
+ }
945
+
946
+ @theme {
947
+ --color-blue-500 : # 00f ;
948
+ }
949
+ ` ,
950
+ 'src/root.4.css' : css `
951
+ /* Inject missing @config due to nested imports with tailwind imports */
952
+ @import './root.4/base.css' ;
953
+ @import './root.4/utilities.css' ;
954
+ ` ,
955
+ 'src/root.4/base.css' : css `@import 'tailwindcss/base' ;` ,
956
+ 'src/root.4/utilities.css' : css `@import 'tailwindcss/utilities' ;` ,
957
+
958
+ 'src/root.5.css' : css `@import './root.5/tailwind.css' ;` ,
959
+ 'src/root.5/tailwind.css' : css `
960
+ /* Inject missing @config in this file, due to full import */
961
+ @import 'tailwindcss' ;
962
+ ` ,
963
+ } ,
964
+ } ,
965
+ async ( { exec, fs } ) => {
966
+ await exec ( 'npx @tailwindcss/upgrade --force' )
967
+
968
+ expect ( await fs . dumpFiles ( './src/**/*.{html,css}' ) ) . toMatchInlineSnapshot ( `
969
+ "
970
+ --- ./src/index.html ---
971
+ <h1>🤠👋</h1>
972
+ <div class="flex! sm:block! bg-linear-to-t bg-[var(--my-red)]"></div>
973
+
974
+ --- ./src/root.1.css ---
975
+ /* Inject missing @config */
976
+ @import 'tailwindcss';
977
+ @config "../tailwind.config.ts";
978
+
979
+ --- ./src/root.2.css ---
980
+ /* Already contains @config */
981
+ @import 'tailwindcss';
982
+ @config "../tailwind.config.js";
869
983
870
984
--- ./src/root.3.css ---
985
+ /* Inject missing @config above first @theme */
986
+ @import 'tailwindcss';
987
+ @config "../tailwind.config.ts";
988
+
989
+ @variant hocus (&:hover, &:focus);
990
+
991
+ @theme {
992
+ --color-red-500: #f00;
993
+ }
994
+
995
+ @theme {
996
+ --color-blue-500: #00f;
997
+ }
998
+
999
+ --- ./src/root.4.css ---
1000
+ /* Inject missing @config due to nested imports with tailwind imports */
1001
+ @import './root.4/base.css';
1002
+ @import './root.4/utilities.css';
1003
+ @config "../tailwind.config.ts";
1004
+
1005
+ --- ./src/root.5.css ---
1006
+ @import './root.5/tailwind.css';
1007
+
1008
+ --- ./src/root.4/base.css ---
1009
+ @import 'tailwindcss/theme' layer(theme);
1010
+ @import 'tailwindcss/preflight' layer(base);
1011
+
1012
+ --- ./src/root.4/utilities.css ---
871
1013
@import 'tailwindcss/utilities' layer(utilities);
872
- @import './a.1.css' layer(utilities);"
1014
+
1015
+ --- ./src/root.5/tailwind.css ---
1016
+ /* Inject missing @config in this file, due to full import */
1017
+ @import 'tailwindcss';
1018
+ @config "../../tailwind.config.ts";
1019
+ "
873
1020
` )
874
1021
} ,
875
1022
)
0 commit comments