멋진 커뮤니티 모듈

소스 맵

빌드 상태

NPM

여기에 설명 된 소스 맵 형식을 생성하고 사용하기위한 라이브러리입니다.

노드와 함께 사용

1
$ npm install source-map

웹에서 사용

1 2 3 4 5 6
<script src="https://unpkg.com/source-map@0.7.2/dist/source-map.js"></script> <script> sourceMap.SourceMapConsumer.initialize({ "lib/mappings.wasm": "https://unpkg.com/source-map@0.7.2/lib/mappings.wasm" }); </script>

목차

Consuming a source map

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
const rawSourceMap = { version: 3, file: 'min.js', names: ['bar', 'baz', 'n'], sources: ['one.js', 'two.js'], sourceRoot: 'http://example.com/www/js/', mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' }; const whatever = await SourceMapConsumer.with(rawSourceMap, null, consumer => { console.log(consumer.sources); // [ 'http://example.com/www/js/one.js', // 'http://example.com/www/js/two.js' ] console.log(consumer.originalPositionFor({ line: 2, column: 28 })); // { source: 'http://example.com/www/js/two.js', // line: 2, // column: 10, // name: 'n' } console.log(consumer.generatedPositionFor({ source: 'http://example.com/www/js/two.js', line: 2, column: 10 })); // { line: 2, column: 28 } consumer.eachMapping(function (m) { // ... }); return computeWhatever(); });

Generating a source map

심층 가이드 : JavaScript로 컴파일 및 소스 맵으로 디버깅

SourceNode (고수준 API) 사용

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
function compile(ast) { switch (ast.type) { case 'BinaryExpression': return new SourceNode( ast.location.line, ast.location.column, ast.location.source, [compile(ast.left), " + ", compile(ast.right)] ); case 'Literal': return new SourceNode( ast.location.line, ast.location.column, ast.location.source, String(ast.value) ); // ... default: throw new Error("Bad AST"); } } var ast = parse("40 + 2", "add.js"); console.log(compile(ast).toStringWithSourceMap({ file: 'add.js' })); // { code: '40 + 2', // map: [object SourceMapGenerator] }

SourceMapGenerator (낮은 수준 API) 사용

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
var map = new SourceMapGenerator({ file: "source-mapped.js" }); map.addMapping({ generated: { line: 10, column: 35 }, source: "foo.js", original: { line: 33, column: 2 }, name: "christopher" }); console.log(map.toString()); // '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}'

API

모듈에 대한 참조를 가져옵니다.

1 2 3 4 5 6 7 8
// Node.js var sourceMap = require('source-map'); // Browser builds var sourceMap = window.sourceMap; // Inside Firefox const sourceMap = require("devtools/toolkit/sourcemap/source-map.js");

SourceMapConsumer

SourceMapConsumer 인스턴스는 생성 된 소스에서 파일 위치를 제공하여 원래 파일 위치에 대한 정보를 쿼리 할 수있는 구문 분석 된 소스 맵을 나타냅니다.

SourceMapConsumer.initialize (옵션)

예를 들어 웹에서 node.js 외부에서 SourceMapConsumer 사용하는 경우 lib/mappings.wasm 을로드 할 URL을 알아야 lib/mappings.wasm . SourceMapConsumer 를 생성하기 전에 initialize 를 호출하여 알려야합니다.

옵션 개체에는 다음과 같은 속성이 있습니다.

  • "lib/mappings.wasm" : lib/mappings.wasm 파일의 URL을 포함하는 String .
1 2 3
sourceMap.SourceMapConsumer.initialize({ "lib/mappings.wasm": "https://example.com/source-map/lib/mappings.wasm" });

새로운 SourceMapConsumer (rawSourceMap)

유일한 매개 변수는 원시 소스 맵 ( JSON.parse 일 수있는 문자열 또는 객체)입니다. 사양에 따라 소스 맵에는 다음 속성이 있습니다.

  • version :이 맵이 따르는 소스 맵 사양의 버전입니다.

  • sources : 원본 소스 파일에 대한 URL 배열입니다.

  • names : 개별 매핑에서 참조 할 수있는 식별자 배열입니다.

  • sourceRoot : 선택 사항이며 모든 소스가 상대적인 URL 루트입니다.

  • sourcesContent : 선택 사항이며 원본 소스 파일의 콘텐츠 배열입니다.

  • mappings : 실제 매핑을 포함하는 base64 VLQ의 문자열입니다.

  • file : 선택 사항이며이 소스 맵과 연결되는 생성 된 파일 이름입니다.

생성 된 소스 맵 소비자의 약속이 반환됩니다.

SourceMapConsumer 가 더 이상 사용되지 않으면 해당 destroy 메소드를 호출해야합니다.

1 2 3
const consumer = await new sourceMap.SourceMapConsumer(rawSourceMapJsonData); doStuffWith(consumer); consumer.destroy();

또는 SourceMapConsumer.with 를 사용하여 destroy 호출을 기억할 필요가 없도록 할 수 있습니다.

SourceMapConsumer.with

생성 rawSourceMapsourceMapUrl 에서 새 SourceMapConsumerrawSourceMap (The SourceMapConsumer 생성자에 대한 자세한 내용은 Then, Invoke The를 참조하십시오. async function f(SourceMapConsumer) -> T with The async function f(SourceMapConsumer) -> T Constructed Consumer, the wait for f to Complete, Call destroy ON The Consumer, and return f 의 반환 값.

f 완료된 후 소비자를 사용해서는 안됩니다!

with 를 사용하면 f 완료되면 자동으로 호출되므로 소비자에서 destroy 를 수동으로 호출 할 필요가 없습니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
const xSquared = await SourceMapConsumer.with( myRawSourceMap, null, async function (consumer) { // Use `consumer` inside here and don't worry about remembering // to call `destroy`. const x = await whatever(consumer); return x * x; } ); // You may not use that `consumer` anymore out here; it has // been destroyed. But you can use `xSquared`. console.log(xSquared);

SourceMapConsumer.prototype.destroy ()

수동으로 관리되는이 소스 맵 소비자의 관련 wasm 데이터를 해제합니다.

1
consumer.destroy();

또는 SourceMapConsumer.with 를 사용하여 destroy 호출을 기억할 필요가 없도록 할 수 있습니다.

SourceMapConsumer.prototype.computeColumnSpans ()

생성 된 각 매핑에 대한 마지막 열을 계산합니다. 마지막 열이 포함됩니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// Before: consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) // [ { line: 2, // column: 1 }, // { line: 2, // column: 10 }, // { line: 2, // column: 20 } ] consumer.computeColumnSpans(); // After: consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) // [ { line: 2, // column: 1, // lastColumn: 9 }, // { line: 2, // column: 10, // lastColumn: 19 }, // { line: 2, // column: 20, // lastColumn: Infinity } ]

SourceMapConsumer.prototype.originalPositionFor (generatedPosition)

생성 된 소스의 제공된 라인 및 열 위치에 대한 원래 소스, 라인 및 열 정보를 반환합니다. 유일한 인수는 다음 등록 정보를 가진 객체입니다.

  • line : 생성 된 소스의 라인 번호.이 라이브러리의 라인 번호는 1부터 시작됩니다 (기본 소스 맵 사양은 0부터 시작하는 라인 번호를 사용합니다.이 라이브러리는 번역을 처리합니다).

  • column : 생성 된 소스의 열 번호.이 라이브러리의 열 번호는 0부터 시작합니다.

  • bias : SourceMapConsumer.GREATEST_LOWER_BOUND 또는 SourceMapConsumer.LEAST_UPPER_BOUND 중 하나입니다. 정확한 요소를 찾을 수없는 경우 검색중인 요소보다 작거나 큰 가장 가까운 요소를 각각 반환할지 여부를 지정합니다. 기본값은 SourceMapConsumer.GREATEST_LOWER_BOUND 입니다.

다음 속성과 함께 개체가 반환됩니다.

  • source : 원본 소스 파일 또는이 정보를 사용할 수없는 경우 null입니다.

  • line : 원래 출처의 라인 번호 또는이 정보를 사용할 수없는 경우 null입니다. 라인 번호는 1부터 시작됩니다.

  • column : 원래 소스의 열 번호 또는이 정보를 사용할 수없는 경우 null입니다. 열 번호는 0부터 시작합니다.

  • name : 원래 식별자 또는이 정보를 사용할 수없는 경우 null입니다.

1 2 3 4 5 6 7 8 9 10 11
consumer.originalPositionFor({ line: 2, column: 10 }) // { source: 'foo.coffee', // line: 2, // column: 2, // name: null } consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 }) // { source: null, // line: null, // column: null, // name: null }

SourceMapConsumer.prototype.generatedPositionFor (originalPosition)

제공된 원래 소스, 라인 및 열 위치에 대해 생성 된 라인 및 열 정보를 반환합니다. 유일한 인수는 다음 속성을 가진 객체입니다.

  • source : 원본 소스의 파일 이름입니다.

  • line : 최초 출처의 라인 번호. 라인 번호는 1부터 시작합니다.

  • column : 원본 소스의 열 번호. 열 번호는 0부터 시작합니다.

다음 속성과 함께 개체가 반환됩니다.

  • line : 생성 된 소스의 라인 번호 또는 null. 라인 번호는 1부터 시작합니다.

  • column : 생성 된 소스의 열 번호 또는 null입니다. 열 번호는 0부터 시작합니다.

1 2 3
consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 }) // { line: 1, // column: 56 }

SourceMapConsumer.prototype.allGeneratedPositionsFor (originalPosition)

제공된 원래 소스, 라인 및 열에 대해 생성 된 모든 라인 및 열 정보를 반환합니다. 열이 제공되지 않으면 검색중인 라인 또는 매핑이있는 다음으로 가장 가까운 라인에 해당하는 모든 매핑을 반환합니다. 그렇지 않으면 반환합니다. 주어진 줄과 우리가 찾고있는 열 또는 오프셋이있는 다음으로 가장 가까운 열에 해당하는 모든 매핑.

유일한 인수는 다음 속성을 가진 객체입니다.

  • source : 원본 소스의 파일 이름입니다.

  • line : 최초 출처의 라인 번호. 라인 번호는 1부터 시작합니다.

  • column : 선택 사항. 원래 소스의 열 번호입니다. 열 번호는 0부터 시작합니다.

다음과 같은 속성을 가진 객체 배열이 반환됩니다.

  • line : 생성 된 소스의 라인 번호 또는 null. 라인 번호는 1부터 시작합니다.

  • column : 생성 된 소스의 열 번호 또는 null입니다. 열 번호는 0부터 시작합니다.

1 2 3 4 5 6 7
consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" }) // [ { line: 2, // column: 1 }, // { line: 2, // column: 10 }, // { line: 2, // column: 20 } ]

SourceMapConsumer.prototype.hasContentsOfAllSources ()

소스 맵에 나열된 모든 소스에 대한 소스 콘텐츠가 포함되어 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

즉,이 메서드가 true 반환하면 consumer.sourceContentFor(s)consumer.sources s 모든 소스에 대해 성공합니다.

1 2 3 4 5 6 7
// ... if (consumer.hasContentsOfAllSources()) { consumerReadyCallback(consumer); } else { fetchSources(consumer, consumerReadyCallback); } // ...

SourceMapConsumer.prototype.sourceContentFor (source [, returnNullOnMissing])

제공된 소스에 대한 원래 소스 콘텐츠를 반환합니다. 유일한 인수는 원래 소스 파일의 URL입니다.

지정된 소스의 소스 콘텐츠를 찾을 수없는 경우 오류가 발생합니다. 선택적으로 두 번째 매개 변수로 true 를 전달하여 대신 null 반환합니다.

1 2 3 4 5 6 7 8 9 10 11
consumer.sources // [ "my-cool-lib.clj" ] consumer.sourceContentFor("my-cool-lib.clj") // "..." consumer.sourceContentFor("this is not in the source map"); // Error: "this is not in the source map" is not in the source map consumer.sourceContentFor("this is not in the source map", true); // null

SourceMapConsumer.prototype.eachMapping (콜백, 컨텍스트, 순서)

이 소스 맵에서 원래 소스 / 라인 / 열과 생성 된 라인 / 열 사이의 각 매핑을 반복합니다.

  • callback : 각 매핑과 함께 호출되는 함수입니다. 매핑 형식은 { source, generatedLine, generatedColumn, originalLine, originalColumn, name }

  • context : 선택 사항입니다. 지정되면이 객체는 callback 이 호출 될 때마다 thisthis 됩니다.

  • order : SourceMapConsumer.GENERATED_ORDER 또는 SourceMapConsumer.ORIGINAL_ORDER 중 하나입니다. 생성 된 파일의 행 / 열 순서 또는 원본의 소스 / 행 / 열 순서에 따라 정렬 된 매핑을 각각 반복할지 여부를 지정합니다. 기본값은 SourceMapConsumer.GENERATED_ORDER 입니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
consumer.eachMapping(function (m) { console.log(m); }) // ... // { source: 'illmatic.js', // generatedLine: 1, // generatedColumn: 0, // originalLine: 1, // originalColumn: 0, // name: null } // { source: 'illmatic.js', // generatedLine: 2, // generatedColumn: 0, // originalLine: 2, // originalColumn: 0, // name: null } // ...

SourceMapGenerator

SourceMapGenerator의 인스턴스는 점진적으로 빌드되는 소스 맵을 나타냅니다.

새 SourceMapGenerator ([startOfSourceMap])

다음 속성을 가진 객체를 전달할 수 있습니다.

  • file :이 소스 맵과 연관되는 생성 된 소스의 파일 이름입니다.

  • sourceRoot :이 소스 맵에있는 모든 상대 URL의 루트입니다.

  • skipValidation : 선택 사항. true 매핑이 추가 될 때 매핑 유효성 검사를 사용하지 않습니다. 이렇게하면 성능이 향상 될 수 있지만 마지막 수단으로 신중하게 사용해야합니다. 그래도 가능하면 테스트를 실행할 때이 플래그를 사용하지 않아야합니다.

1 2 3 4
var generator = new sourceMap.SourceMapGenerator({ file: "my-generated-javascript-file.js", sourceRoot: "http://example.com/app/js/" });

SourceMapGenerator.fromSourceMap (sourceMapConsumer)

기존 SourceMapConsumer 인스턴스에서 새 SourceMapGenerator 를 만듭니다.

  • sourceMapConsumer SourceMap입니다.
1
var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer);

SourceMapGenerator.prototype.addMapping (매핑)

생성중인이 소스 맵에 대해 원래 소스 라인 및 열에서 생성 된 소스의 라인 및 열에 단일 매핑을 추가합니다. 매핑 객체에는 다음 속성이 있어야합니다.

  • generated : 생성 된 줄과 열 위치가있는 개체입니다.

  • original : 원래 줄과 열 위치가있는 개체입니다.

  • source : 원본 소스 파일 (sourceRoot에 상대적).

  • name :이 매핑에 대한 선택적 원래 토큰 이름입니다.

1 2 3 4 5
generator.addMapping({ source: "module-one.scm", original: { line: 128, column: 0 }, generated: { line: 3, column: 456 } })

SourceMapGenerator.prototype.setSourceContent (sourceFile, sourceContent)

원본 소스 파일의 소스 콘텐츠를 설정합니다.

  • sourceFile 원본 소스 파일의 URL입니다.

  • sourceContent 소스 파일의 내용.

1 2
generator.setSourceContent("module-one.scm", fs.readFileSync("path/to/module-one.scm"))

SourceMapGenerator.prototype.applySourceMap (sourceMapConsumer [, sourceFile [, sourceMapPath]])

소스 파일에 대한 SourceMap을 SourceMap에 적용합니다. 제공된 소스 파일에 대한 각 매핑은 제공된 SourceMap을 사용하여 다시 작성됩니다. 참고 : 결과 매핑에 대한 해상도는이 맵과 제공된 맵의 최소값입니다.

  • sourceMapConsumer : 적용 할 SourceMap입니다.

  • sourceFile : 선택 사항. 소스 파일의 파일명. 생략하면 sourceMapConsumer.file이 사용됩니다 (존재하는 경우). 그렇지 않으면 오류가 발생합니다.

  • sourceMapPath : 선택 사항으로 적용 할 SourceMap에 대한 경로의 dirname입니다. 상대적인 경우 SourceMap에 상대적입니다.

    이 매개 변수는 두 SourceMap이 동일한 디렉토리에 있지 않고 적용 할 SourceMap에 상대 소스 경로가 포함되어있을 때 필요합니다. 그렇다면 해당 상대 소스 경로를 SourceMap을 기준으로 다시 작성해야합니다.

    생략하면 두 SourceMap이 동일한 디렉토리에있는 것으로 간주하므로 다시 쓸 필요가 없습니다. ( '.' 은 동일한 효과가 있습니다.)

SourceMapGenerator.prototype.toString ()

생성되는 소스 맵을 문자열로 렌더링합니다.

1 2
generator.toString() // '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}'

SourceNode

SourceNodes는 생성 된 JavaScript 소스 코드의 스 니펫을 보간 및 / 또는 연결하는 방법을 제공하는 동시에 해당 스 니펫과 원본 소스 코드 사이에 연관된 라인 및 열 정보를 유지합니다. 이는 컴파일러가 출력하기 전에 사용할 수있는 최종 중간 표현으로 유용합니다. 생성 된 JS 및 소스 맵.

new SourceNode ([라인, 열, 소스 [, 청크 [, 이름]]])

  • line :이 소스 노드와 연관된 원래 라인 번호 또는 원래 라인과 연관되지 않은 경우 null. 라인 번호는 1부터 시작됩니다.

  • column :이 소스 노드와 연결된 원래 열 번호 또는 원래 열과 연결되지 않은 경우 null입니다. 열 번호는 0부터 시작합니다.

  • source : 원본 소스의 파일 이름입니다. 파일 이름이 제공되지 않으면 null입니다.

  • chunk : 선택 사항 SourceNode.prototype.add 즉시 전달됩니다 (아래 참조).

  • name : 선택 사항이며 원래 식별자입니다.

1 2 3 4 5
var node = new SourceNode(1, 2, "a.cpp", [ new SourceNode(3, 4, "b.cpp", "extern int status;\n"), new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"), new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"), ]);

SourceNode.fromStringWithSourceMap (code, sourceMapConsumer [, relativePath])

생성 된 코드와 SourceMapConsumer에서 SourceNode를 만듭니다.

  • code : 생성 된 코드

  • sourceMapConsumer 생성 된 코드의 SourceMap

  • relativePath sourceMapConsumer 상대 소스가 상대 sourceMapConsumer 선택적 경로입니다.

1 2
const consumer = await new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); const node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"), consumer);

SourceNode.prototype.add (청크)

생성 된 JS 청크를이 소스 노드에 추가합니다.

  • chunk : 생성 된 JS 코드의 문자열 스 니펫, SourceNode 또 다른 인스턴스 또는 각 멤버가 해당 항목 중 하나 인 배열.
1 2 3
node.add(" + "); node.add(otherNode); node.add([leftHandOperandNode, " + ", rightHandOperandNode]);

SourceNode.prototype.prepend (chunk)

생성 된 JS 청크를이 소스 노드 앞에 추가합니다.

  • chunk : 생성 된 JS 코드의 문자열 스 니펫, SourceNode 또 다른 인스턴스 또는 각 멤버가 해당 항목 중 하나 인 배열.
1
node.prepend("/** Build Id: f783haef86324gf **/\n\n");

SourceNode.prototype.setSourceContent (sourceFile, sourceContent)

소스 파일의 소스 내용을 설정합니다. 이것은에 추가됩니다 SourceMap 에서 sourcesContent 필드.

  • sourceFile : 소스 파일의 파일 이름

  • sourceContent : 소스 파일의 내용

1 2
node.setSourceContent("module-one.scm", fs.readFileSync("path/to/module-one.scm"))

SourceNode.prototype.walk (fn)

이 노드와 그 하위 노드에서 JS 스 니펫 트리를 살펴 봅니다. 걷기 함수는 JS 스 니펫마다 한 번씩 호출되고 해당 스 니펫과 원래 연관된 소스의 행 / 열 위치에 전달됩니다.

  • fn : 순회 기능.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
var node = new SourceNode(1, 2, "a.js", [ new SourceNode(3, 4, "b.js", "uno"), "dos", [ "tres", new SourceNode(5, 6, "c.js", "quatro") ] ]); node.walk(function (code, loc) { console.log("WALK:", code, loc); }) // WALK: uno { source: 'b.js', line: 3, column: 4, name: null } // WALK: dos { source: 'a.js', line: 1, column: 2, name: null } // WALK: tres { source: 'a.js', line: 1, column: 2, name: null } // WALK: quatro { source: 'c.js', line: 5, column: 6, name: null }

SourceNode.prototype.walkSourceContents (fn)

SourceNodes 트리를 살펴 봅니다. 각 소스 파일 콘텐츠에 대해 걷기 함수가 호출되고 파일 이름과 소스 콘텐츠가 전달됩니다.

  • fn : 순회 기능.
1 2 3 4 5 6 7 8 9 10 11 12
var a = new SourceNode(1, 2, "a.js", "generated from a"); a.setSourceContent("a.js", "original a"); var b = new SourceNode(1, 2, "b.js", "generated from b"); b.setSourceContent("b.js", "original b"); var c = new SourceNode(1, 2, "c.js", "generated from c"); c.setSourceContent("c.js", "original c"); var node = new SourceNode(null, null, null, [a, b, c]); node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); }) // WALK: a.js : original a // WALK: b.js : original b // WALK: c.js : original c

