# @atlaspack/optimizer-inline-requires 中文文档

规范地址：https://npmcn.com/package/%40atlaspack/optimizer-inline-requires/

版本：2\.16\.11
npm 元数据更新时间：2026-09-15T23:41:56.442Z
中文译文更新时间：2026-11-09T20:28:13.807Z
软件包许可：\(MIT OR Apache-2\.0\)

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

原始 npm 页面：https://www.npmjs.com/package/%40atlaspack/optimizer-inline-requires
原文对照：https://npmcn.com/package/%40atlaspack/optimizer-inline-requires/?lang=original
项目主页：https://github.com/atlassian-labs/atlaspack#readme
源码仓库：https://github.com/atlassian-labs/atlaspack

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

- 包体积（解压后）：172 kB，9 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 14\.0\.0
- 运行依赖：7 个
- 首次发布：2024-08-20T02:16:06.295Z
- 最新版本发布：2026-09-15T23:41:56.276Z
- 近 30 天下载量：1746（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：1061（近 12 个月 253 个）

## 中文简介

此插件目前为 **实验** /然而不稳定,这说明它已被用在一个非常大的网络应用程序中,在减少该应用程序的运行时间启动时间方面非常成功.

## 安装

```sh
npm install @atlaspack/optimizer-inline-requires
```

也可以使用：`pnpm add @atlaspack/optimizer-inline-requires`、`yarn add @atlaspack/optimizer-inline-requires`、`bun add @atlaspack/optimizer-inline-requires`

## README

# 警告内含需要插件

此插件目前为 **实验** /然而不稳定,这说明它已被用在一个非常大的网络应用程序中,在减少该应用程序的运行时间启动时间方面非常成功.

## 快速使用

添加此优化器以运行 _第一个_ (在细化前),用于联署材料捆绑.

```json
{
  "optimizers": {
    "*.js": ["@atlaspack/optimizer-inline-requires", "..."]
  }
}
```

## 背景和动机

当Atlaspack以捆绑形式生产模块时,如果范围提升没有带来依赖性,它包括要求这些依赖性位于模块功能的顶端。 例如,在细化之前,一个模块可能看起来是这样的:

```js
atlaspackRegister('abc123', function (require, module, exports) {
  var $def456 = require('def456');
  var $ghi789 = require('ghi789');

  exports.someFunction = function () {
    if ($def456.someOperation()) {
      return $ghi789.anotherOperation();
    }
    return null;
  };
});
```

当模块被初始化(即“模块工厂”被称作“模块工厂”)时,将获得 `def456` 财务报告和审定财务报表 `ghi789` 模块,立即呼叫他们的模块工厂,等等。 然而,两个模块直到 `someFunction` 导出被调用 。 例如,如果呼叫网站是这样的:

```js
// other code..
var $abc123 = require('abc123');
element.addEventListener('click', () => {
  element.innerText = $abc123.someFunction();
});
```

...然后代码在 `abc123` 可能直到很久以后才被调用,或者根本不被调用。 在规模足够大的应用中,所有这些工厂功能的评价/执行时间在应用的性能衡量尺度中都可以看到.

这个插件做的是,它把那些 `require` 调用“ 懒惰” 或“ 延迟” 的评价要求—— 也就是说, 工厂功能只有在模块首次使用时才会执行 。 第一个例子是,产生的代码(先去后去)将像这样:

```js
atlaspackRegister('abc123', function (require, module, exports) {
  var $def456;
  var $ghi789;

  exports.someFunction = function () {
    if ((0, require('def456')).someOperation()) {
      return (0, require('ghi789')).anotherOperation();
    }
    return null;
  };
});
```

修饰器将删除未初始化的变量,它还将简化 `(0, ...)` 在可能情况下,序列表达式.

必须指出,Atlaspack只执行一次工厂职能。 下级呼叫 `require` 将返回原工厂返回的模块。 见 `require` 代码在 `packages/packagers/js/src/helpers.js` 对于如何运作.

## 洞穴

### 间接费用

所以这里的主要警告是,我们现在正在将一个简单的可变访问器变成一个函数调用,每当模块被引用的时候. 对于较小的应用来说,这种间接费用可能不值得权衡,但对于更大的应用来说可能并不值得。 这就是为什么这个插件是可选的,因为您需要尝试它来确定它是否适合您.

### 副作用

当模块关闭时(例如,在 `window` (例如,A/CN.9/WG.III/WP.III/WP.1号文件)。 对于Atlaspack已查明具有副作用的资产(是否通过) `package.json` `sideEffects` 这些模块将 _没有_ 有他们的 `require` 电话延期.

## 常见问题

### @atlaspack/optimizer-inline-requires 是什么？

此插件目前为 实验 /然而不稳定,这说明它已被用在一个非常大的网络应用程序中,在减少该应用程序的运行时间启动时间方面非常成功\.

### 如何安装 @atlaspack/optimizer-inline-requires？

在项目目录运行 npm install @atlaspack/optimizer-inline-requires，或使用 pnpm add / yarn add / bun add。

### @atlaspack/optimizer-inline-requires 支持 TypeScript 吗？

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

### @atlaspack/optimizer-inline-requires 支持 ESM 还是 CommonJS？

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

### @atlaspack/optimizer-inline-requires 需要什么版本的 Node\.js？

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

### @atlaspack/optimizer-inline-requires 可以商用吗？

@atlaspack/optimizer-inline-requires 使用 \(MIT OR Apache-2\.0\) 许可。可在 MIT、Apache-2\.0 中任选其一遵守。选择 MIT 时，宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @atlaspack/optimizer-inline-requires 的下载量有多少？

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

### @atlaspack/optimizer-inline-requires 还在维护吗？

最新版本 2\.16\.11 发布于 2026/09/16（1 个月前）；至今共发布 1061 个版本，其中过去 12 个月发布了 253 个；首次发布于 2024/08/20。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

