|
| 1 | +import { join, resolve } from 'path'; |
| 2 | +import { readdirSync, readFileSync, statSync, writeFileSync } from 'fs'; |
| 3 | + |
| 4 | +const cwd = process.cwd(); |
| 5 | + |
| 6 | +const DIST_DIR = resolve(cwd, 'dist'); |
| 7 | +const packageJson = resolve(cwd, 'package.json'); |
| 8 | + |
| 9 | +function getExportsEntries() { |
| 10 | + const entries = {}; |
| 11 | + const dirs = readdirSync(DIST_DIR); |
| 12 | + for (const index in dirs) { |
| 13 | + const path = join(DIST_DIR, dirs[index]); |
| 14 | + const name = dirs[index]; |
| 15 | + const exportPath = `./${name}`; |
| 16 | + if (statSync(path).isDirectory()) { |
| 17 | + entries[exportPath] = { |
| 18 | + import: `./dist/${name}/index.js`, |
| 19 | + require: `./dist/${name}/index.cjs`, |
| 20 | + types: `./dist/${name}/index.d.ts`, |
| 21 | + }; |
| 22 | + } |
| 23 | + } |
| 24 | + return entries; |
| 25 | +} |
| 26 | + |
| 27 | +function generateExportsField() { |
| 28 | + const exportsField = { |
| 29 | + '.': { |
| 30 | + import: './dist/index.js', |
| 31 | + require: './dist/index.cjs', |
| 32 | + types: './dist/index.d.ts', |
| 33 | + }, |
| 34 | + ...getExportsEntries(), |
| 35 | + }; |
| 36 | + |
| 37 | + return exportsField; |
| 38 | +} |
| 39 | + |
| 40 | +(() => { |
| 41 | + console.log('Generating "exports" field for package.json...'); |
| 42 | + const pkg = JSON.parse(readFileSync(packageJson, 'utf8')); |
| 43 | + pkg.exports = generateExportsField(); |
| 44 | + console.log("Writing 'exports' field to package.json..."); |
| 45 | + writeFileSync(packageJson, JSON.stringify(pkg, null, 2) + '\n', 'utf8'); |
| 46 | + console.log('"exports" field generated successfully!'); |
| 47 | +})(); |
0 commit comments