11const path = require ( 'path' )
22const spawn = require ( 'cross-spawn' )
3+ const yargsParser = require ( 'yargs-parser' )
34const rimraf = require ( 'rimraf' )
5+ const glob = require ( 'glob' )
46const { hasPkgProp, fromRoot, resolveBin, hasFile} = require ( '../../utils' )
57
68const args = process . argv . slice ( 2 )
79const here = p => path . join ( __dirname , p )
810
11+ const parsedArgs = yargsParser ( args )
12+
913const useBuiltinConfig =
1014 ! args . includes ( '--presets' ) &&
1115 ! hasFile ( '.babelrc' ) &&
@@ -16,14 +20,15 @@ const config = useBuiltinConfig
1620 ? [ '--presets' , here ( '../../config/babelrc.js' ) ]
1721 : [ ]
1822
19- const ignore = args . includes ( '--ignore' )
20- ? [ ]
21- : [ '--ignore' , '**/__tests__/**,**/__mocks__/**' ]
23+ const builtInIgnore = '**/__tests__/**,**/__mocks__/**'
24+
25+ const ignore = args . includes ( '--ignore' ) ? [ ] : [ '--ignore' , builtInIgnore ]
2226
2327const copyFiles = args . includes ( '--no-copy-files' ) ? [ ] : [ '--copy-files' ]
2428
2529const useSpecifiedOutDir = args . includes ( '--out-dir' )
26- const outDir = useSpecifiedOutDir ? [ ] : [ '--out-dir' , 'dist' ]
30+ const builtInOutDir = 'dist'
31+ const outDir = useSpecifiedOutDir ? [ ] : [ '--out-dir' , builtInOutDir ]
2732
2833if ( ! useSpecifiedOutDir && ! args . includes ( '--no-clean' ) ) {
2934 rimraf . sync ( fromRoot ( 'dist' ) )
@@ -35,4 +40,17 @@ const result = spawn.sync(
3540 { stdio : 'inherit' } ,
3641)
3742
43+ // because babel will copy even ignored files, we need to remove the ignored files
44+ const pathToOutDir = fromRoot ( parsedArgs . outDir || builtInOutDir )
45+ const ignoredPatterns = ( parsedArgs . ignore || builtInIgnore )
46+ . split ( ',' )
47+ . map ( pattern => path . join ( pathToOutDir , pattern ) )
48+ const ignoredFiles = ignoredPatterns . reduce (
49+ ( all , pattern ) => [ ...all , ...glob . sync ( pattern ) ] ,
50+ [ ] ,
51+ )
52+ ignoredFiles . forEach ( ignoredFile => {
53+ rimraf . sync ( ignoredFile )
54+ } )
55+
3856process . exit ( result . status )
0 commit comments