2.8.0 • Published 3 years ago

@bfchain/pkgm v2.8.0

Weekly downloads
-
License
-
Repository
-
Last release
3 years ago

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

  1. 减少配置
  2. 提供一套 typescript 最佳实践
  3. 开发者无需关心 tsc/rollup/esbuild 等 ts-to-js 工具生态,而是将 typescript 作为直接的可执行语言来看待。
  4. 支持多平台模式,从而支持编译出 nodejs、browser 等平台的代码
  5. 未来将加入对其它语言的互通支持,通过 ?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 进行编译
2.8.0

3 years ago

2.7.6

3 years ago

2.7.5

3 years ago

2.7.8

3 years ago

2.7.9

3 years ago

2.7.0

3 years ago

2.7.1

3 years ago

2.7.11

3 years ago

2.7.10

3 years ago

2.6.1

3 years ago

2.6.0

3 years ago

2.6.3

3 years ago

2.6.2

3 years ago

2.5.18

3 years ago

2.5.19

3 years ago

2.6.5

3 years ago

2.6.4

3 years ago

2.2.0

4 years ago

2.2.0-alpha.10

4 years ago

2.2.0-alpha.11

4 years ago

2.2.0-alpha.12

4 years ago

2.2.0-alpha.13

4 years ago

2.2.0-alpha.14

4 years ago

2.2.0-alpha.15

4 years ago

2.2.0-alpha.16

4 years ago

2.2.0-alpha.17

4 years ago

2.2.0-alpha.8

4 years ago

2.2.0-alpha.7

4 years ago

2.2.0-alpha.6

4 years ago

2.2.0-alpha.5

4 years ago

2.2.0-alpha.9

4 years ago

2.3.0

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.3

4 years ago

2.2.0-alpha.0

4 years ago

2.2.0-alpha.4

4 years ago

2.2.0-alpha.3

4 years ago

2.2.0-alpha.2

4 years ago

2.2.0-alpha.1

4 years ago

2.0.7

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.6

4 years ago

2.0.0-alpha.1

4 years ago

2.0.1

4 years ago

2.0.0-alpha.0

4 years ago

2.0.0

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.1.2

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

0.0.1-alpha.10

4 years ago

0.0.1-alpha.8

4 years ago

0.0.1-alpha.9

4 years ago

0.0.1-alpha.6

4 years ago

0.0.1-alpha.7

4 years ago

0.0.1-alpha.5

4 years ago

0.0.1-alpha.3

4 years ago

0.0.1-alpha.2

4 years ago

0.0.1-alpha.1

4 years ago