# Source Map JS
[![NPM](https://nodei.co/npm/source-map-js.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/source-map-js)
Difference between original [source-map](https://github.com/mozilla/source-map):
> TL,DR: it's fork of original source-map@0.6, but with perfomance optimizations.
This journey starts from [source-map@0.7.0](https://github.com/mozilla/source-map/blob/master/CHANGELOG.md#070). Some part of it was rewritten to Rust and WASM and API became async.
It's still a major block for many libraries like PostCSS or Sass for example because they need to migrate the whole API to the async way. This is the reason why 0.6.1 has 2x more downloads than 0.7.3 while it's faster several times.
![Downloads count](media/downloads.png)
More important that WASM version has some optimizations in JS code too. This is why [community asked to create branch for 0.6 version](https://github.com/mozilla/source-map/issues/324) and port these optimizations but, sadly, the answer was «no». A bit later I discovered [the issue](https://github.com/mozilla/source-map/issues/370) created by [Ben Rothman (@benthemonkey)](https://github.com/benthemonkey) with no response at all.
[Roman Dvornov (@lahmatiy)](https://github.com/lahmatiy) wrote a [serveral posts](https://t.me/gorshochekvarit/76) (russian, only, sorry) about source-map library in his own Telegram channel. He mentioned the article [«Maybe you don't need Rust and WASM to speed up your JS»](https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html) written by [Vyacheslav Egorov (@mraleph)](https://github.com/mraleph). This article contains optimizations and hacks that lead to almost the same performance compare to WASM implementation.
I decided to fork the original source-map and port these optimizations from the article and several others PR from the original source-map.
---------
This is a library to generate and consume the source map format
[described here][format].
[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit
## Use with Node
$ npm install source-map-js
<!-- ## Use on the Web
<script src="https://raw.githubusercontent.com/mozilla/source-map/master/dist/source-map.min.js" defer></script> -->
--------------------------------------------------------------------------------
<!-- `npm run toc` to regenerate the Table of Contents -->
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
## Table of Contents
- [Examples](#examples)
- [Consuming a source map](#consuming-a-source-map)
- [Generating a source map](#generating-a-source-map)
- [With SourceNode (high level API)](#with-sourcenode-high-level-api)
- [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api)
- [API](#api)
- [SourceMapConsumer](#sourcemapconsumer)
- [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap)
- [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans)
- [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition)
- [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition)
- [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition)
- [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources)
- [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing)
- [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order)
- [SourceMapGenerator](#sourcemapgenerator)
- [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap)
- [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer)
- [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping)
- [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent)
- [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath)
- [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring)
- [SourceNode](#sourcenode)
- [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name)
- [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath)
- [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk)
- [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk)
- [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent)
- [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn)
- [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn)
- [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep)
- [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement)
- [SourceNode.prototype.toString()](#sourcenodeprototypetostring)
- [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## Examples
### Consuming a source map
```js
var 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'
};
var smc = new SourceMapConsumer(rawSourceMap);
console.log(smc.sources);
// [ 'http://example.com/www/js/one.js',
// 'http://example.com/www/js/two.js' ]
console.log(smc.originalPositionFor({
line: 2,
column: 28
}));
// { source: 'http://example.com/www/js/two.js',
// line: 2,
// column: 10,
// name: 'n' }
console.log(smc.generatedPositionFor({
source: 'http://example.com/www/js/two.js',
line: 2,
column: 10
}));
// { line: 2, column: 28 }
smc.eachMapping(function (m) {
// ...
});
```
### Generating a source map
In depth guide:
[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/)
#### With SourceNode (high level API)
```js
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] }
```
#### With SourceMapGenerator (low level API)
```js
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"
没有合适的资源?快使用搜索试试~ 我知道了~
everything-1.4,windows版
共351个文件
js:169个
ts:67个
json:35个
需积分: 5 3 下载量 117 浏览量
2022-07-08
17:07:02
上传
评论
收藏 15.47MB ZIP 举报
温馨提示
官方版,超快检索,绿色,解压即用
资源详情
资源评论
资源推荐
收起资源包目录
everything-1.4,windows版 (351个子文件)
index.cjs 1KB
nanoid.cjs 1KB
index.browser.cjs 1KB
index.cjs 993B
index.browser.cjs 983B
index.cjs 499B
index.cjs 120B
parser.cmd 338B
nanoid.cmd 326B
Run History.csv 319B
Everything.db 26.82MB
Everything.exe 2.15MB
index.js.flow 283KB
Everything.ini 20KB
compiler-sfc.esm-browser.js 1.47MB
vue.global.js 626KB
vue.esm-browser.js 597KB
compiler-sfc.cjs.js 502KB
index.js 462KB
vue.runtime.global.js 426KB
runtime-dom.global.js 426KB
vue.runtime.esm-browser.js 402KB
runtime-dom.esm-browser.js 402KB
runtime-core.esm-bundler.js 310KB
runtime-core.cjs.js 303KB
server-renderer.esm-browser.js 293KB
source-map.debug.js 266KB
runtime-core.cjs.prod.js 243KB
compiler-dom.global.js 227KB
compiler-core.cjs.js 225KB
compiler-core.cjs.prod.js 218KB
compiler-dom.esm-browser.js 212KB
compiler-core.esm-bundler.js 191KB
vue-router.global.js 149KB
vue-router.esm-bundler.js 139KB
vue-router.cjs.js 137KB
vue-router.esm-browser.js 136KB
vue.esm-browser.prod.js 129KB
vue.global.prod.js 126KB
vue-router.cjs.prod.js 106KB
source-map.js 104KB
vue.runtime.esm-browser.prod.js 83KB
runtime-dom.esm-browser.prod.js 83KB
vue.runtime.global.prod.js 82KB
runtime-dom.global.prod.js 82KB
compiler-dom.cjs.js 77KB
compiler-dom.cjs.prod.js 74KB
runtime-dom.esm-bundler.js 61KB
runtime-dom.cjs.js 59KB
server-renderer.esm-browser.prod.js 58KB
compiler-dom.esm-browser.prod.js 55KB
compiler-dom.global.prod.js 55KB
compiler-ssr.cjs.js 55KB
runtime-dom.cjs.prod.js 55KB
reactivity.global.js 45KB
reactivity.esm-browser.js 42KB
reactivity.esm-bundler.js 41KB
reactivity.cjs.js 41KB
source-map-consumer.js 41KB
source-map-consumer.js 40KB
reactivity.cjs.prod.js 38KB
server-renderer.cjs.js 36KB
magic-string.umd.js 36KB
server-renderer.esm-bundler.js 34KB
magic-string.cjs.js 33KB
magic-string.es.js 33KB
server-renderer.cjs.prod.js 27KB
source-map.min.js 26KB
shared.cjs.js 25KB
shared.cjs.prod.js 25KB
shared.esm-bundler.js 24KB
vue-router.global.prod.js 23KB
reactivity-transform.cjs.js 21KB
compiler-dom.esm-bundler.js 20KB
util.js 15KB
parser.js 14KB
source-map-generator.js 14KB
source-map-generator.js 14KB
source-node.js 13KB
source-node.js 13KB
lazy-result.js 13KB
util.js 13KB
reactivity.esm-browser.prod.js 11KB
reactivity.global.prod.js 11KB
container.js 10KB
map-generator.js 9KB
node.js 8KB
stringifier.js 8KB
estree-walker.js 8KB
estree-walker.js 7KB
tokenize.js 6KB
input.js 6KB
sourcemap-codec.umd.js 5KB
base64-vlq.js 5KB
base64-vlq.js 5KB
binary-search.js 4KB
binary-search.js 4KB
sourcemap-codec.es.js 4KB
quick-sort.js 4KB
previous-map.js 4KB
共 351 条
- 1
- 2
- 3
- 4
我要用代码向我喜欢的女孩表白
- 粉丝: 1w+
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0