Bun 入门到精通(二)——初始化

bun init

使用 bun init 可以搭建一个新项目,类似于 npm init,同样,bun init 也可以接收 -y/--yes 的参数,同样类似于 npm init -y

bun init

工作原理

  1. 先创建一些默认文件
    1. 包文件:带 name 属性的 package.json
    2. 语言配置文件:jsconfig.json/tsconfig.json:取决于 package.json 文件的入口文件为 .js 还是 .ts
    3. 入口文件:index.ts/index.js
    4. README 文件:README.md
  2. 运行 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 会执行以下步骤:

  1. 下载模板

  2. 将所有模板文件复制到目标文件夹中

  3. 使用 bun install

  4. 初始化新的 Git 存储库

    使用 --no-git 选择退出

  5. 运行模板的配置 start 脚本(如果已定义)

默认情况下,Bun 不会覆盖任何现有文件。

可以使用 --force 覆盖现有文件。

通过本地模板创建

⚠通过本地模板创建会删除目标文件夹。

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

  • $HOME/.bun-create/<name> :全局模板
  • <project root>/.bun-create/<name> :项目特定模板

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

创建的步骤分为两步:

  1. 自定义本地模板(如果已有则跳过)

    进入 $HOME/.bun-create/<name> 目录,创建一个 package.json 文件并添加 name 属性为自定义的名称(例如:bun-template)。

  2. 在要创建文件的目录运行 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 使用私有存储库,或者如果您受到速率限制

