Javascript 如何使用sourcemaps还原原始文件?
我有一个使用Babel从ES6传输到ES5的文件。我有原始地图。我假设我可以使用这些资源恢复原始文件(在ES6中编写时的样子) 怎么做的Javascript 如何使用sourcemaps还原原始文件?,javascript,source-maps,Javascript,Source Maps,我有一个使用Babel从ES6传输到ES5的文件。我有原始地图。我假设我可以使用这些资源恢复原始文件(在ES6中编写时的样子) 怎么做的 是否有CLI工具可以执行此操作?在文本编辑器中打开源代码映射,您将看到它基本上只是一个简单的JSON对象。“sources”字段包含指向所有源文件的URL/路径数组,可以帮助您找到它们。还有一个可选的“sourcesContent”字段,也是一个数组,其中每个项都包含“sources”数组中相同索引处的文件内容;如果是这样,您可以在源代码映射中找到原始代码 C
是否有CLI工具可以执行此操作?在文本编辑器中打开源代码映射,您将看到它基本上只是一个简单的JSON对象。“sources”字段包含指向所有源文件的URL/路径数组,可以帮助您找到它们。还有一个可选的“sourcesContent”字段,也是一个数组,其中每个项都包含“sources”数组中相同索引处的文件内容;如果是这样,您可以在源代码映射中找到原始代码
CLI工具?嗯,有一种方法试图找到所有原始源代码并将它们预加载到此中。非常简单的NodeJS实现,我是根据自己的需要编写的
const fs = require('fs');
const { SourceMapConsumer } = require("source-map");
fs.readFile('./example.js', 'utf8' , (err, data) => {
if (err) return console.error(err);
const sourceMapData = data.split('//# sourceMappingURL=data:application/json;base64,')[1];
let buff = new Buffer.from(sourceMapData, 'base64');
let rawSourceMap = buff.toString('ascii');
const parsed = SourceMapConsumer(rawSourceMap);
fs.writeFile('example.ts', parsed.sourcesContent, function (err) {
if (err) return console.log(err);
});
});
我认为最基本的方法是使用Mozilla
sourcemap
包,例如sourcemap.SourceMapConsumer(map.sourcesContent[0]
。考虑将此添加到您的答案。@ GajusKuizinas绝对不需要使用<代码>源映射< /代码>包来完成此任务。code>JSON.parse(map).sourcesContent[0]也会做同样的事情。我没有意识到这一点。谢谢。代码中的错误太多了。