背景
turbo 在 v1.2 实现了众人期待的 --filter
语法,和 pnpm 的 filter 基本一致。
-
Turborepo:Filtering Packages
-
Turborepo:v1.2.0 CHANGELOG
如果你还不了解 turbo ,可以参见之前我的几篇文章:
解法
我们关心的是该如何升级 v1.2.0 ,其实只有一件事我们应该注意的,就是这里由于已经实现了 --filter
,所以之前我们必须加的两个构建选项 --no-deps
和 --include-dependencies
已经被废弃,同时 --scope
也被废弃(详见 Docs deprecated )。
也就是说,现在我们要定点构建一个项目,需要用 filter 语法:
turbo run build --filter=@scope/name...
Why ...
注意这里包名后的 ...
,和 pnpm 的 filter 语法同理,指代该包和他的依赖,其实就是以前的 --no-deps --include-dependencies
,然后把 --scope
的包名写到了 --filter
而已。
How filter dir or project
这里简单提一下如何过滤构建范围,因为 --scope
不能用了,所以如果要过滤文件夹范围,使用:
# 只构建 packages/* 下的项目
turbo run build --filter=./packages/*
如果要过滤单项目,使用:
# 这里尾部加不加他的依赖 `...` ,根据情况来,一般是需要加的,除非你想纯净的构建该包。
turbo run build --filter=@scope/name
总结
有了 filter
之后省去了一些冗余成本,还是很不错的。