diff --git a/lib/package-bin.test.ts b/lib/package-bin.test.ts new file mode 100644 index 0000000..3a97e1c --- /dev/null +++ b/lib/package-bin.test.ts @@ -0,0 +1,23 @@ +import { readFileSync } from 'fs'; +import { join } from 'path'; + +const root = join(__dirname, '..'); +const packageJson = JSON.parse( + readFileSync(join(root, 'package.json'), 'utf8'), +); +const tsupConfig = readFileSync(join(root, 'tsup.config.ts'), 'utf8'); + +describe('published CLI binaries', () => { + it('builds every package.json bin target into dist/bin', () => { + const binEntries = packageJson.bin as Record; + + expect(Object.keys(binEntries).sort()).toEqual([ + 'acars-decoder', + 'acars-decoder-test', + ]); + for (const command of Object.keys(binEntries)) { + expect(binEntries[command]).toBe(`./dist/bin/${command}.js`); + expect(tsupConfig).toContain(`'bin/${command}': 'lib/bin/${command}.ts'`); + } + }); +}); diff --git a/tsup.config.ts b/tsup.config.ts index 548340e..2a89dfc 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,7 +1,11 @@ import { defineConfig } from 'tsup'; export default defineConfig({ - entry: ['index.ts'], + entry: { + index: 'index.ts', + 'bin/acars-decoder': 'lib/bin/acars-decoder.ts', + 'bin/acars-decoder-test': 'lib/bin/acars-decoder-test.ts', + }, format: ['cjs', 'esm'], dts: true, splitting: false,