Quellcode durchsuchen

workflow: support building types in build script

Evan You vor 3 Jahren
Ursprung
Commit
7f1b546a99
3 geänderte Dateien mit 30 neuen und 10 gelöschten Zeilen
  1. 7 1
      rollup.dts.config.js
  2. 20 6
      scripts/build.js
  3. 3 3
      scripts/release.js

+ 7 - 1
rollup.dts.config.js

@@ -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: {

+ 20 - 6
scripts/build.js

@@ -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()

+ 3 - 3
scripts/release.js

@@ -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)`)
   }