diff --git a/scripts/build.sh b/scripts/build.sh index f820242..4e26a45 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -46,6 +46,7 @@ wait # Rewrite ESM imports 😤 $rewriteImports "$DST" '/**/*.js' +$rewriteImports "$DST" '/**/*.d.ts' # Remove test related files rm -rf `$resolver "$DST" '/**/*.{test,__mocks__,}.*'` diff --git a/scripts/rewrite-imports.js b/scripts/rewrite-imports.js index 5eea337..4f0fa9b 100755 --- a/scripts/rewrite-imports.js +++ b/scripts/rewrite-imports.js @@ -8,7 +8,15 @@ console.time('Rewrote imports in') fastGlob.sync([process.argv.slice(2).join('')]).forEach((file) => { file = path.resolve(process.cwd(), file) let content = fs.readFileSync(file, 'utf8') - let result = content.replace(/(import|export)([^"']*?)(["'])\.(.*?)\3;/g, '$1$2".$4.js";') + let result = content.replace(/(import|export)([^"']*?)(["'])\.(.*?)\3/g, (full, a, b, _, d) => { + // For idempotency reasons, if `.js` already exists, then we can skip this. This allows us to + // run this script over and over again without adding .js files every time. + if (d.endsWith('.js')) { + return full + } + + return `${a}${b}'.${d}.js'` + }) if (result !== content) { fs.writeFileSync(file, result, 'utf8') }