# webpack-sources 中文文档

规范地址：https://npmcn.com/package/webpack-sources/

版本：3\.7\.0
npm 元数据更新时间：2026-10-30T11:39:17.241Z
中文译文更新时间：2026-11-05T16:09:00.738Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/webpack-sources
原文对照：https://npmcn.com/package/webpack-sources/?lang=original
项目主页：https://github.com/webpack/webpack-sources#readme
源码仓库：https://github.com/webpack/webpack-sources

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：252 kB，58 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=10\.13\.0
- 运行依赖：0 个
- 首次发布：2016-01-03T17:29:30.353Z
- 最新版本发布：2026-10-30T11:39:16.844Z
- 近 30 天下载量：248130860（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：63（近 12 个月 9 个）

## 中文简介

Web 包的源代码处理类

## 安装

```sh
npm install webpack-sources
```

也可以使用：`pnpm add webpack-sources`、`yarn add webpack-sources`、`bun add webpack-sources`

## README

# 网络包源

包含代表 a 的多类 `Source`A级 `Source` 可以要求源代码,大小,源地图和散列.

## `Source`

基础课所有来源.

### 公共方法

所有方法都应被视为进行计算所需的昂贵方法.

#### `source`

```typescript
Source.prototype.source() -> String | Buffer
```

返回代表的源代码为字符串或缓冲(用于二进制源).

#### `buffer`

```typescript
Source.prototype.buffer() -> Buffer
```

返回显示的源代码为缓冲 。 字符串被转换为utf-8.

#### `buffers`

```typescript
Source.prototype.buffers() -> Buffer[]
```

返回包含的源代码为缓冲数组。 这样可以避免 中间 `Buffer.concat` 由 `buffer()` 当来源 由多个儿童组成(例如: `ConcatSource`) (中文(简体) ). 消费者 能够接受一系列缓冲(例如通过 `fs.createWriteStream` 或者说 `writev`)应更倾向于采用这种方法来提高业绩.

默认执行返回 `[this.buffer()]`。 。 。 .

#### `size`

```typescript
Source.prototype.size() -> Number
```

返回代表源代码的字节中的大小.

#### `map`

```typescript
Source.prototype.map(options?: Object) -> Object | null
```

返回代表源代码的 sourceMap 为 JSON 。 可能回来 `null` 如果没有源图.

这个 `options` 对象可以包含以下密钥:

