@@ -2,7 +2,6 @@ import type { ParsedArgs } from 'minimist';
22import { DEFAULT_EXTENSIONS } from '../../constants.js' ;
33import type { Args } from '../../types/args.js' ;
44import type { IsPluginEnabled , Plugin , PluginOptions , ResolveConfig } from '../../types/config.js' ;
5- import type { PackageJson } from '../../types/package-json.js' ;
65import { _glob } from '../../util/glob.js' ;
76import { type Input , toAlias , toConfig , toDeferResolve , toDependency , toEntry } from '../../util/input.js' ;
87import { isAbsolute , isInternal , join , toPosix } from '../../util/path.js' ;
@@ -24,13 +23,8 @@ const mocks = ['**/__mocks__/**/*.[jt]s?(x)'];
2423
2524const entry = [ '**/*.{bench,test,test-d,spec}.?(c|m)[jt]s?(x)' , ...mocks ] ;
2625
27- const isVitestCoverageCommand = / v i t e s t ( .+ ) - - c o v e r a g e (?: \. e n a b l e d (?: = t r u e ) ? ) ? / ;
28-
29- const hasScriptWithCoverage = ( scripts : PackageJson [ 'scripts' ] ) =>
30- scripts ? Object . values ( scripts ) . some ( script => isVitestCoverageCommand . test ( script ) ) : false ;
31-
3226const findConfigDependencies = ( localConfig : ViteConfig , options : PluginOptions , vitestRoot : string ) => {
33- const { manifest , configFileDir : dir } = options ;
27+ const { configFileDir : dir } = options ;
3428 const testConfig = localConfig . test ;
3529
3630 if ( ! testConfig ) return [ ] ;
@@ -44,8 +38,7 @@ const findConfigDependencies = (localConfig: ViteConfig, options: PluginOptions,
4438 : [ ] ;
4539 const reporters = getExternalReporters ( testConfig . reporters ) ;
4640
47- const hasCoverageEnabled =
48- ( testConfig . coverage && testConfig . coverage . enabled !== false ) || hasScriptWithCoverage ( manifest . scripts ) ;
41+ const hasCoverageEnabled = testConfig . coverage && testConfig . coverage . enabled !== false ;
4942 const coverage = hasCoverageEnabled ? [ `@vitest/coverage-${ testConfig . coverage ?. provider ?? 'v8' } ` ] : [ ] ;
5043
5144 const setupFiles = [ testConfig . setupFiles ?? [ ] ] . flat ( ) . map ( specifier => ( { ...toDeferResolve ( specifier ) , dir : vitestRoot } ) ) ;
@@ -192,6 +185,21 @@ const args: Args = {
192185 resolveInputs : ( parsed : ParsedArgs ) => {
193186 const inputs : Input [ ] = [ ] ;
194187 if ( parsed [ 'ui' ] ) inputs . push ( toDependency ( '@vitest/ui' , { optional : true } ) ) ;
188+ if ( parsed [ 'coverage' ] ) {
189+ const provider = typeof parsed [ 'coverage' ] === 'object' ? parsed [ 'coverage' ] . provider : undefined ;
190+ inputs . push ( toDependency ( `@vitest/coverage-${ provider ?? 'v8' } ` ) ) ;
191+ }
192+ if ( parsed [ 'reporter' ] ) {
193+ for ( const reporter of getExternalReporters ( [ parsed [ 'reporter' ] ] . flat ( ) ) ) {
194+ inputs . push ( toDependency ( reporter ) ) ;
195+ }
196+ }
197+ if ( parsed [ 'environment' ] && parsed [ 'environment' ] !== 'node' ) {
198+ inputs . push ( toDependency ( getEnvSpecifier ( parsed [ 'environment' ] ) ) ) ;
199+ }
200+ if ( typeof parsed [ 'typecheck' ] === 'object' && parsed [ 'typecheck' ] . checker ) {
201+ inputs . push ( toDependency ( parsed [ 'typecheck' ] . checker === 'tsc' ? 'typescript' : parsed [ 'typecheck' ] . checker ) ) ;
202+ }
195203 return inputs ;
196204 } ,
197205} ;
0 commit comments