convert-source-map 
将源映射从/转换为不同的格式,并允许添加/更改属性。
var convert = require('convert-source-map');
var json = convert
.fromComment('//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQvZm9vLm1pbi5qcyIsInNvdXJjZXMiOlsic3JjL2Zvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIvIn0=')
.toJSON();
var modified = convert
.fromComment('//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQvZm9vLm1pbi5qcyIsInNvdXJjZXMiOlsic3JjL2Zvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIvIn0=')
.setProperty('sources', [ 'SRC/FOO.JS' ])
.toJSON();
console.log(json);
console.log(modified);
{"version":3,"file":"build/foo.min.js","sources":["src/foo.js"],"names":[],"mappings":"AAAA","sourceRoot":"/"}
{"version":3,"file":"build/foo.min.js","sources":["SRC/FOO.JS"],"names":[],"mappings":"AAAA","sourceRoot":"/"}
升级
在v2.0.0之前, fromMapFileComment 和 fromMapFileSource 函数接受一个String目录路径,并使用该路径从文件系统中解析和读取源映射文件。然而,这使得该库仅限于nodejs环境,并破坏了带有查询字符串的源代码。
在v2.0.0中,现在需要传递一个函数来读取文件。它将以字符串的形式接收源文件名,您可以将其解析为文件系统路径、URL或其他任何内容。
如果你正在使用 convert-source-map 在nodejs中,如果你想要之前的行为,你可以使用这样的函数:
+ var fs = require('fs'); // Import the fs module to read a file
+ var path = require('path'); // Import the path module to resolve a path against your directory
- var conv = convert.fromMapFileSource(css, '../my-dir');
+ var conv = convert.fromMapFileSource(css, function (filename) {
+ return fs.readFileSync(path.resolve('../my-dir', filename), 'utf-8');
+ });
API
fromObject (obj)
从给定对象返回源映射转换器。
fromJSON (json)
从给定的json字符串返回源映射转换器。
fromURI (uri)
从给定uri编码的json字符串返回源映射转换器。
fromBase64 (base64)
从给定的base64编码json字符串返回源映射转换器。
fromComment(评论)
从给定的base64或uri编码的json字符串返回源映射转换器 //# sourceMappingURL=...。
readMap fromMapFileComment(评论)
从给定返回源映射转换器 filename 通过解析 //# sourceMappingURL=filename。
readMap 必须是一个函数,它接收源映射文件名并返回源映射的String或Buffer(如果同步读取),或 Promise 包含源映射的String或Buffer(如果异步读取)。
如果 readMap 不返回a Promise, fromMapFileComment 将同步返回源映射转换器。
如果 readMap 返回一个 Promise, fromMapFileComment 也会返回 Promise。这个 Promise 将被源映射转换器解决,或者被错误拒绝。
例子
Node.js中的同步读取:
var convert = require('convert-source-map');
var fs = require('fs');
function readMap(filename) {
return fs.readFileSync(filename, 'utf8');
}
var json = convert
.fromMapFileComment('//# sourceMappingURL=map-file-comment.css.map', readMap)
.toJSON();
console.log(json);
Node.js中的异步读取:
var convert = require('convert-source-map');
var { promises: fs } = require('fs'); // Notice the `promises` import
function readMap(filename) {
return fs.readFile(filename, 'utf8');
}
var converter = await convert.fromMapFileComment('//# sourceMappingURL=map-file-comment.css.map', readMap)
var json = converter.toJSON();
console.log(json);
在浏览器中异步读取:
var convert = require('convert-source-map');
async function readMap(url) {
const res = await fetch(url);
return res.text();
}
const converter = await convert.fromMapFileComment('//# sourceMappingURL=map-file-comment.css.map', readMap)
var json = converter.toJSON();
console.log(json);
fromSource(源)
查找文件中的最后一个源映射注释并返回源映射转换器或返回 null 如果没有找到源映射注释。
readMap fromMapFileSource(源)
查找文件中的最后一个源映射注释并返回源映射转换器或返回 null 如果没有找到源映射注释。
readMap 必须是一个函数,它接收源映射文件名并返回源映射的String或Buffer(如果同步读取),或 Promise 包含源映射的String或Buffer(如果异步读取)。
如果 readMap 不返回a Promise, fromMapFileSource 将同步返回源映射转换器。
如果 readMap 返回一个 Promise, fromMapFileSource 也会返回 Promise。这个 Promise 将被源映射转换器解决,或者被错误拒绝。
toObject ()
返回基础源映射的副本。
toJSON((空间))
将源映射转换为json字符串。如果 space 是给定的(可选),这将传递给
JSON.stringify 当
生成JSON字符串。
toURI ()
将源映射转换为uri编码的json字符串。
toBase64 ()
将源映射转换为base64编码的json字符串。
toComment([选项])
将源映射转换为可附加到源文件的内联注释。
默认情况下,注释的格式如下: //# sourceMappingURL=...,你会
通常可以在JS源文件中看到。
当 options.encoding == 'uri',则数据将被uri编码,否则将被base64编码。
当 options.multiline == true,注释的格式如下: /*# sourceMappingURL=... */,可以在CSS源文件中找到。
addProperty(关键字,值)
将给定的属性添加到源映射。如果属性已经存在,则抛出错误。
setProperty(关键字,值)
将给定的属性设置为源映射。如果属性不存在,则添加它,否则更新它的值。
getProperty(键)
获取源映射的给定属性。
removeComments (src)
返回 src 删除所有源映射注释
removeMapFileComments (src)
返回 src 删除所有指向映射文件的源映射注释。
commentRegex
提供了 一个新鲜的 每次访问时使用RegExp。可以用来查找源映射注释。
将源映射注释分成几个组:1:媒体类型,2:MIME类型,3:字符集,4:编码,5:数据。
mapFileCommentRegex
提供了 一个新鲜的 每次访问时使用RegExp。可以用来查找指向映射文件的源映射注释。
[选项]generateMapFileComment(文件)
返回链接到外部源映射的注释 file。
默认情况下,注释的格式如下: //# sourceMappingURL=...通常会在JS源文件中看到。
当 options.multiline == true,注释的格式如下: /*# sourceMappingURL=... */,可以在CSS源文件中找到。