-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
{
// 也许应该给一个name?
build: [NpmBuilder({...packageJson})]
}这里头最难的是 dependencies 配置的生成。
参考 #34 ,NpmBuilder 需要根据当先项目中的 deps 配置,自动生成对应的dependencies。
而deps中存在 git/file 等其它非npm协议,正常来说我们应该将这些项目直接当作源码项目,把它们的代码打包在一起去编译。
但其实不是,比如我的deps中存在 file:///../peer-project,那么应该也判定一下它不是也有 NpmBuilder,如果有应该优先将它列为 dependencies 依赖,而不是把源码打包在一起。
以及,build 存在的可能是高度自定义的一个情况,而不是当前项目的所有源码:
{build:[
NpmBuilder({name:"@xxx/cli",bin:{ "cli":"./src/cli.ts" } }),
NpmBuilder({name:"@xxx/web",exports:{ ".":"./xxx/index#web.ts" } }),
]}在这种情况下,NpmBuilder 需要在 onResolve 时分析出它依赖了哪些npm外部包与对应的版本号,而后将这些外部包加入到 dependencies 中。
对此如果要正确地进行下去,NpmBuilder就需要对所有的非npm依赖的子项目它们的NpmBuilder也进行build。换句话说,如果有非npm的deps,就需要进入bfsw模式,将这些子项目根据依赖顺序逐个进行编译才行。
因此 bfsp 就应该由一个缺省的不可少的NpmBuilder,它来负责依赖之间正确构建的保障。这种情况下,它们之间的版本号是明确一一对应的。
而此时build配置也就意味着属于额外的build。
也就意味着 build 指令不能少。即便开发者不填写 build 指令,也会有一个默认的 DefaultBuilder 负责 NpmBuilder 与 BfspBuilder。
Metadata
Metadata
Assignees
Labels
No labels