Crates.io | merge-source-map |
lib.rs | merge-source-map |
version | 1.2.0 |
source | src |
created_at | 2023-12-07 11:19:55.456727 |
updated_at | 2023-12-11 07:32:45.671378 |
description | Merge multiple sourcemaps |
homepage | |
repository | https://github.com/jiesia/merge-source-map |
max_upload_size | |
id | 1060915 |
size | 15,457 |
English | 中文
Merge multiple sourcemaps.
cargo add sourcemap merge-source-map
Here I will use a case to let you know how to use it.
Suppose you now have a file named index.ts
:
function sayHello(name: string) {
console.log(`Hello, ${name}`);
}
First use tsc
(with sourceMap and inlineSources options) to compile it to index.js
:
function sayHello(name) {
console.log("Hello, ".concat(name));
}
At the same time, a file named index.js.map
will be obtained:
{
"version": 3,
"file": "index.js",
"sourceRoot": "",
"sources": [
"index.ts"
],
"names": [],
"mappings": "AAAA,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,CAAC,GAAG,CAAC,iBAAU,IAAI,CAAE,CAAC,CAAC;AAChC,CAAC",
"sourcesContent": [
"function sayHello(name: string) {\n console.log(`Hello, ${name}`);\n}\n"
]
}
Then hand the index.js
compiled product to swc for compression, and get the compressed product and another file named minify.js.map
:
function sayHello(o){console.log("Hello, ".concat(o))}
{
"version": 3,
"file": "minify.js",
"sourceRoot": "",
"sources": [
"index.js"
],
"names": [
"sayHello",
"name",
"console",
"log",
"concat"
],
"mappings": "AAAA,SAASA,SAASC,CAAI,EAClBC,QAAQC,GAAG,CAAC,UAAUC,MAAM,CAACH,GACjC",
"sourcesContent": [
"function sayHello(name) {\n console.log(\"Hello, \".concat(name));\n}\n"
]
}
So how to merge two sourcemaps?
use merge_source_map::merge;
use sourcemap::SourceMap;
fn main() {
let sourcemap1 = r#"{
"version": 3,
"file": "index.js",
"sourceRoot": "",
"sources": [
"index.ts"
],
"names": [],
"mappings": "AAAA,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,CAAC,GAAG,CAAC,iBAAU,IAAI,CAAE,CAAC,CAAC;AAChC,CAAC",
"sourcesContent": [
"function sayHello(name: string) {\n console.log(`Hello, ${name}`);\n}\n"
]
}"#;
let sourcemap2 = r#"{
"version": 3,
"file": "minify.js",
"sourceRoot": "",
"sources": [
"index.js"
],
"names": [
"sayHello",
"name",
"console",
"log",
"concat"
],
"mappings": "AAAA,SAASA,SAASC,CAAI,EAClBC,QAAQC,GAAG,CAAC,UAAUC,MAAM,CAACH,GACjC",
"sourcesContent": [
"function sayHello(name) {\n console.log(\"Hello, \".concat(name));\n}\n"
]
}"#;
// merge sourcemap
let merged = merge(
vec![
SourceMap::from_reader(sourcemap1.as_bytes()).unwrap(),
SourceMap::from_reader(sourcemap2.as_bytes()).unwrap(),
],
Default::default(),
);
let mut buf = vec![];
merged.to_writer(&mut buf).unwrap();
let merged = String::from_utf8(buf).unwrap();
}
Merged sourcemap:
{
"version": 3,
"sources": [
"index.ts"
],
"sourcesContent": [
"function sayHello(name: string) {\n console.log(`Hello, ${name}`);\n}\n"
],
"names": [],
"mappings": "AAAA,SAAS,SAAS,CAAY,EAC5B,QAAQ,GAAG,CAAC,UAAA,MAAA,CAAU,GACxB"
}
You can view result here.
MIT