merge-source-map

    1.0.4 • Public • Published

    merge-source-map

    npm-version travis-ci Coverage Status

    Merge old source map and new source map in multi-transform flow

    API

    var merge = require('merge-source-map')

    merge(oldMap, newMap)

    Merge old source map and new source map and return merged. If old or new source map value is falsy, return another one as it is.

    oldMap : object|undefined
    old source map object
    newmap : object|undefined
    new source map object

    Example

    var esprima    = require('esprima'),
        estraverse = require('estraverse'),
        escodegen  = require('escodegen'),
        convert    = require('convert-source-map'),
        merge      = require('merge-source-map')
     
    const CODE = 'a = 1',
          FILEPATH = 'a.js'
     
    // create AST of original code
    var ast = esprima.parse(CODE, {sourceType: 'module', loc: true})
     
    // transform AST of original code
    estraverse.replace(ast, {
      enter: function(node, parent) { /* change AST */ },
      leave: function(node, parent) { /* change AST */ }
    })
     
    // generate code and source map from transformed AST
    var gen = escodegen.generate(ast, {
      sourceMap: FILEPATH,
      sourceMapWithCode: true,
      sourceContent: CODE
    })
     
    // merge old source map and new source map
    var oldMap = convert.fromSource(CODE) && convert.fromSource(CODE).toObject(),
        newMap = JSON.parse(gen.map.toString()),
        mergedMap = merge(oldMap, newMap),
        mapComment = convert.fromObject(mergedMap).toComment()
     
    // attach merge source map to transformed code
    var transformed = gen.code + '\n' + mapComment
     
    console.log(transformed);

    Test

    % npm install
    % npm test
    

    License

    MIT (c) keik

    Install

    npm i [email protected]

    Version

    1.0.4

    License

    MIT

    Last publish

    Collaborators

    • keik