#monorepo #typescript #bundling #back-end #swc #build #build-tool

app bndl_cli

适用于(主要是后端)monorepo的基本 TypeScript 转译和打包工具

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命令行工具

Download history 3/week @ 2024-04-23 119/week @ 2024-06-11 55/week @ 2024-06-18 123/week @ 2024-06-25 65/week @ 2024-07-02

2,515 每月下载次数

MIT 许可证

70KB
1.5K SLoC

bndl

crates.io npm GitHub Workflow Status (with event)

介绍 bndl,一个适用于后端 monorepo 的基本 TypeScript 转译和打包工具。它底层使用 SWC,因此它可以从其相对于 tsc 带来的速度提升中受益。

它的目标是为已经习惯于使用 tsc 的人提供一个几乎无需更改的替代方案,并使用项目中已经存在的 tsconfig.jsonbndl 会遍历 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