用Source-Map取想要的源代码

438 阅读1分钟

用Source-Map取想要的源代码

github:source-map
const sourceMap = require('source-map')
const fs = require('fs')
const file = fs.readFileSync('./album.bffb6c76.js.map').toString()
const consumer = new sourceMap.SourceMapConsumer(file)
/**
   * @params line 行数
   * @params column 列数
   * @description 传入要查找的行列数,查找到压缩前的源文件
   */
const po = consumer.originalPositionFor({line: 1, column: 2000 })
/**
   * @params source 源内容
   * @description 查找原内容
   */
const co = consumer.sourceContentFor(po.source, true)
// 根据查到的source,到源文件列表中查找索引位置
  if (co) {
    const a = co.split(/\r?\n/g)
    const topLine = 5
    const bottonLine = 4
    // 去大概行数
    let str = ''
    for (let i = 0; i < a.length; i++) {
      const isLine = i >= 113 - topLine && i <= 113 + bottonLine
      if (isLine) str += a[i] + '\r\n' 
    }
    // 销毁
    consumer.destroy()
    console.log('sourceMap', str)
  }