UNPKG

@travetto/pack

Version:

Code packing utilities

42 lines (33 loc) 1.19 kB
import { readFileSync } from 'node:fs'; import type { Plugin } from 'rollup'; import { RuntimeIndex } from '@travetto/runtime'; import type { CoreRollupConfig } from '../../src/types.ts'; export const GLOBAL_IMPORT = '__trv_imp'; export function travettoEntryPlugin(config: CoreRollupConfig): Plugin { const imports = config.files .map(file => file.split('node_modules/').pop()!) .flatMap(file => file.endsWith('/__index__.js') ? [file.replace('/__index__.js', ''), file] : [file]); const importer = ` function trvImp(path) { switch (path) { ${imports.map(file => ` case '${file}': return import('${file}')`).join('\n')} default: return import(path); // Fall back for built-ins } } globalThis.${GLOBAL_IMPORT} = trvImp; `; const out: Plugin = { name: 'travetto-entry', intro() { return readFileSync(RuntimeIndex.getFromImport('@travetto/pack/support/bin/preamble.ts')!.outputFile, 'utf8') .replaceAll('%%ENV_FILE%%', config.envFile ?? '') .replace(/\/\/# source.*$/m, ''); }, load(id) { if (id.endsWith(config.entry)) { return `${importer}${readFileSync(id, 'utf8')}`; } } }; return out; }