gpt4 book ai didi

javascript - 如何从节点中现有的源映射生成新的源映射?

转载 作者:行者123 更新时间:2023-11-30 05:43:20 25 4
gpt4 key购买 nike

我正在编写一个工具,使用 browserify 转换将几行添加到许多 JavaScript 文件的顶部和底部。我想弄清楚如何生成源 map ,其中包括原始源转换以及删除由我的附加行创建的偏移量。例如:

# original source file - test.coffee
console.log "test"

这是使用 coffeescript 编译器转换成

// Generated by CoffeeScript 1.6.3
(function() {
console.log("test");

}).call(this);

/*
//@ sourceMappingURL=test.map
*/

coffeescript 编译器还提供了一个 sourceMappingURL,它指向一个类似

的映射
{
"version": 3,
"file": "test.js",
"sourceRoot": "",
"sources": [
"test.coffee"
],
"names": [],
"mappings": ";AAAA;CAAA,CAAA,CAAA,GAAA,CAAO;CAAP"
}

我需要通过在前后添加几行来修改 JavaScript 文件输出。

my.instrumentation.line(1);
my.instrumentation.line(2);
// Generated by CoffeeScript 1.6.3
(function() {
console.log("test");

}).call(this);
my.instrumentation.line(8);
my.instrumentation.line(9);

我需要弄清楚如何使用 coffeescript 编译器提供的映射文件来映射我的更改,并通过 coffeescript 编译器一直返回到原始 coffeescript 源。

目前,只要没有额外的源映射可以使用,我就可以进行源映射。例如,如果我从 JS 而不是 CS 开始,我可以使用 Thorsten Lorzen's inline-source-map library 生成源映射。只要没有进行第二级转换,它就可以正常工作。在同一原始源上组合多个源映射时,我完全不知道该怎么做。

如有任何帮助或建议,我们将不胜感激。

最佳答案

I need to figure out how to use the mapping file that the coffeescript compiler provides to map through my changes, and through the coffeescript compiler, all the way back to the original coffeescript source.

使用 Mozilla 提供的 API source-map项目。

使用applySourceMap 方法。它执行以下操作:

Applies a SourceMap for a source file to the SourceMap. Each mapping to the supplied source file is rewritten using the supplied SourceMap. Note: The resolution for the resulting mappings is the minimum of this map and the supplied map.

allGeneratedPostionsfor 方法。它执行以下操作:

Returns all generated line and column information for the original source, line, and column provided. If no column is provided, returns all mappings corresponding to a either the line we are searching for or the next closest line that has any mappings. Otherwise, returns all mappings corresponding to the given line and either the column we are searching for or the next closest column that has any offsets.

关于javascript - 如何从节点中现有的源映射生成新的源映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19496113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com