Templates

2023年 9月 26日 45.3k 0

Templates

bun init

使用交互式的 bun init 命令来创建一个空白项目。

$ bun init
bun init helps you get started with a minimal project and tries to
guess sensible defaults. Press ^C anytime to quit.

package name (quickstart):
entry point (index.ts):

Done! A package.json file was saved in the current directory.
 + index.ts
 + .gitignore
 + tsconfig.json (for editor auto-complete)
 + README.md

To get started, run:
  bun run index.ts

enter 键接受每个提示的默认答案,或者使用 -y 标志自动接受默认设置。

bun create

注意 — 您不需要使用 bun create 来使用 Bun。您根本不需要任何配置。这个命令存在是为了使入门更加快速和简便。

使用 bun create 来创建一个新的 Bun 项目。这是一个灵活的命令,可以用来创建一个新项目,使用 create- npm 包、GitHub 仓库或本地模板。

npm 安装

$ bun create  []

假设您没有与相同名称的本地模板,此命令将下载并执行来自 npm 的create-包。以下两个命令将表现相同:

$ bun create remix
$ bunx create-remix

请参阅相关的create-包的文档以获取完整的文档和使用说明。

从 GitHub 下载

这将下载 GitHub 存储库的内容到磁盘上。

$ bun create /
$ bun create github.com//

可选择为目标文件夹指定名称。如果未指定目标文件夹,则将使用存储库名称。

$ bun create / mydir
$ bun create github.com// mydir

Bun 将执行以下步骤:

  • 下载模板
  • 将所有模板文件复制到目标文件夹
  • 使用 bun install 安装依赖项。
  • 初始化一个新的 Git 仓库。使用 --no-git 标志来退出此步骤。
  • 运行模板的配置的 start 脚本(如果定义了)。

默认情况下,Bun 不会覆盖任何现有文件。使用 --force 标志来覆盖现有文件。

从本地模板创建

⚠️ 警告 — 与远程模板不同,使用本地模板运行 bun create 将删除整个目标文件夹,如果它已经存在!请谨慎使用。

Bun 的模板化工具可以扩展以支持在本地文件系统上定义的自定义模板。这些模板应该位于以下目录之一:

  • $HOME/.bun-create/:全局模板
  • /.bun-create/:项目特定的模板

注意 — 您可以通过设置 BUN_CREATE_DIR 环境变量来自定义全局模板路径。

要创建一个本地模板,导航到 $HOME/.bun-create 并创建一个具有所需模板名称的新目录。

$ cd $HOME/.bun-create
$ mkdir foo
$ cd foo

然后,在该目录中创建一个包含以下内容的 package.json 文件:

{
  "name": "foo"
}

您可以在文件系统的其他位置运行 bun create foo 以验证 Bun 是否正确找到了您的本地模板。

设置逻辑

您可以在本地模板的 package.json"bun-create" 部分中指定预安装和后安装的设置脚本。

{
  "name": "@bun-examples/simplereact",
  "version": "0.0.1",
  "main": "index.js",
  "dependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2"
  },
  "bun-create": {
    "preinstall": "echo 'Installing...'", // a single command
    "postinstall": ["echo 'Done!'"], // an array of commands
    "start": "bun run echo 'Hello world!'"
  }
}

以下字段受支持。每个字段可以对应一个字符串或字符串数组。字符串数组将按顺序执行。

postinstall 在安装依赖项后运行
preinstall 在安装依赖项之前运行

在克隆模板后,bun create 将自动从 package.json 中删除 "bun-create" 部分,然后将其写入目标文件夹。

参考

CLI 标志

标志 描述
--force 覆盖现有文件
--no-install 跳过安装 node_modules 和任务
--no-git 不要初始化 Git 仓库
--open 在完成后启动并在浏览器中打开

环境变量

名称 描述
GITHUB_API_DOMAIN 如果您使用的是 GitHub 企业版或代理,可以自定义 Bun 获取下载的 GitHub 域
GITHUB_API_TOKEN 这使得 bun create 可以与私有仓库一起使用,或者如果您被限制了速率

bun create 的工作原理

当您运行 bun create ${template} ${destination} 时,以下情况会发生:

如果是远程模板

  • 获取 registry.npmjs.org/@bun-examples/${template}/latest 并解析它

  • 获取 registry.npmjs.org/@bun-examples/${template}/-/${template}-${latestVersion}.tgz

  • 解压缩并提取 ${template}-${latestVersion}.tgz${destination}

    • 如果有文件将被覆盖,除非传递了 --force,否则会警告并退出
  • 如果是 GitHub 仓库

  • 从 GitHub 的 API 下载 tarball

  • 解压缩并提取到 ${destination}

    • 如果有文件将被覆盖,除非传递了 --force,否则会警告并退出
  • 否则如果是本地模板

  • 打开本地模板文件夹

  • 递归删除目标目录

  • 递归复制文件,使用可用的最快系统调用(在 macOS 上是 fcopyfile,在 Linux 上是 copy_file_range)。不要复制或遍历 node_modules 文件夹(这个操作使其比 cp 更快)

  • 解析 package.json(再次!),将 name 更新为 ${basename(destination)},然后从 package.json 中删除 "bun-create" 部分,然后保存更新后的 package.json 到磁盘。

    • 如果检测到 Next.js,则将 bun-framework-next 添加到依赖项列表
    • 如果检测到 Create React App,则将入口点添加到 /src/index.{js,jsx,ts,tsx} 到 public/index.html
    • 如果检测到 Relay,则添加 bun-macro-relay 以使 Relay 正常工作
  • 自动检测 npm 客户端,首选 pnpmyarn(v1),最后是 npm

  • 使用 npm 客户端运行任何在 "bun-create": { "preinstall" } 中定义的任务

  • 运行 ${npmClient} install,除非传递了 --no-install 或 package.json 中没有依赖项

  • 使用 npm 客户端运行在 "bun-create": { "preinstall" } 中定义的任何任务

  • 运行以下命令: git init; git add -A .; git commit -am "Initial Commit";

    • gitignore 重命名为 .gitignore。NPM 会自动删除包中的 .gitignore 文件。
    • 如果有依赖项,这将在单独的线程中并发运行,同时正在安装 node_modules
    • 使用可用的 libgit2 进行测试,性能在微型基准测试中表现出 3 倍的速度较慢。
  • 相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论