diff --git a/apps/oxlint/scripts/build.ts b/apps/oxlint/scripts/build.ts index d13318dfe6957..2e423bfd4acc5 100755 --- a/apps/oxlint/scripts/build.ts +++ b/apps/oxlint/scripts/build.ts @@ -1,5 +1,5 @@ import { execSync } from 'node:child_process'; -import { copyFileSync, readdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { copyFileSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; const oxlintDirPath = join(import.meta.dirname, '..'), @@ -21,6 +21,11 @@ writeFileSync(bindingsPath, bindingsJs); console.log('Building with tsdown...'); execSync('pnpm tsdown', { stdio: 'inherit', cwd: oxlintDirPath }); +// Delete `cli.d.ts` +console.log('Deleting cli.d.ts...'); +rmSync(join(distDirPath, 'cli.d.ts')); +rmSync(join(debugDirPath, 'cli.d.ts')); + // Copy native `.node` files from `src-js` console.log('Copying `.node` files...'); for (const filename of readdirSync(srcDirPath)) { diff --git a/apps/oxlint/tsdown.config.ts b/apps/oxlint/tsdown.config.ts index 343d0d7fb821a..ee858616b5577 100644 --- a/apps/oxlint/tsdown.config.ts +++ b/apps/oxlint/tsdown.config.ts @@ -1,7 +1,6 @@ import { join } from 'node:path'; import { defineConfig } from 'tsdown'; -import type { UserConfig } from 'tsdown'; import type { Plugin } from 'rolldown'; const ASSERTS_PATH = join(import.meta.dirname, 'src-js/utils/asserts.ts'); @@ -9,7 +8,8 @@ const ASSERTS_PATH = join(import.meta.dirname, 'src-js/utils/asserts.ts'); const replaceAssertsPlugin = createReplaceAssertsPlugin(); const plugins = [replaceAssertsPlugin]; -const commonConfig: UserConfig = { +const config = defineConfig({ + entry: ['src-js/cli.ts', 'src-js/index.ts'], format: 'esm', platform: 'node', target: 'node20', @@ -30,39 +30,25 @@ const commonConfig: UserConfig = { mangle: false, codegen: { removeWhitespace: false }, }, + dts: { resolve: true }, + attw: true, define: { DEBUG: 'false' }, plugins, inputOptions: { // For `replaceAssertsPlugin` experimental: { nativeMagicString: true }, }, -}; - -// Only generate `.d.ts` file for main export, not for CLI -const configs = defineConfig([ - { - entry: 'src-js/cli.ts', - ...commonConfig, - dts: false, - }, - { - entry: 'src-js/index.ts', - ...commonConfig, - dts: { resolve: true }, - attw: true, - }, -]); +}); // Create separate debug build with debug assertions enabled -const debugConfigs = configs.map((config) => ({ +const debugConfig = defineConfig({ ...config, outDir: 'debug', define: { DEBUG: 'true' }, plugins: plugins.filter((plugin) => plugin !== replaceAssertsPlugin), -})); -configs.push(...debugConfigs); +}); -export default configs; +export default [config, debugConfig]; /** * Create a plugin to remove imports of `assert*` functions from `src-js/utils/asserts.ts`,