43 个稳定版本
1.8.0 | 2024 年 7 月 1 日 |
---|---|
1.7.0 | 2024 年 6 月 17 日 |
1.6.5 | 2024 年 3 月 7 日 |
1.5.7 | 2024 年 1 月 22 日 |
1.3.1 | 2023 年 11 月 29 日 |
#271 在 命令行工具 中
2,515 每月下载次数
70KB
1.5K SLoC
bndl
介绍 bndl
,一个适用于后端 monorepo 的基本 TypeScript 转译和打包工具。它底层使用 SWC,因此它可以从其相对于 tsc
带来的速度提升中受益。
它的目标是为已经习惯于使用 tsc
的人提供一个几乎无需更改的替代方案,并使用项目中已经存在的 tsconfig.json
。 bndl
会遍历 monorepo,使用 swc
打包当前应用程序(或包),并确定哪些依赖项被消费者使用,并将它们复制到该消费者的编译目录 node_modules
。
结果?一个包含应用程序运行所需所有内容的 dist
。只需将 dist
复制到 Docker 镜像中并运行即可。更多信息请参阅 此处。
安装
cargo
$ cargo install bndl_cli
npm
$ npm install -g bndl-cli
curl
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/segersniels/bndl/master/scripts/install.sh)"
wget
$ sh -c "$(wget https://raw.githubusercontent.com/segersniels/bndl/master/scripts/install.sh -O -)"
用法
Usage: bndl [OPTIONS] [COMMAND]
Options:
-p, --project <project> The path to the project config file
--outDir <outDir> Specify an output folder for all emitted files.
--clean Clean the output folder if it exists before bundling
--only-bundle Skips compilation and only bundles the input files, assuming they are already compiled beforehand
--no-bundle Disable automatic bundling of internal monorepo dependencies
-m, --minify Minify the output bundle
-w, --watch Experimental: watch the input files for changes and recompile when they change
--exec <exec> Experimental: use in conjunction with --watch to execute a command after each successful compilation
-h, --help Print help
-V, --version Print version
已知限制
监控
由于 bndl
只监控当前工作空间中的文件更改,因此它不会检测内部依赖项的文件更改。为了节省资源并减少文件更改和重启之间的长时间中断,bndl
还会跳过内部依赖项的打包。为了解决这个问题,您可以允许 bndl
为您重新编译和打包内部依赖项 --exec
。
bndl --watch --exec "npx turbo run build --filter <your-workspace>^... && npx bndl --only-bundle && npm run start"
上述操作将首先构建所有内部依赖项(排除消耗应用程序),并告诉 bndl
只打包这些内部依赖项,跳过任何形式的编译。请注意,这仅会在消耗应用程序中的文件更改时运行,而不会在您保存依赖项本身时运行。因此,请确保在消耗应用程序中保存文件以触发重建。
幸运的是,由于使用了 turbo
以及它提供的缓存,这应该是一个相对快速的操作,并且不会减慢重启速度。
贡献
请期待许多缺失的功能和可能出现的问题。这个项目是根据特定的用例制作的,可能会有一些功能偏离了您的需求。请随意提出问题或提交PR来添加您需要的功能。
请提供带有以下日志的提供的panic日志或调试日志:RUST_LOG=debug bndl ...
,以便您的issue能更快得到解决。
依赖项
~34–46MB
~853K SLoC