@@ -94,15 +94,51 @@ commander
94
94
} ) )
95
95
} )
96
96
97
- const BABEL = path . join ( __dirname , '../node_modules/.bin/babel' )
98
97
commander
99
98
. command ( 'prepublish [entries...]' )
100
99
. description ( 'Transpile JavaScript down to ES5 with Babel' )
101
- . action ( function ( entries , options ) {
100
+ . action ( function ( entries ) {
102
101
checkDependencies ( )
103
- const exec = require ( 'child_process' ) . execSync
104
- entries . forEach ( ( entry ) =>
105
- exec ( `${ BABEL } ${ entry } --out-dir build --source-maps` ) )
102
+ const babel = require ( 'babel-core' )
103
+ const fs = require ( 'fs' )
104
+ const glob = require ( 'glob' )
105
+ const mkdirp = require ( 'mkdirp' )
106
+ const outdir = path . join ( process . cwd ( ) , 'build' )
107
+ const options = {
108
+ presets : [
109
+ require ( 'babel-preset-es2015' ) ,
110
+ require ( 'babel-preset-react' ) ,
111
+ require ( 'babel-preset-stage-0' )
112
+ ] ,
113
+ plugins : [
114
+ require ( 'babel-plugin-add-module-exports' ) ,
115
+ require ( 'babel-plugin-transform-runtime' )
116
+ ] ,
117
+ sourceMaps : true
118
+ }
119
+ entries . forEach ( ( entry ) => {
120
+ if ( fs . statSync ( entry ) . isDirectory ( ) ) {
121
+ transformDir ( entry )
122
+ } else {
123
+ transformFile ( entry )
124
+ }
125
+ } )
126
+ function transformFile ( filename ) {
127
+ const filepath = path . join ( outdir , filename )
128
+ const results = babel . transform (
129
+ fs . readFileSync ( filename , 'utf8' ) ,
130
+ Object . assign ( { } , options , { filename} )
131
+ )
132
+ mkdirp . sync ( path . dirname ( filepath ) )
133
+ fs . writeFileSync ( filepath , results . code + '\n//# sourceMappingURL=' + path . basename ( filepath ) )
134
+ fs . writeFileSync ( `${ filepath } .map` , JSON . stringify ( results . map ) )
135
+ }
136
+ function transformDir ( dir ) {
137
+ glob ( `${ dir } /**/*.js` , ( err , files ) => {
138
+ if ( err ) console . error ( err )
139
+ files . forEach ( transformFile )
140
+ } )
141
+ }
106
142
} )
107
143
108
144
commander . parse ( process . argv )
0 commit comments