92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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
 |