# Source Map JS
<!-- [![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) -->
[![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 Webpack 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: {
li
没有合适的资源?快使用搜索试试~ 我知道了~
vue-router,vue
共1044个文件
js:543个
ts:153个
json:100个
需积分: 5 1 下载量 92 浏览量
2023-05-26
10:15:47
上传
评论
收藏 11.61MB ZIP 举报
温馨提示
vue-router 的demo应用
资源推荐
资源详情
资源评论
收起资源包目录
vue-router,vue
(1044个子文件)
cssesc.1 2KB
openChrome.applescript 2KB
vue-router.cjs 145KB
vue-router.prod.cjs 112KB
index.browser.cjs 4KB
index.cjs 3KB
index.cjs 3KB
index.browser.cjs 3KB
index.cjs 2KB
index.cjs 854B
index.cjs 247B
nanoid.cjs 91B
parser.cmd 338B
rollup.cmd 327B
nanoid.cmd 326B
esbuild.cmd 324B
cssesc.cmd 322B
vite.cmd 321B
json5.cmd 321B
cup.coffee 1B
mug.coffee 0B
cssesc 3KB
cssesc 302B
.editorconfig 605B
.editorconfig 286B
.editorconfig 207B
esbuild 312B
esbuild 306B
.eslintignore 13B
.eslintignore 10B
.eslintrc 1KB
.eslintrc 358B
.eslintrc 231B
.eslintrc 176B
.eslintrc 48B
esbuild.exe 7.3MB
index.js.flow 280KB
index.js.flow 163KB
.gitkeep 0B
index.html 337B
favicon.ico 4KB
generic-names.iml 335B
dep-1be34a63.js 2.29MB
compiler-sfc.esm-browser.js 1.76MB
terser.js 1.15MB
dep-0e948eb3.js 854KB
rollup.js 782KB
rollup.js 781KB
dep-b541373d.js 719KB
vue.global.js 627KB
vue.esm-browser.js 598KB
vue.runtime.global.js 430KB
runtime-dom.global.js 429KB
index.js 428KB
vue.runtime.esm-browser.js 406KB
runtime-dom.esm-browser.js 405KB
rollup.browser.js 376KB
rollup.browser.js 376KB
runtime-core.esm-bundler.js 317KB
dep-afe9ad01.js 312KB
runtime-core.cjs.js 311KB
chunk-MEOA3D7T.js 280KB
source-map.debug.js 276KB
source-map.debug.js 266KB
cli.js 241KB
runtime-core.cjs.prod.js 239KB
compiler-dom.global.js 224KB
compiler-core.cjs.js 217KB
compiler-core.cjs.prod.js 210KB
compiler-dom.esm-browser.js 210KB
watch.js 199KB
compiler-core.esm-bundler.js 190KB
bluebird.js 179KB
index.js 168KB
index.js 164KB
vue-router.global.js 158KB
vue-router.esm-browser.js 145KB
vue.esm-browser.prod.js 125KB
vue.global.prod.js 122KB
bluebird.core.js 120KB
index.js 115KB
source-map.min.js 109KB
source-map.js 108KB
source-map.js 104KB
compiler-sfc.cjs.js 103KB
vue-router.js 88KB
vue.runtime.esm-browser.prod.js 80KB
runtime-dom.esm-browser.prod.js 80KB
bluebird.min.js 80KB
vue.runtime.global.prod.js 79KB
runtime-dom.global.prod.js 79KB
compiler-dom.cjs.js 74KB
compiler-dom.cjs.prod.js 72KB
main.js 67KB
runtime-dom.esm-bundler.js 57KB
runtime-dom.cjs.js 56KB
bluebird.core.min.js 56KB
compiler-dom.esm-browser.prod.js 55KB
compiler-dom.global.prod.js 54KB
runtime-dom.cjs.prod.js 51KB
共 1044 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
资源评论
linghubo
- 粉丝: 3
- 资源: 106
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功