Mar*_*iel 8 build typescript lerna yarnpkg yarn-workspaces
我在单一存储库中有这个大型打字稿项目,使用yarn workspaces
并lerna
具有以下架构:
repo
??? API
? ??? (GraphQL API)
??? Apps
? ??? (Front-end React Apps)
??? Libs
? ??? (Shared libraries)
??? Services
??? (Back-end Services)
Run Code Online (Sandbox Code Playgroud)
我package.json
看起来像:
{
...
"workspaces": [
"API/**/*",
"Apps/**/*",
"Libs/**/*",
"Services/**/*",
],
"scripts": {
"bootstrap": "lerna bootstrap",
"build": "lerna run build"
}
...
}
Run Code Online (Sandbox Code Playgroud)
我的lerna.json
样子:
{
"lerna": "2.11.0",
"npmClient": "yarn",
"useWorkspaces": true,
"workspaces": [
"Libs/**/*",
"API/**/*",
"Apps/**/*",
"Services/**/*"
],
"version": "1.0.0"
}
Run Code Online (Sandbox Code Playgroud)
现在我需要Libs
在两者之前构建所有共享Apps
,Services
因为它们依赖于它。但是,当我运行yarn build
并触发时,lerna run build
它似乎build
以随机(?)顺序触发该过程,因此无法构建,因为库“尚不存在”。
有没有办法设置如何lerna
触发构建的顺序?
lerna
到目前为止没有优先级。
虽然这是我目前在几个项目中所做的:
"scripts": {
...
"build": "lerna run build --ignore=libs-*",
"prebuild": "lerna run build --scope=libs-*"
...
}
Run Code Online (Sandbox Code Playgroud)
注意:prebuild
会自动运行,所以你不需要显式调用它
这里的一个警告是,您需要在所有Libs
包名称前加上libs-module-name
上面的示例或范围之类的前缀,@my-org-libs/module-name
并@my-org-libs/*
改为使用它们来调用它们。
另一个解决方案是调用每个Libs
包明确有多个--scope=package-name --scope=package-name-2
参数prebuild
。但是,如果您在Libs
.
归档时间: |
|
查看次数: |
1949 次 |
最近记录: |