bun init
 
使用 bun init 可以搭建一个新项目,类似于 npm init,同样,bun init 也可以接收 -y/--yes 的参数,同样类似于 npm init -y。
bun init
工作原理
- 先创建一些默认文件 - 包文件:带 name 属性的 package.json
- 语言配置文件:jsconfig.json/tsconfig.json:取决于package.json文件的入口文件为.js还是.ts
- 入口文件:index.ts/index.js
- README 文件:README.md
 
- 包文件:带 name 属性的 
- 运行 bun install安装@types/bun
bun create
 
使用 bun create 可以通过一个模板创建一个新项目,模板包括:npm 包、GitHub 存储库、本地模板。
通过 npm 包创建
bun create <template> [<destination>]
此命令会从 npm 中下载并执行 create-<template> 包。
通过 GitHub 创建
# 下载库
bun create <user>/<repo>
bun create github.com/<user>/<repo># 下载文件夹
bun create <user>/<repo> mydir
bun create github.com/<user>/<repo> mydir
Bun 会执行以下步骤:
-  下载模板 
-  将所有模板文件复制到目标文件夹中 
-  使用 bun install
-  初始化新的 Git 存储库 使用 --no-git选择退出
-  运行模板的配置 start脚本(如果已定义)
默认情况下,Bun 不会覆盖任何现有文件。
可以使用
--force覆盖现有文件。
通过本地模板创建
⚠通过本地模板创建会删除目标文件夹。
Bun 的模板化器可以扩展为支持在本地文件系统上定义的自定义模板。这些模板应位于以下目录之一中:
- $HOME/.bun-create/<name>:全局模板
- <project root>/.bun-create/<name>:项目特定模板
可以通过设置
BUN_CREATE_DIR环境变量来自定义全局模板路径。
创建的步骤分为两步:
-  自定义本地模板(如果已有则跳过) 进入 $HOME/.bun-create/<name>目录,创建一个package.json文件并添加 name 属性为自定义的名称(例如:bun-template)。
-  在要创建文件的目录运行 bun create <name>
高级配置
可以在本地模板的 package.json 中配置一些脚本。
{"bun-create": {// 安装依赖前运行"preinstall": "echo 'Installing...'", // 单一命令// 安装依赖后运行"postinstall": ["echo 'Done!'"], // 多个命令}
}
命令参数
| 参数 | 描述 | 
|---|---|
| --force | 覆盖现有文件 | 
| --no-install | 跳过安装 node_modules和任务 | 
| --no-git | 不要初始化 git 仓库 | 
| --open | 完成后启动在浏览器内打开 | 
环境变量
| 名称 | 描述 | 
|---|---|
| GITHUB_API_DOMAIN | 如果您使用的是 GitHub 企业或代理,则可以自定义 GitHub 域 Bun ping 以供下载 | 
| GITHUB_ACCESS_TOKEN | 这允许 bun create使用私有存储库,或者如果您受到速率限制 | 
工作原理
-  npm -  GET registry.npmjs.org/@bun-examples/${template}/latest并解析
-  GET registry.npmjs.org/@bun-examples/${template}/-/${template}-${latestVersion}.tgz
-  解压缩并提取 ${template}-${latestVersion}.tgz到${destination}如果存在会覆盖的文件,警告并退出,除非 --force强制覆盖。
 
-  
-  GitHub -  从 GitHub 的 API 下载压缩包 
-  解压缩并提取到 ${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 客户端,首选 pnpm,yarn(v1),最后npm
-  使用 npm 客户端运行定义 "bun-create": { "preinstall" }的所有任务
-  除非 --no-install或package.json中没有依赖项,否则运行${npmClient} install
-  使用 npm 客户端运行定义 "bun-create": { "postinstall" }的所有任务
-  运行 git init; git add -A .; git commit -am "Initial Commit";-  重命名 gitignore为.gitignoreNPM 会自动删除 .gitignore文件,使其不出现在包中
-  如果存在依赖项,则在安装 node_modules时,它会在单独的线程中并发运行
-  使用 libgit2(如果可用)在微基准测试中进行了测试,执行速度慢了 3 倍 
 
-  
 
-