workflow: support building types in build script

This commit is contained in:
Evan You 2023-04-18 11:39:21 +08:00
parent 57f0fbe76a
commit 7f1b546a99
3 changed files with 30 additions and 10 deletions

View File

@ -12,7 +12,13 @@ if (!existsSync('temp/packages')) {
process.exit(1)
}
export default readdirSync('temp/packages').map(pkg => {
const packages = readdirSync('temp/packages')
const targets = process.env.TARGETS ? process.env.TARGETS.split(',') : null
const targetPackages = targets
? packages.filter(pkg => targets.includes(pkg))
: packages
export default targetPackages.map(pkg => {
return {
input: `./temp/packages/${pkg}/src/index.d.ts`,
output: {

View File

@ -34,6 +34,7 @@ const targets = args._
const formats = args.formats || args.f
const devOnly = args.devOnly || args.d
const prodOnly = !devOnly && (args.prodOnly || args.p)
const buildTypes = args.withTypes || args.t
const sourceMap = args.sourcemap || args.s
const isRelease = args.release
const buildAllMatching = args.all || args.a
@ -44,12 +45,25 @@ run()
async function run() {
const removeCache = scanEnums()
try {
if (!targets.length) {
await buildAll(allTargets)
checkAllSizes(allTargets)
} else {
await buildAll(fuzzyMatchTarget(targets, buildAllMatching))
checkAllSizes(fuzzyMatchTarget(targets, buildAllMatching))
const resolvedTargets = targets.length
? fuzzyMatchTarget(targets, buildAllMatching)
: allTargets
await buildAll(resolvedTargets)
checkAllSizes(resolvedTargets)
if (buildTypes) {
await execa(
'pnpm',
[
'run',
'build-dts',
...(targets.length
? ['--environment', `TARGETS:${resolvedTargets.join(',')}`]
: [])
],
{
stdio: 'inherit'
}
)
}
} finally {
removeCache()

View File

@ -199,9 +199,9 @@ async function main() {
// build all packages with types
step('\nBuilding all packages...')
if (!skipBuild && !isDryRun) {
await run('pnpm', ['run', 'build'])
step('\nBuilding and testing types...')
await run('pnpm', ['test-dts'])
await run('pnpm', ['run', 'build', '--withTypes'])
step('\nTesting built types...')
await run('pnpm', ['test-dts-only'])
} else {
console.log(`(skipped)`)
}