12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # merge-source-map
- [](https://npmjs.org/package/merge-source-map)
- [](https://npmjs.org/package/merge-source-map)
- [](https://travis-ci.org/keik/merge-source-map)
- [](https://coveralls.io/github/keik/merge-source-map)
- Merge old source map and new source map in multi-transform flow
- # API
- ```javascript
- 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.
- <dl>
- <dt>
- <code>oldMap</code> : <code>object|undefined</code>
- </dt>
- <dd>
- old source map object
- </dd>
- <dt>
- <code>newmap</code> : <code>object|undefined</code>
- </dt>
- <dd>
- new source map object
- </dd>
- </dl>
- # Example
- ```javascript
- 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
|