CRBT-Team/Purplet

View on GitHub
packages/purplet/src/build/rollup-plugin-purplet-entry.ts

Summary

Maintainability
A
0 mins
Test Coverage
import type { Plugin } from 'rollup';
import dynamicVirtual from './rollup-plugin-dynamic-virtual';
import { escapeJSString } from './rollup-plugin-purplet-features';

/** Provides `$$entrypoint` */
export function pluginEntrypoints(entrypoints: string[]): Plugin {
  const dynamic = dynamicVirtual('entry', [
    {
      match: /^\$\$entrypoint$/,
      load: () => entrypoints.map(x => `import '${escapeJSString(x)}';`),
    },
  ]);

  return {
    ...dynamic,
    resolveId(id) {
      const result = (dynamic as any).resolveId(id);
      if (result) {
        return result;
      }

      // Force entrypoints to be non external
      if (entrypoints.includes(id)) {
        return {
          id,
          external: false,
        };
      }
    },
  };
}