@comandeer/rollup-lib-bundler

中文文档
0.27.0发布于 2025/04/06MITTypeScriptES Module近 30 天下载 2780

简单的库捆绑器

中文使用文档
文档目录15 节
  1. 安装
  2. 使用量
  3. 配置
  4. 怎么会这样?
  5. 假设的文件结构
  6. 多个捆绑
  7. 支助 exports 语法
  8. 转接
  9. 类型脚本支持
  10. 捆绑可执行文件( aka 二进制)
  11. 简单的例子 bin 格式
  12. 复数示例 bin 格式
  13. 支持非标准离散目录
  14. 配置 VSC 以正确建议进口
  15. 许可证

@ comandeer/ rollup- lib- bundler

Build Status codecov npm (scoped)

使用超级视图库捆绑器 滚动, (中文(简体) ), 宝贝 财务报告和审定财务报表 坐标。 。 。 .

安装

npm install @comandeer/rollup-lib-bundler --save-dev

使用量

把它编成npm脚本:

"scripts": {
    "build": "rlb"
}

配置

没有配置 。 把它视为一个特色.

怎么会这样?

它会得到 package.json 从当前工作目录中解析并获取 need 信息 :

  • name, (中文(简体) ), author, (中文(简体) ), version 财务报告和审定财务报表 license 创造美丽的旗帜评论,
  • exports.import 确定在何处保存无害环境管理捆绑(见 "支持过" exports 语法" )))的章节.

然后,捆绑发生。 滚动的默认切入点是 src/index.js。 。 。 .

[尖叫声] 请注意: dist 目录在捆绑前被清除来啊! 所以,如果有什么应该 与捆绑在一起, 它应该添加在那里 之后 捆绑.

假设的文件结构

这是非常有意见的捆绑器,它假设项目的文件结构看起来像下面的:

package/
|- package.json
|- src/
|     |- index.js
|     |- some-other-chunk.js
|- dist/
|      |- bundled-index.mjs
|      |- bundled-index.mjs.map
|      |- bundled-some-other-chunk.mjs
|      |- bundled-some-other-chunk.mjs.map
  • package.json 在包的根部(这是我们都同意的唯一一块!),
  • src/ 目录包含软件包的来源,
    • index.js 是包的主要切入点,
    • some-other-chunk.js 是可选的附加入口(更多信息见[#mutliple-bundles] (多包)),
  • dist/ 目录包含捆绑的代码.

Bundler 搜索源文件,其扩展名如下:

  • .mts, (中文(简体) ),
  • .ts, (中文(简体) ),
  • .mjs, (中文(简体) ),
  • .js, (中文(简体) ),
  • .cts, (中文(简体) ),
  • .cjs。 。 。 .

多个捆绑

默认, src/index.js 被作为唯一的切入点。 但是,使用 子路径导出 可以创建多个捆绑块/文件。 示例

"exports": {
    ".": {
        "import": "./dist/package.mjs"
    },

    "./chunk": {
        "import": "./dist/chunk.mjs"
    }
}

在这种情况下,将捆绑两个源文件:

  • src/index.js数字 :
    • 无害环境管理产出: dist/package.mjs, (中文(简体) ),
  • src/chunk.js数字 :
    • 无害环境管理产出: dist/chunk.mjs。 。 。 .

每个子路径被翻译为适当的文件 src 目录。 基本上,我们.., ./ 开始时将翻译为 src/ 和子路径的名称翻译为 <subpath>.<extension> (例如:. ./chunk → src/chunk.js) (中文(简体) ). 唯一的例外是 . 子路径,将其翻译为 src/index.js。 。 。 .

至0.19.0版本,捆绑者还自动省略了其他捆绑内部的捆绑. 如果有进口 src/chunk.js 文件在 src/index.js 中的文件,然后是 dist/package.(c|m)js 文件将包含从 dist/chunk.(c|m)js 而非其他捆绑的内容.

支助 exports 语法

捆绑器只支持 exports 节点允许的语法 :

  • exports 作为字符串数字 :

    {
        "exports": "./dist/package.mjs"
    }
    
  • 子路径作为字符串数字 :

    {
        "exports": {
            ".": "./dist/package.mjs",
            "./subpath": "./dist/chunk.js"
        }
    }
    
  • exports 有条件出口数字 :

    {
        "exports": {
            "types": "./dist/package.d.mts",
            "import": "./dist/package.mjs"
        }
    }
    
  • 有有条件出口的子路径数字 :

    {
        "exports": {
            ".": {
                "types": "./dist/package.d.mts",
                "import": "./dist/package.mjs"
            }
        }
    }
    

转接

捆绑者转录了所有与 Babel 的代码。 转接目标可随 engines.node 区域 package.json 文件 :

{
    "engines": {
        "node": "20.1.0"
    }
}

任何有效的 semver 语法 被支持.

如果 engines.node 未指定字段, 或其中包含无效的版本, 捆绑器倒回 current 版本 – 所以用于运行捆绑器的节点版本.

类型脚本支持

从v0.17.0开始,捆绑者还可以捆绑TypeScript项目. 不需要配置,只需替换 .js 与扩展 .ts 一个! 还要保证有有效的 tsconfig.json 在您的项目根中的文件。 如果您想要为捆绑器提供不同的配置, 请设置 a tsconfig.rlb.json 文档代替.

[尖叫声] 这个 outDir 配置选项 被捆绑器所覆盖,以指向与"滚滚"配置中的目录相同的目录. 见 327号 更多细节.

捆绑者也捆绑 .d.ts 文件,但只有您指定了 exports.types 字段中 package.json。 。 。 .

TS 项目的样本配置 :

"exports": {
    ".": {
        "types": "./dist/index.d.ts",
        "import": "./dist/index.mjs"
    },

    "./chunk": {
        "import": "./dist/chunk.mjs"
    }
}

在这种情况下,将捆绑两个源文件:

  • src/index.ts数字 :
    • 无害环境管理产出: dist/index.mjs, (中文(简体) ),
    • DTS 输出 : dist/index.d.ts, (中文(简体) ),
  • src/chunk.ts数字 :
    • 无害环境管理产出: dist/chunk.mjs, (中文(简体) ),
    • DTS 输出: 无( 没有) types 页:1.

捆绑可执行文件( aka 二进制)

从v.1.9.0起 rlb 也可以将定义于 bin 字段 会 议 日 程 和 议 程 package.json它支持该领域的简单形式和复杂的形式。 二进制的源文件必须放在 src/__bin__ 名称与 bin 字段。 支持所有源文件格式 exports 捆绑也用于 bin 这些.

从 bin 字段以无害环境管理格式保存。 捆绑者也将保留在所生产的捆绑中.

简单的例子 bin 格式

{
    "name": "some-package",
    "exports": {
        ".": {
            "import": "./dist/index.mjs"
        }
    },
    "bin": "./dist/bin.mjs"
}

在这种情况下,捆绑者除了以下源文件结构:

some-package/
|- package.json
|- src/
|     |- index.js
|     |- __bin__/
|     |         |- some-package.js

请注意,在使用简便时 bin 格式(因此仅是可执行文件的路径,没有它的名称),捆绑者会以软件包的名称查找源文件(来源于 name 区域 package.json 文档).

复数示例 bin 格式

{
    "name": "some-package",
    "exports": {
        ".": {
            "import": "./dist/index.mjs"
        }
    },
    "bin": {
        "whatever": "./dist/bin.mjs",
        "another-one": "./dist/bin2.js"
    }
}

在这种情况下,捆绑者除了以下源文件结构:

some-package/
|- package.json
|- src/
|     |- index.js
|     |- __bin__/
|     |         |- whatever.js
|     |         |- another-one.js

支持非标准离散目录

从v.2.0.0开始,捆绑者正式支持非标准分解目录(不同于 ./dist (第1个) 解析离线目录 exports 区域 package.json,例如:

"exports": {
    ".": {
        "import": "./hublabubla/package.mjs"
    }
}

在上述例子中 ./hublabubla 将使用目录代替 ./dist 一个.

捆绑器还支持多个非标准分解目录,例如:

"exports": {
    ".": {
        "import": "./bublahubla/package.mjs"
    },
    "./chunk": "./hublabubla/chunk.mjs"
}

[尖叫声] 非标准散列目录在被捆绑之前被清除! 所以,如果有什么应该 与捆绑在一起, 它应该添加在那里 之后 捆绑.

配置 VSC 以正确建议进口

VSC使用TypeScript规则建议进口. 然而,TS默认使用CJS规则,忽略了CJS的限制 exports 字段和建议整个文件路径(例如). <package>/dist/<file> 改为 <package>/<submodule-name>) (中文(简体) ). 要修复, TS 必须配置由 tsconfig.json 或者说 jsconfig.json 文件为 根据无害环境管理规则解决模块数字 :

{
    "module": "node16",
    // or
    "moduleResolution": "node16"
}

许可证

见 自由主义 详细文件.

版本与发布记录

@comandeer/rollup-lib-bundler 共发布 36 个版本,首次发布于 2017/03/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.27.0latest2025/04/061.6 年前
0.26.02025/03/091.7 年前
0.25.02024/11/162 年前
0.24.02024/10/082 年前
0.23.02024/05/022 年前
0.22.12023/07/293 年前

关于 @comandeer/rollup-lib-bundler 的常见问题

@comandeer/rollup-lib-bundler 是什么?

简单的库捆绑器

如何安装 @comandeer/rollup-lib-bundler?

在项目目录运行 npm install @comandeer/rollup-lib-bundler,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 rlb,可以用 npx rlb 直接运行。

@comandeer/rollup-lib-bundler 支持 TypeScript 吗?

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

@comandeer/rollup-lib-bundler 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@comandeer/rollup-lib-bundler 需要什么版本的 Node.js?

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

@comandeer/rollup-lib-bundler 可以商用吗?

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

@comandeer/rollup-lib-bundler 的下载量有多少?

根据 npm 官方下载统计,@comandeer/rollup-lib-bundler 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,780 次,日均约 93 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@comandeer/rollup-lib-bundler 还在维护吗?

最新版本 0.27.0 发布于 2025/04/06(1.6 年前);至今共发布 36 个版本,其中过去 12 个月发布了 0 个;首次发布于 2017/03/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。