Skip to content

Commit e6a7cd4

Browse files
fix(prepublish): Use babel directly
#24
1 parent 5ecbd27 commit e6a7cd4

File tree

1 file changed

+41
-5
lines changed

1 file changed

+41
-5
lines changed

bin/mastarm

+41-5
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,51 @@ commander
9494
}))
9595
})
9696

97-
const BABEL = path.join(__dirname, '../node_modules/.bin/babel')
9897
commander
9998
.command('prepublish [entries...]')
10099
.description('Transpile JavaScript down to ES5 with Babel')
101-
.action(function (entries, options) {
100+
.action(function (entries) {
102101
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+
}
106142
})
107143

108144
commander.parse(process.argv)

0 commit comments

Comments
 (0)