SourceNode.prototype.join (9 월)

SourceNodes를 제외하고 Array.prototype.join 과 유사하며이 소스 노드의 각 자식 사이에 구분 기호를 삽입합니다.

  • sep : 구분 기호입니다.
1 2 3 4 5 6
var lhs = new SourceNode(1, 2, "a.rs", "my_copy"); var operand = new SourceNode(3, 4, "a.rs", "="); var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()"); var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]); var joinedNode = node.join(" ");

SourceNode.prototype.replaceRight (패턴, 교체)

맨 오른쪽 소스 스 니펫에서 String.prototype.replace 를 호출합니다. 소스 노드 끝에서 공백을 제거하는 데 유용합니다.

  • pattern : 대체 할 패턴입니다.

  • replacement : 패턴을 교체 할 것.

1 2
// Trim trailing white space. node.replaceRight(/\s*$/, "");

SourceNode.prototype.toString ()

이 소스 노드의 문자열 표현을 반환합니다. 트리를 돌아 다니며 모든 다양한 스 니펫을 하나의 문자열로 연결합니다.

1 2 3 4 5 6 7 8 9 10 11
var node = new SourceNode(1, 2, "a.js", [ new SourceNode(3, 4, "b.js", "uno"), "dos", [ "tres", new SourceNode(5, 6, "c.js", "quatro") ] ]); node.toString() // 'unodostresquatro'

SourceNode.prototype.toStringWithSourceMap ([startOfSourceMap])

이 소스 노드 트리의 문자열 표현과 생성 된 소스와 원래 소스 사이의 모든 매핑을 포함하는 SourceMapGenerator를 반환합니다.

인수는 new SourceMapGenerator 의 인수와 동일합니다.

1 2 3 4 5 6 7 8 9 10 11 12
var node = new SourceNode(1, 2, "a.js", [ new SourceNode(3, 4, "b.js", "uno"), "dos", [ "tres", new SourceNode(5, 6, "c.js", "quatro") ] ]); node.toStringWithSourceMap({ file: "my-output-file.js" }) // { code: 'unodostresquatro', // map: [object SourceMapGenerator] }