youemdee
Version:
Wrap a browserify/browser-pack JavaScript bundle in a Universal Module Definition (UMD) with optional external dependencies, while preserving source maps
40 lines (33 loc) • 1.15 kB
JavaScript
const { fromSource, removeComments, fromObject } = require('convert-source-map')
const { SourceMapConsumer, SourceNode } = require('source-map')
const through = require('through2')
const createPrologue = require('./create-prologue.js')
const createEpilogue = require('./create-epilogue.js')
function youemdee (src, name, deps = []) {
const prologue = createPrologue(name, deps)
const epilogue = createEpilogue(deps)
const map = fromSource(src)
if (map) {
const consumer = new SourceMapConsumer(map.toJSON())
const node = SourceNode.fromStringWithSourceMap(removeComments(src), consumer)
node.prepend(prologue)
node.add(epilogue)
const updated = node.toStringWithSourceMap()
return updated.code + '\n' + fromObject(updated.map).toComment()
} else {
return prologue + src + epilogue
}
}
function createTransform (name, deps) {
let src = ''
function transform (data, enc, cb) {
src += data.toString()
cb()
}
function flush (cb) {
cb(null, youemdee(src, name, deps))
}
return through(transform, flush)
}
module.exports = youemdee
module.exports.createTransform = createTransform