diff --git a/packages/scripts/src/scripts/exportDir.ts b/packages/scripts/src/scripts/exportDir.ts index ffbdd4f..5bcde0b 100644 --- a/packages/scripts/src/scripts/exportDir.ts +++ b/packages/scripts/src/scripts/exportDir.ts @@ -1,6 +1,7 @@ import * as fs from 'fs' import {argparse, arg} from '@rondo.dev/argparse' import {join} from 'path' +import {info} from '../log' export async function exportDir(...argv: string[]) { const args = argparse({ @@ -22,7 +23,6 @@ export async function exportDir(...argv: string[]) { .map(item => `export * from './${item}'\n`) .reduce((str, item) => str += item, '') - // tslint:disable-next-line - console.log('Writing to %s', out) + info('Writing to %s', out) fs.writeFileSync(join(dir, 'index.ts'), index) } diff --git a/packages/scripts/src/scripts/index.ts b/packages/scripts/src/scripts/index.ts index 8d043a8..4238c24 100644 --- a/packages/scripts/src/scripts/index.ts +++ b/packages/scripts/src/scripts/index.ts @@ -2,3 +2,4 @@ export * from './add' export * from './build' export * from './exportDir' export * from './intergen' +export * from './syncEsm' diff --git a/packages/scripts/src/scripts/syncEsm.ts b/packages/scripts/src/scripts/syncEsm.ts new file mode 100644 index 0000000..f9616c2 --- /dev/null +++ b/packages/scripts/src/scripts/syncEsm.ts @@ -0,0 +1,59 @@ +import * as fs from 'fs' +import * as path from 'path' +import {argparse, arg} from '@rondo.dev/argparse' +import {info} from '../log' + +const TSCONFIG_FILENAME = 'tsconfig.json' +const TSCONFIG_ESM_FILENAME = 'tsconfig.esm.json' +const PKG_DIRNAME = 'packages' + +interface IRef { + path: string +} + +export async function syncEsm(...argv: string[]) { + const args = argparse({ + packages: arg('string', {default: 'packages/', positional: true}), + help: arg('boolean', {alias: 'h'}), + }) + .parse(argv) + + const pkgDir = args.packages + + const projects = fs.readdirSync(pkgDir) + .filter(file => { + const stat = fs.lstatSync(path.join(pkgDir, file)) + return stat.isDirectory() + }) + .map(file => path.join(pkgDir, file, TSCONFIG_FILENAME)) + .filter(file => fs.existsSync(file)) + .forEach(file => { + const tsconfig = JSON.parse(fs.readFileSync(file, 'utf8')) + const references = ((tsconfig.references || []) as IRef[]) + .map(ref => ({ + ...ref, + path: path.join(ref.path, TSCONFIG_ESM_FILENAME), + })) + + const tsconfigEsm = { + extends: `./${TSCONFIG_FILENAME}`, + compilerOptions: { + outDir: 'esm', + }, + references, + } + + const dirname = path.dirname(file) + const esmFile = path.join(dirname, TSCONFIG_ESM_FILENAME) + info('Writing %s', esmFile) + fs.writeFileSync(esmFile, JSON.stringify(tsconfigEsm, null, ' ')) + + const pkgFile = path.join(dirname, 'package.json') + const pkg = JSON.parse(fs.readFileSync(pkgFile, 'utf8')) + pkg.module = 'lib/index.js' + pkg.module = pkg.main ? pkg.main.replace(/^lib/, 'esm') : 'lib/index.js' + + info('Writing %s', pkgFile) + fs.writeFileSync(pkgFile, JSON.stringify(pkg, null, ' ')) + }) +} diff --git a/scripts/sync-esm-config.js b/scripts/sync-esm-config.js deleted file mode 100755 index fab3587..0000000 --- a/scripts/sync-esm-config.js +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env node -const fs = require('fs') -const path = require('path') - -const TSCONFIG_FILENAME = 'tsconfig.json' -const TSCONFIG_ESM_FILENAME = 'tsconfig.esm.json' -const PKG_DIRNAME = 'packages' - -const projectRoot = path.relative( - process.cwd(), path.resolve(__dirname, '..')) -const pkgDir = path.join(projectRoot, PKG_DIRNAME) - -const projects = fs.readdirSync(pkgDir) -.filter(file => { - const stat = fs.lstatSync(path.join(pkgDir, file)) - return stat.isDirectory() -}) -.map(file => path.join(pkgDir, file, TSCONFIG_FILENAME)) -.filter(file => fs.existsSync(file)) -.forEach(file => { - const tsconfig = JSON.parse(fs.readFileSync(file, 'utf8')) - const references = (tsconfig.references || []) - .map(ref => ({ - ...ref, - path: path.join(ref.path, TSCONFIG_ESM_FILENAME), - })) - - const tsconfigEsm = { - extends: `./${TSCONFIG_FILENAME}`, - compilerOptions: { - "outDir": "esm", - }, - references, - } - - const dirname = path.dirname(file) - const esmFile = path.join(dirname, TSCONFIG_ESM_FILENAME) - console.log('Writing %s', esmFile) - fs.writeFileSync(esmFile, JSON.stringify(tsconfigEsm, null, ' ')) - - const pkgFile = path.join(dirname, 'package.json') - const pkg = JSON.parse(fs.readFileSync(pkgFile, 'utf8')) - pkg.module = 'lib/index.js' - pkg.module = pkg.main ? pkg.main.replace(/^lib/, 'esm') : 'lib/index.js' - console.log('Writing %s', pkgFile) - fs.writeFileSync(pkgFile, JSON.stringify(pkg, null, ' ')) -})