@ comandeer/ rollup- lib- bundler
使用超级视图库捆绑器 滚动, (中文(简体) ), 宝贝 财务报告和审定财务报表 坐标。 。 。 .
安装
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"
}
许可证
见 自由主义 详细文件.