@bfchain/pkgm v2.8.0
BFSP
快速开始
使用 bfsp init <pkgName> 快速初始化一个项目,项目创建完成之后,会生成如下目录结构
- pkgName // 工作空间目录,请勿在这个文件夹直接创建
#bfsp.ts(若要创建,请新建目录)- pkgName // 包目录
- ...
然后根据提示,cd pkgName,执行 bfsp dev 就可以启动开发, 执行bfsp build执行多平台编译
启动后的面板,可通过对应的数字按键切换面板显示,也可以通过左右导航键进行切换
依赖管理
bfsp 支持依赖管理,可以在 #bfsp.ts里的 packageJson.deps字段下添加依赖项,格式同 package.json
...
"packageJson":{
"deps":{
"@bfchain/util-encoding-utf8":"^0.0.1-alpha.4"
}
}保存会自动安装对应依赖
Why BFSP
- 减少配置
- 提供一套 typescript 最佳实践
- 开发者无需关心 tsc/rollup/esbuild 等 ts-to-js 工具生态,而是将 typescript 作为直接的可执行语言来看待。
- 支持多平台模式,从而支持编译出 nodejs、browser 等平台的代码
- 未来将加入对其它语言的互通支持,通过 ?2Js/Wasm
Roadmap
多项目模式目前还处于提案状态,相关的开发在 bfsp v3 才会正式开始。 当前 v2 专注于单项目的打包与开发,如果需要多项目,可以作为
monorepo模式下的pacakges/*文件夹进行开发
- typings 文件夹下的
.ts文件, 以及任意文件夹下的.type.ts文件,都会全部被包含到 prod 项目中的 typings 文件夹下 - bin 文件夹下,
.bin.ts后缀的文件自动变成出口文件,用于输出 package.json 的 bin 指令- 可以通过
bfsp exe/bin {projectName} {binName}来执行项目指令,可以缩写成bfsx {projectName} {binName}{projectName}如果是.开头,那么就使用对应的文件夹作为{projectName}无需通过npm仓库或者pkgm仓库安装对应的模块
- 可以通过
- tests 文件夹下,
.test.ts后缀的文件自动变成出口文件,用于输出测试用的可执行文件,但不会跟着被发布出去 bin/dev需要启动以下作业:- 监听更新 typescript 相关的配置文件与自动生成的代码
- 将 bin 输出到 package.json
- 提供
#{Profile}模式- 将 Profiles 写入到 tsConfig 的 paths 属性中
- vite 编译阶段使用 tsConfig 的 paths 配置进行文件选择
- 提供 test 指令
前期使用 ava 来作为测试功能的后端,只需要启动 ava/cli 即可
- 支持
?选择器,比如输入 bfsp test ?,那么进入交互界面,用于选择特定的测试,执行并打印改指令,用于下一次快速执行
- 支持
- 提供 fmt 指令
提供默认的.prettierrc 文件
- 为 dev 模式提供 cmd 面板
- 可以快速输入一些内置的指令与提示
- test 提示测试模块的名字
- fmt 提供格式化模式:diff/all;文件类型的提示:.ts/.json/.html 等
- 可以快速输入一些内置的指令与提示
- 为 dev 模式提供 test 面板
- 在新的线程中运行 test 指令,并将其 stdout/err 输出转储到 logger 面板
- 提供 build 指令
bfsp 的 build 指令,本质是输出 bfchain-system 所需的可执行文件 但开发者可以提供自定义
profiles,来做个性化编译,从而输出到 nodejs、browser 平台。 - 提供 npm 指令
有三种子指令:
publish/pack- 默认是
publish,其行为与learn publish一致,需要 git 完全提交完毕,而后会根据变动信息,自动变更版本号。 pack指令是在.npm文件夹下打包出.tgz文件。如果有子项目,也会一并导出多个.tgz
- 默认是
- 多项目模式
使用 yarn 支持 workspace 依赖 那么将子项目的 tsconfig.json 文件一并合并进项目中做 tsc 子项目同时启动 bundle,同步编译 子项目会被排除出当前项目之外,只使用项目名称来进行引用
- 自举:bfsp 项目自身使用 bfsp 进行编译
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago