import { BACKEND_DIR_NAME } from '@ones-open/cli-utils' import commonjs from '@rollup/plugin-commonjs' import json from '@rollup/plugin-json' import resolve from '@rollup/plugin-node-resolve' import { join } from 'path' import type { OutputOptions } from 'rollup' import { rollup } from 'rollup' import typescript from 'rollup-plugin-typescript2' import { cwd } from 'process' function getDefaultRollupConfig(currentWorkingDirectory: string) { const BASE_PATH = join(currentWorkingDirectory, BACKEND_DIR_NAME) const extensions = ['.mjs', '.js', '.ts', '.json', '.node'] const DEFAULT_INPUT_OPTIONS = { input: join(BASE_PATH, 'src', 'index.ts'), plugins: [ resolve({ extensions }), commonjs(), json(), typescript({ tsconfig: join(BASE_PATH, 'tsconfig.json'), }), ], } const DEFAULT_OUTPUT_OPTIONS = { file: join(BASE_PATH, 'dist', 'index.js'), format: 'cjs', sourcemap: false, } as OutputOptions const DEFAULT_ROLLUP_CONFIG = { ...DEFAULT_INPUT_OPTIONS, output: DEFAULT_OUTPUT_OPTIONS, } return { DEFAULT_ROLLUP_CONFIG, DEFAULT_INPUT_OPTIONS, DEFAULT_OUTPUT_OPTIONS, } } async function buildPluginProjectBackEnd( expandOutputOptions?: OutputOptions, currentWorkingDirectory = cwd(), ) { const { DEFAULT_INPUT_OPTIONS: inputOptions, DEFAULT_OUTPUT_OPTIONS: outputOptions } = getDefaultRollupConfig(currentWorkingDirectory) const bundle = await rollup(inputOptions) const finalOutputOptions = expandOutputOptions ? { ...outputOptions, ...expandOutputOptions } : outputOptions return bundle.write(finalOutputOptions) } export { getDefaultRollupConfig, buildPluginProjectBackEnd }