-   `columns: Boolean` (默认) `true`:如果设定为虚假执行,可能省略列的映射.
-   `scopes: Boolean` (默认) `false`:如果设定为真实,则地图带有 `scopes` 报告 [范围提案](https://github.com/tc39/ecma426/blob/main/proposals/scopes.md),为每个源命名它所宣布的绑定和每个源在生成代码中读取的表达式。 消息来源宣布这些约束本身——见 `OriginalSource` ——和一张地图,其来源宣布没有遗漏字段.

#### `sourceAndMap`

```typescript
Source.prototype.sourceAndMap(options?: Object) -> {
    source: String | Buffer,
    map: Object | null
}
```

返回两者,源代码(如 `Source.prototype.source()` 和源图( 如 `Source.prototype.map()`) (中文(简体) ). 这种方法比呼叫有更好的性能 `source()` 财务报告和审定财务报表 `map()` 分别.

见 `map()` 页:1 `options`。 。 。 .

#### `updateHash`

```typescript
Source.prototype.updateHash(hash: Hash) -> void
```

更新所提供的 `Hash` 含有代表源代码内容的对象。 ()`Hash` 是带有 `update` 方法,用字符串值调用)

## `RawSource`

代表没有SourceMap的源代码.

```typescript
new RawSource(sourceCode: String | Buffer)
```

## `OriginalSource`

代表源代码,是原始文件的副本.

```typescript
new OriginalSource(
    sourceCode: String | Buffer,
    name: String,
    scopeBindings?: Map<String, String>
)
```

-   `sourceCode`:源代码.
-   `name`: 原始源代码的文件名.
-   `scopeBindings`: 此源声明的每个名称在生成代码中读取, 由源使用的名称键入 。 只有在需要地图时才咨询 `scopes: true`,并通过包装源,例如 `ReplaceSource` 财务报告和审定财务报表 `ConcatSource`。 。 。 .

如果请求, 原始来源试图通过在典型语句边框拆分源代码来创建列映射(`;`, (中文(简体) ), `{`, (中文(简体) ), `}`) (中文(简体) ).

## `SourceMapSource`

以 SourceMap 代表源代码,可选择为原始源添加一个 SourceMap .

```typescript
new SourceMapSource(
    sourceCode: String | Buffer,
    name: String,
    sourceMap: Object | String | Buffer,
    originalSource?: String | Buffer,
    innerSourceMap?: Object | String | Buffer,
    removeOriginalSource?: boolean
)
```

-   `sourceCode`:源代码.
-   `name`: 原始源代码的文件名.
-   `sourceMap`:源代码的SourceMap.
-   `originalSource`:原始文件的源代码. 如果 `sourceMap` 已经包含原始源代码.
-   `innerSourceMap`: 源图 `originalSource`编号 :`name`。 。 。 .
-   `removeOriginalSource`: 删除源代码 `name` 从最终的地图,只保存 更深的映射文件.

这个 `SourceMapSource` 支持用于 `innerSourceMap`。 。 。 . 当原始源匹配生成的用于映射的源时,它被假设为由字符映射的字符,从而可以保持更细的映射距离 `sourceMap`。 。 。 .

## `CachedSource`

装饰 a `Source` 和缓存返回的结果 `map`, (中文(简体) ), `source`, (中文(简体) ), `buffer`, (中文(简体) ), `size` 财务报告和审定财务报表 `sourceAndMap` 在记忆中. `updateHash` 未缓存. 它试图重复使用其他方法的缓存结果来避免计算,即何时 `source` 已缓存, 正在调用 `size` 将会从缓存来源得到大小, 调用 `sourceAndMap` 只会打电话 `map` 在包裹的源.

```typescript
new CachedSource(source: Source)
new CachedSource(source: Source | () => Source, cachedData?: CachedData)
```

而不是通过一个 `Source` 对象可以直接通过返回 a 的函数 `Source` 对象。 该函数只在需要时调用一次.

### 公共方法

#### `getCachedData()`

返回缓存数据以传递到构造器。 所有缓存条目被转换为缓冲并避免字符串.

#### `original()`

返回原始内容 `Source` 对象.

#### `originalLazy()`

返回原始内容 `Source` 对象或函数返回这些对象.

## `PrefixSource`

装饰的每行前缀 `Source` 带有一个提供字符串.

```typescript
new PrefixSource(
    prefix: String,
    source: Source | String | Buffer
)
```

## `ConcatSource`

连接多 `Source`s或字符串到单一来源.

```typescript
new ConcatSource(
    ...items?: Source | String
)
```

### 公共方法

#### `add`

```typescript
ConcatSource.prototype.add(item: Source | String)
```

向源添加项目.

## `ReplaceSource`

装饰 a `Source` 加上替换和插入源代码.

这个 `ReplaceSource` 支持用于儿童源的“身份”映射. 当原始的源匹配生成的源用于映射时,它被假定为由字符映射的字符,允许在替换/插入时分割映射.

### 公共方法

#### `replace`

```typescript
ReplaceSource.prototype.replace(
    start: Number,
    end: Number,
    replacement: String
)
```

替换字符从 `start` (0-指数化,包容性) `end` (0-指数化,包括) `replacement`。 。 。 .

位置代表原出处位置,不受其他替换或插入的影响.

#### `insert`

```typescript
ReplaceSource.prototype.insert(
    pos: Number,
    insertion: String
)
```

插入 `insertion` 在字符之前 `pos` (0-指数化).

位置代表原出处的位置,不受其他替换或插入的影响.

#### `original`

装饰一下 `Source`。 。 。 .

## `CompatSource`

将类似源对象转换为真实源对象.

### 公共方法

#### 静态 `from`

```typescript
CompatSource.from(sourceLike: any | Source)
```

若为 `sourceLike` 是一个真实的来源, 它返回它未修改。 否则,它返回它包在一个compat源.

## `util.sourceMap`

帮助读取源地图 .

### `originalPositionFor`

```typescript
util.sourceMap.originalPositionFor(
    sourceMap: RawSourceMap | string | Buffer,
    line: number,
    column: number,
): { source: string, line: number, column: number, name: string | null } | null
```

生成位置的返回:最接近或之前的映射 `column` 打开 `line`,或 `null` 没有地图的时候 线从一行起算,从零行起算,两侧为一行. `source` 与地图的 `sourceRoot`。它解码整个地图,所以它适合一次性查询,例如错误位置.

## 常见问题

### webpack-sources 是什么？

Web 包的源代码处理类

### 如何安装 webpack-sources？

在项目目录运行 npm install webpack-sources，或使用 pnpm add / yarn add / bun add。

### webpack-sources 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### webpack-sources 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### webpack-sources 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=10\.13\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### webpack-sources 可以商用吗？

webpack-sources 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### webpack-sources 的下载量有多少？

根据 npm 官方下载统计，webpack-sources 在 2026/10/05 – 2026/11/03 这 30 天内被下载 248,130,860 次，日均约 8,271,029 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### webpack-sources 还在维护吗？

最新版本 3\.7\.0 发布于 2026/10/30（6 天前）；至今共发布 63 个版本，其中过去 12 个月发布了 9 个；首次发布于 2016/01/04。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

