all files / babel/ index.js

100% Statements 21/21
100% Branches 4/4
100% Functions 3/3
100% Lines 21/21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                                       
 
'use strict'
 
let core = require('babel-core')
let debug = require('debug')('mako-babel')
let defaults = require('defaults')
let utils = require('mako-utils')
 
let compile = core.transform
let shouldIgnore = core.util.shouldIgnore
 
module.exports = function (options) {
  debug('initialize %j', options)
 
  let config = defaults(options, {
    extensions: 'js',
    ignore: [ /node_modules/i ],
    plugins: [],
    presets: [],
    only: null,
    sourceMaps: false
  })
 
  return function (mako) {
    mako.postread(config.extensions, function babel (file, build) {
      if (shouldIgnore(file.path, config.ignore, config.only)) {
        return debug('ignoring %s', utils.relative(file.path))
      }
 
      let relative = utils.relative(file.path)
      debug('compiling %s', relative)
 
      let before = utils.size(file.contents, true)
      let results = compile(file.contents.toString(), {
        filename: file.path,
        sourceMaps: config.sourceMaps ? 'inline' : false,
        plugins: config.plugins,
        presets: config.presets
      })
 
      file.contents = Buffer.from(results.code)
      file.type = 'js'
 
      let after = utils.size(file.contents, true)
      debug('compiled %s %s', relative, utils.sizeDiff(before, after))
    })
  }
}