工作原理

  1. npm

    1. GET registry.npmjs.org/@bun-examples/${template}/latest 并解析

    2. GET registry.npmjs.org/@bun-examples/${template}/-/${template}-${latestVersion}.tgz

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

      如果存在会覆盖的文件,警告并退出,除非 --force 强制覆盖。

  2. GitHub

    1. 从 GitHub 的 API 下载压缩包

    2. 解压缩并提取到 ${destination}

      如果存在会覆盖的文件,警告并退出,除非 --force 强制覆盖

  3. 本地

    1. 打开本地模板文件夹

    2. 以递归方式删除目标目录

    3. 使用最快的系统调用递归复制文件(在 macOS fcopyfile 和 Linux 上, copy_file_range

      如果存在,请勿复制或遍历到 node_modules 文件夹(仅此一项就使其比 cp ) 更快

    4. 再次解析 package.json,更新 name${basename(destination)},从中删除 package.jsonbun-create 部分并将更新后的 package.json 保存到磁盘

      1. 如果检测到Next.js,请添加到 bun-framework-next 依赖项列表中

      2. 如果检测到 Create React App,请在 /src/index 中添加入口点

        {js,jsx,ts,tsx} 更改为 public/index.html

      3. 如果检测到 Relay,请添加 bun-macro-relay 以使 Relay 正常工作

    5. 自动检测 npm 客户端,首选 pnpmyarn (v1),最后 npm

    6. 使用 npm 客户端运行定义 "bun-create": { "preinstall" } 的所有任务

    7. 除非 --no-installpackage.json 中没有依赖项,否则运行 ${npmClient} install

    8. 使用 npm 客户端运行定义 "bun-create": { "postinstall" } 的所有任务

    9. 运行 git init; git add -A .; git commit -am "Initial Commit";

      1. 重命名 gitignore.gitignore

        NPM 会自动删除 .gitignore 文件,使其不出现在包中

      2. 如果存在依赖项,则在安装 node_modules 时,它会在单独的线程中并发运行

      3. 使用 libgit2(如果可用)在微基准测试中进行了测试,执行速度慢了 3 倍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/579447.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何增强交友、婚恋平台、金融等平台的安全性

运营商二要素核验是一种数字身份验证方法&#xff0c;主要使用用户的手机号码和姓名作为核验要素。这两个要素被认为是最基本的用户身份信息&#xff0c;通过运营商的数据库来核实其真实性。 在实际操作中&#xff0c;用户需要提供手机号码和姓名进行验证。应用系统会调用接口…

全面了解俄罗斯的VK开户和Yandex投放及内容运营

俄罗斯的VKontakte&#xff08;简称VK&#xff09;和Yandex是两个重要的在线平台&#xff0c;对于希望在俄罗斯市场进行推广的企业来说&#xff0c;了解如何在这些平台上开户和投放广告以及内容运营是非常关键的。 俄罗斯vk广告如何开户&#xff1f; 通过上海上弦进行俄罗斯V…

手写一个RNN前向传播以及反向传播

前向传播 根据公式 st tanh (Uxt Wst-1 ba) ot softmax(Vst by ) m 3 词的个数 n 5 import numpy as np import tensorflow as tf # 单个cell 的前向传播过程 # 两个输入&#xff0c;x_t&#xff0c;s_prev,parameters def rnn_cell_forward(x_t,s_prev,parameter…

每日OJ题_DFS回溯剪枝⑧_力扣494. 目标和

目录 力扣494. 目标和 解析代码&#xff08;path设置成全局&#xff09; 解析代码&#xff08;path设置全局&#xff09; 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联…

SpringBoot + Vue实现Github第三方登录

前言&#xff1a;毕业设计终于好了&#xff0c;希望能有空多写几篇 1. 获取Github账号的Client ID和Client secrets 首先点击这个链接进入Github的OAuth Apps页面&#xff0c;页面展示如下&#xff1a; 之后我们可以创建一个新的apps: 填写资料&#xff1a; 创建之后就可以获…

WebGIS面试题(第六期)-GeoServer

WebGIS面试题&#xff08;第六期&#xff09; 以下题目仅为部分题目&#xff0c;全部题目在公众号 {GISer世界} &#xff0c;答案仅供参考!!! 因为本人之前做过相关项目用到了GeoServer&#xff0c;因此在简历上写了熟悉GeoServer。所以在相关面试中都有问到&#xff0c;所以我…

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器(Http板块)

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器&#xff08;Http板块&#xff09; 一、思路图二、Util板块1、Splite板块&#xff08;分词&#xff09;&#xff08;1&#xff09;代码&#xff08;2&#xff09;测试及测试结果i、第一种测试ii、第二种…

[论文阅读] 3D感知相关论文简单摘要

Adaptive Fusion of Single-View and Multi-View Depth for Autonomous Driving 提出了一个单、多视图融合深度估计系统&#xff0c;它自适应地集成了高置信度的单视图和多视图结果 动态选择两个分支之间的高置信度区域执行融合 提出了一个双分支网络&#xff0c;即一个以单…

查看笔记本电池容量/健康状态

1. 打开命令行提示符 快捷键“win R”后输入“cmd” 2. 在命令提示符中输入命令 “powercfg /batteryreport" 并回车 3. 查看文件 最后就可以看到笔记本的电池使用报告了

Promises: JavaScript异步编程的救星

Promises: JavaScript异步编程的救星 Promises&#xff08;承诺&#xff09;是JavaScript中处理异步操作的一种机制&#xff0c;它提供了一种更优雅和可读性更高的方式来处理异步代码。Promises的实现原理基于一种称为"Promise/A"规范的约定&#xff0c;该规范定义了…

[蓝桥杯2024]-Reverse:rc4解析(对称密码rc4)

无壳 查看ida 这里应该运行就可以得flag&#xff0c;但是这个程序不能直接点击运行 按照伪代码写exp 完整exp&#xff1a; keylist(gamelab) content[0xB6,0x42,0xB7,0xFC,0xF0,0xA2,0x5E,0xA9,0x3D,0x29,0x36,0x1F,0x54,0x29,0x72,0xA8, 0x63,0x32,0xF2,0x44,0x8B,0x85,0x…

visual studio2022,开发CMake项目添加rabbitmq库,连接到远程计算机并进行开发于调试

1.打开visual studio installer 。安装“用于 Windows 的 C CMake 工具” 2.新建CMake项目 3.点击VS的“工具”—>"选项“—>“跨平台”—>”连接管理器“,添加远程计算机。用来将VS编辑的代码传到服务器进行编译–连接—运行&#xff08;调试&#xff09;。 …

BIO、NIO与AIO

一 BIO 同步并阻塞(传统阻塞型)&#xff0c;服务器实现模式为一个连接一个线程&#xff0c;即客户端有连接请求时服务器端就需要启动一个线程进行处理. BIO&#xff08;Blocking I/O&#xff0c;阻塞I/O&#xff09;模式是一种网络编程中的I/O处理模式。在BIO模式中&#xf…

鸿蒙内核源码分析(任务调度篇) | 任务是内核调度的单元

任务即线程 在鸿蒙内核中&#xff0c;广义上可理解为一个任务就是一个线程 官方是怎么描述线程的 基本概念 从系统的角度看&#xff0c;线程是竞争系统资源的最小运行单元。线程可以使用或等待CPU、使用内存空间等系统资源&#xff0c;并独立于其它线程运行。 鸿蒙内核每个…

[蓝桥杯2024]-PWN:fd解析(命令符转义,标准输出重定向)

查看保护 查看ida 这里有一次栈溢出&#xff0c;并且题目给了我们system函数。 这里的知识点没有那么复杂 完整exp&#xff1a; from pwn import* pprocess(./pwn) pop_rdi0x400933 info0x601090 system0x400778payloadb"ca\\t flag 1>&2" print(len(paylo…

SAP PP学习笔记07 - 作业手顺(工艺路线Routing)

上一章讲了BOM的相关知识。 SAP PP学习笔记07 - 简单BOM&#xff0c;派生BOM&#xff0c;多重BOM&#xff0c;批量修改工具 CEWB_sap半成品有多个bom-CSDN博客 本章来讲作业手顺&#xff08;工艺路线Routing&#xff09;的相关知识。 1&#xff0c;作业手顺(工艺路线 Routing…

四、线段、矩形、圆、椭圆、自定义多边形、边缘轮廓和文本绘制(OpenCvSharp)

功能实现&#xff1a; 对指定图片上进行绘制线段、矩形、圆、椭圆、自定义多边形、边缘轮廓以及自定义文本 一、布局 用到了一个pictureBox和八个button 二、引入命名空间 using System; using System.Collections.Generic; using System.Drawing; using System.Windows.F…

Dockerfile镜像构建实战

一、构建Apache镜像 cd /opt/ #建立工作目录 mkdir /opt/apache cd apache/vim Dockerfile #基于的基础镜像 FROM centos:7 #维护镜像的用户信息 MAINTAINER this is apache image <cyj> #镜像操作指令安装Apache软件 RUN yum install -y httpd #开启80端口 EXPOSE 80 #…

远程桌面连接不上个别服务器的问题分析与解决方案

在日常的IT运维工作中&#xff0c;远程桌面连接&#xff08;RDP&#xff0c;Remote Desktop Protocol&#xff09;是我们经常使用的工具之一&#xff0c;用于管理和维护远程服务器。然而&#xff0c;有时我们可能会遇到无法连接到个别服务器的情况。针对这一问题&#xff0c;我…

《Kafka 3.x.x 入门到精通》

Kafka 3.x.x 入门到精通 Kafka是一个由Scala和Java语言开发的&#xff0c;经典高吞吐量的分布式消息发布和订阅系统&#xff0c;也是大数据技术领域中用作数据交换的核心组件之一。以高吞吐&#xff0c;低延迟&#xff0c;高伸缩&#xff0c;高可靠性&#xff0c;高并发&#x…
最新文章