Skip to content

Commit 6b174aa

Browse files
committed
Add inputSourceMap option to Node binding
1 parent b16db40 commit 6b174aa

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

node/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ export interface TransformOptions {
99
minify?: boolean,
1010
/** Whether to output a source map. */
1111
sourceMap?: boolean,
12+
/** An input source map to extend. */
13+
inputSourceMap?: string,
1214
/** The browser targets for the generated code. */
1315
targets?: Targets,
1416
/** Whether to enable various draft syntax. */

node/src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ struct Config {
169169
pub targets: Option<Browsers>,
170170
pub minify: Option<bool>,
171171
pub source_map: Option<bool>,
172+
pub input_source_map: Option<String>,
172173
pub drafts: Option<Drafts>,
173174
pub css_modules: Option<CssModulesOption>,
174175
pub analyze_dependencies: Option<bool>,
@@ -289,6 +290,12 @@ fn compile<'i>(code: &'i str, config: &Config) -> Result<TransformResult, Compil
289290
})?;
290291

291292
let map = if let Some(mut source_map) = source_map {
293+
if let Some(input_source_map) = &config.input_source_map {
294+
if let Ok(mut sm) = SourceMap::from_json("/", input_source_map) {
295+
let _ = source_map.extends(&mut sm);
296+
}
297+
}
298+
292299
source_map.to_json(None).ok()
293300
} else {
294301
None

test.js

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,44 @@ if (process.argv[process.argv.length - 1] !== __filename) {
3030

3131
let res = css.transform({
3232
filename: __filename,
33-
minify: false,
33+
minify: true,
34+
sourceMap: true,
3435
targets: {
3536
safari: 4 << 16,
3637
firefox: 3 << 16 | 5 << 8,
3738
opera: 10 << 16 | 5 << 8
3839
},
39-
code: Buffer.from(`
40-
.foo {
41-
color: pink;
40+
code: Buffer.from(`.imported {
41+
content: "yay, file support!";
4242
}
43-
44-
.bar {
45-
color: red;
43+
44+
.selector {
45+
margin: 1em;
46+
background-color: #f60;
47+
}
48+
49+
.selector .nested {
50+
margin: 0.5em;
4651
}
4752
`),
48-
drafts: {
49-
// nesting: true
50-
},
51-
cssModules: {
52-
pattern: '[name]-[hash]-[local]'
53-
},
54-
// analyzeDependencies: true
53+
inputSourceMap: JSON.stringify({
54+
"version": 3,
55+
"sourceRoot": "root",
56+
"file": "stdout",
57+
"sources": [
58+
"stdin",
59+
"sass/_variables.scss",
60+
"sass/_demo.scss"
61+
],
62+
"sourcesContent": [
63+
"@import \"_variables\";\n@import \"_demo\";\n\n.selector {\n margin: $size;\n background-color: $brandColor;\n\n .nested {\n margin: $size / 2;\n }\n}",
64+
"$brandColor: #f60;\n$size: 1em;",
65+
".imported {\n content: \"yay, file support!\";\n}"
66+
],
67+
"mappings": "AEAA,SAAS,CAAC;EACR,OAAO,EAAE,oBAAqB;CAC/B;;AFCD,SAAS,CAAC;EACR,MAAM,ECHD,GAAG;EDIR,gBAAgB,ECLL,IAAI;CDUhB;;AAPD,SAAS,CAIP,OAAO,CAAC;EACN,MAAM,ECPH,KAAG;CDQP",
68+
"names": []
69+
}),
5570
});
5671

5772
console.log(res.code.toString());
58-
console.log(res.exports);
59-
console.log(require('util').inspect(res.dependencies, { colors: true, depth: 50 }));
73+
console.log(res.map.toString())

0 commit comments

Comments
 (0)