@@ -22,12 +22,15 @@ export const blockVitest = base.createBlock({
22
22
addons : {
23
23
coverage : z
24
24
. object ( {
25
- directory : z . string ( ) ,
25
+ directory : z . string ( ) . optional ( ) ,
26
+ exclude : z . array ( z . string ( ) ) . optional ( ) ,
26
27
flags : z . string ( ) . optional ( ) ,
28
+ include : z . array ( z . string ( ) ) . optional ( ) ,
27
29
} )
28
- . default ( { directory : "coverage" } ) ,
30
+ . default ( { } ) ,
31
+ env : z . record ( z . string ( ) , z . string ( ) ) . default ( { } ) ,
29
32
exclude : z . array ( z . string ( ) ) . default ( [ ] ) ,
30
- include : z . array ( z . string ( ) ) . default ( [ ] ) ,
33
+ flags : z . array ( z . string ( ) ) . default ( [ ] ) ,
31
34
} ,
32
35
migrate ( ) {
33
36
return {
@@ -42,14 +45,14 @@ export const blockVitest = base.createBlock({
42
45
} ;
43
46
} ,
44
47
produce ( { addons } ) {
45
- const { coverage, exclude = [ ] , include = [ ] } = addons ;
48
+ const { coverage, env, exclude = [ ] , flags } = addons ;
49
+ const coverageDirectory = coverage . directory ?? "coverage" ;
46
50
const excludeText = JSON . stringify ( exclude ) ;
47
- const includeText = JSON . stringify ( include ) ;
48
51
49
52
return {
50
53
addons : [
51
54
blockCSpell ( {
52
- ignores : [ coverage . directory ] ,
55
+ ignores : [ coverageDirectory ] ,
53
56
} ) ,
54
57
blockDevelopmentDocs ( {
55
58
sections : {
@@ -90,7 +93,7 @@ Calls to \`console.log\`, \`console.warn\`, and other console methods will cause
90
93
] ,
91
94
} ,
92
95
] ,
93
- ignores : [ coverage . directory , "**/*.snap" ] ,
96
+ ignores : [ coverageDirectory , "**/*.snap" ] ,
94
97
imports : [ { source : "@vitest/eslint-plugin" , specifier : "vitest" } ] ,
95
98
} ) ,
96
99
blockExampleFiles ( {
@@ -143,7 +146,7 @@ describe("greet", () => {
143
146
} ,
144
147
} ) ,
145
148
blockGitignore ( {
146
- ignores : [ `/${ coverage . directory } ` ] ,
149
+ ignores : [ `/${ coverageDirectory } ` ] ,
147
150
} ) ,
148
151
blockGitHubActionsCI ( {
149
152
jobs : [
@@ -152,6 +155,7 @@ describe("greet", () => {
152
155
steps : [
153
156
{ run : "pnpm run test --coverage" } ,
154
157
{
158
+ ...( Object . keys ( env ) . length && { env } ) ,
155
159
if : "always()" ,
156
160
uses : "codecov/codecov-action@v3" ,
157
161
...( coverage . flags && { with : { flags : coverage . flags } } ) ,
@@ -177,12 +181,12 @@ describe("greet", () => {
177
181
"vitest" ,
178
182
) ,
179
183
scripts : {
180
- test : " vitest" ,
184
+ test : ` vitest ${ flags . join ( " " ) } ` . trim ( ) ,
181
185
} ,
182
186
} ,
183
187
} ) ,
184
188
blockPrettier ( {
185
- ignores : [ `/${ coverage . directory } ` ] ,
189
+ ignores : [ `/${ coverageDirectory } ` ] ,
186
190
} ) ,
187
191
blockTSup ( {
188
192
entry : [ "!src/**/*.test.*" ] ,
@@ -212,8 +216,12 @@ export default defineConfig({
212
216
clearMocks: true,
213
217
coverage: {
214
218
all: true,
215
- exclude: ${ excludeText } ,
216
- include: ${ includeText } ,
219
+ ${
220
+ coverage . exclude ?. length
221
+ ? `exclude: ${ JSON . stringify ( coverage . exclude ) } ,
222
+ `
223
+ : ""
224
+ } include: ${ JSON . stringify ( coverage . include ) } ,
217
225
reporter: ["html", "lcov"],
218
226
},
219
227
exclude: [${ excludeText . slice ( 1 , excludeText . length - 1 ) } , "node_modules"],
0 commit comments