build: two-step for packages/vendor build and README

This commit is contained in:
imccyu
2026-06-17 23:31:38 +08:00
parent 279e9f17eb
commit ec9b093cb0
11 changed files with 53 additions and 37 deletions

View File

@@ -3,9 +3,10 @@ import { defineConfig } from 'tsdown'
/**
* logger-console ships two entries: the node exporter (index) and the
* browser exporter (browser), selected via package.json `exports`
* conditions. They are built as two single-entry passes so the shared
* base class is inlined into each (matching upstream's published shape)
* instead of split into a hash-named chunk.
* conditions. The entries are JS emitted by tsc under lib/typings and are
* bundled as two single-entry passes so the shared base class is inlined into
* each (matching upstream's published shape) instead of split into a hash-named
* chunk.
*/
const shared = {
outDir: 'lib',
@@ -18,6 +19,6 @@ const shared = {
} as const
export default defineConfig([
{ ...shared, entry: ['src/index.ts'] },
{ ...shared, entry: ['src/browser.ts'] },
{ ...shared, entry: ['lib/typings/index.js'] },
{ ...shared, entry: ['lib/typings/browser.js'] },
])

View File

@@ -2,12 +2,12 @@ import { defineConfig } from 'tsdown'
/**
* schemastery has no `"type": "module"` and publishes dual-format output
* (package.json: main → lib/index.cjs, module → lib/index.mjs). Pin the
* extensions explicitly — the defaults for a CommonJS package would emit
* .mjs/.js instead.
* (package.json: main → lib/index.cjs, module → lib/index.mjs). The entry is
* the JS emitted by tsc under lib/typings; pin the bundled extensions
* explicitly because the defaults for a CommonJS package would emit .mjs/.js.
*/
export default defineConfig({
entry: ['src/index.ts'],
entry: ['lib/typings/index.js'],
outDir: 'lib',
format: ['esm', 'cjs'],
platform: 'node',