@@ -17,9 +17,6 @@ const debug = require('debug')('code-coverage')
17
17
18
18
// these are standard folder and file names used by NYC tools
19
19
const processWorkingDirectory = process . cwd ( )
20
- const outputFolder = '.nyc_output'
21
- const coverageFolder = join ( processWorkingDirectory , outputFolder )
22
- const nycFilename = join ( coverageFolder , 'out.json' )
23
20
24
21
// there might be custom "nyc" options in the user package.json
25
22
// see https://github.com/istanbuljs/nyc#configuring-nyc
@@ -33,10 +30,38 @@ const scripts = pkg.scripts || {}
33
30
const DEFAULT_CUSTOM_COVERAGE_SCRIPT_NAME = 'coverage:report'
34
31
const customNycReportScript = scripts [ DEFAULT_CUSTOM_COVERAGE_SCRIPT_NAME ]
35
32
33
+ const nycReportOptions = ( function getNycOption ( ) {
34
+ // https://github.com/istanbuljs/nyc#common-configuration-options
35
+ const nycReportOptions = readNycOptions ( processWorkingDirectory )
36
+
37
+ if ( nycReportOptions . exclude && ! Array . isArray ( nycReportOptions . exclude ) ) {
38
+ console . error ( 'NYC options: %o' , nycReportOptions )
39
+ throw new Error ( 'Expected "exclude" to by an array' )
40
+ }
41
+
42
+ if ( nycReportOptions [ 'temp-dir' ] ) {
43
+ nycReportOptions [ 'temp-dir' ] = resolve ( nycReportOptions [ 'temp-dir' ] )
44
+ } else {
45
+ nycReportOptions [ 'temp-dir' ] = join ( processWorkingDirectory , '.nyc_output' )
46
+ }
47
+
48
+ nycReportOptions . tempDir = nycReportOptions [ 'temp-dir' ]
49
+
50
+ if ( nycReportOptions [ 'report-dir' ] ) {
51
+ nycReportOptions [ 'report-dir' ] = resolve ( nycReportOptions [ 'report-dir' ] )
52
+ }
53
+ // seems nyc API really is using camel cased version
54
+ nycReportOptions . reportDir = nycReportOptions [ 'report-dir' ]
55
+
56
+ return nycReportOptions
57
+ } ) ( )
58
+
59
+ const nycFilename = join ( nycReportOptions [ 'temp-dir' ] , 'out.json' )
60
+
36
61
function saveCoverage ( coverage ) {
37
- if ( ! existsSync ( coverageFolder ) ) {
38
- mkdirSync ( coverageFolder )
39
- debug ( 'created folder %s for output coverage' , coverageFolder )
62
+ if ( ! existsSync ( nycReportOptions . tempDir ) ) {
63
+ mkdirSync ( nycReportOptions . tempDir )
64
+ debug ( 'created folder %s for output coverage' , nycReportOptions . tempDir )
40
65
}
41
66
42
67
writeFileSync ( nycFilename , JSON . stringify ( coverage , null , 2 ) )
@@ -164,22 +189,6 @@ const tasks = {
164
189
} )
165
190
}
166
191
167
- // https://github.com/istanbuljs/nyc#common-configuration-options
168
- const nycReportOptions = readNycOptions ( processWorkingDirectory )
169
-
170
- if ( nycReportOptions . exclude && ! Array . isArray ( nycReportOptions . exclude ) ) {
171
- console . error ( 'NYC options: %o' , nycReportOptions )
172
- throw new Error ( 'Expected "exclude" to by an array' )
173
- }
174
-
175
- // override a couple of options
176
- nycReportOptions . tempDir = coverageFolder
177
- if ( nycReportOptions [ 'report-dir' ] ) {
178
- nycReportOptions [ 'report-dir' ] = resolve ( nycReportOptions [ 'report-dir' ] )
179
- }
180
- // seems nyc API really is using camel cased version
181
- nycReportOptions . reportDir = nycReportOptions [ 'report-dir' ]
182
-
183
192
if ( nycReportOptions . all ) {
184
193
debug ( 'nyc needs to report on all included files' )
185
194
includeAllFiles ( nycFilename , nycReportOptions )
0 commit comments