Skip to content

Instantly share code, notes, and snippets.

@banyudu
Created October 2, 2020 01:38
Show Gist options
  • Save banyudu/b17a9cb3f05296b76a9f3051f66c3dcd to your computer and use it in GitHub Desktop.
Save banyudu/b17a9cb3f05296b76a9f3051f66c3dcd to your computer and use it in GitHub Desktop.
Extract source code from source map
#!/usr/bin/env ts-node
import * as fs from 'fs'
import * as path from 'path'
import { promisify } from 'util'
import { SourceMapConsumer } from 'source-map'
const writeFile = promisify(fs.writeFile)
const mapFile = process.argv[2]
if (!mapFile) {
console.error('no input file given')
process.exit(1)
}
const mapFileContent = fs.readFileSync(mapFile, 'utf-8')
const outputDir = path.join(__dirname, 'output')
fs.mkdirSync(outputDir, {
recursive: true
})
new SourceMapConsumer(mapFileContent).then(consumer => {
Promise.all(consumer.sources.map(async (source) => {
const content = consumer.sourceContentFor(source)
const outputPath = path.join(outputDir, source)
fs.mkdirSync(path.dirname(outputPath), { recursive: true })
return writeFile(outputPath, content)
}))
}).catch(console.error)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment