thlorenz / combine-source-map

Add source maps of multiple files, offset them and then combine them into one source map.
MIT License
79 stars 19 forks source link

Offset Line #17

Open F1LT3R opened 9 years ago

F1LT3R commented 9 years ago

Hi @thlorenz I am wondering about your use of offset line.

I've taken your code and tried to add a third file to the map:

var convert = require('convert-source-map');
var combine = require('combine-source-map');

var foo = {
  version        :  3,
  file           :  'foo.js',
  sourceRoot     :  '',
  sources        :  [ 'foo.coffee' ],
  names          :  [],
  mappings       :  ';AAAA;CAAA;CAAA,CAAA,CAAA,IAAO,GAAK;CAAZ',
  sourcesContent :  [ 'console.log(require \'./bar.js\')\n' ]
};

var bar = {
  version        :  3,
  file           :  'bar.js',
  sourceRoot     :  '',
  sources        :  [ 'bar.coffee' ],
  names          :  [],
  mappings       :  ';AAAA;CAAA;CAAA,CAAA,CAAA,IAAO,GAAK;CAAZ',
  sourcesContent :  [ 'console.log(alert \'alerts suck\')\n' ]
};

var bar3 = {
  version        :  3,
  file           :  'bar3.js',
  sourceRoot     :  '',
  sources        :  [ 'bar3.coffee' ],
  names          :  [],
  mappings       :  ';AAAA;CAAA;CAAA,CAAA,CAAA,IAAO,GAAK;CAAZ',
  sourcesContent :  [ 'console.log(alert \'alerts suck3\')\n' ]
};

var fooComment = convert.fromObject(foo).toComment();
var barComment = convert.fromObject(bar).toComment();
var bar3Comment = convert.fromObject(bar3).toComment();

var fooFile = {
    source: '(function() {\n\n  console.log(require(\'./bar.js\'));\n\n}).call(this);\n' + '\n' + fooComment
  , sourceFile: 'foo.js'
};
var barFile = {
    source: '(function() {\n\n  console.log(alert(\'alerts suck\'));\n\n}).call(this);\n' + '\n' + barComment
  , sourceFile: 'bar.js'
};
var barFile3 = {
    source: '(function() {\n\n  console.log(alert(\'alerts suck 3\'));\n\n}).call(this);\n' + '\n' + bar3Comment
  , sourceFile: 'bar3.js'
};

var offset = { line: 2 };
var base64 = combine
  .create('bundle.js')
  .addFile(fooFile, offset)
  .addFile(barFile, { line: offset.line + 8 })
  .addFile(barFile3, { line: offset.line + 8 })
  .base64();

var sm = convert.fromBase64(base64).toObject();
console.log('Combined source maps:\n', sm);
console.log('\nMappings:\n', sm.mappings);

This seems to work fine, but what I would like to check with you... is if .addFile(barFile3, { line: offset.line + 8 }) will work for adding the third file (all all subsequent files)?

treshugart commented 9 years ago

I also don't understand the significance of the lines in the example. What does 2 mean? What does 8 mean? I've tried to make educated guesses but no number I guess at seems to give me the correct line in my source maps.