@open-editor/rollup
Version:
🚀 A rollup plugin for fast find source code.
2 lines (1 loc) • 945 B
JavaScript
import{resolve}from"node:path";import{isDev,resolvePath}from"@open-editor/shared/node";import{normalizePath,CLIENT_MODULE_ID,ENTRY_MATCH_RE,injectClient}from"@open-editor/shared";import{setupServer}from"@open-editor/server";const portPromiseCache={};function OpenEditorPlugin(options={}){if(!isDev())return{name:"OpenEditorPlugin"};const{onOpenEditor}=options,rootDir=normalizePath(options.rootDir?resolve(options.rootDir):process.cwd());let serverPort;return{name:"OpenEditorPlugin",async buildStart(){const cacheKey=`${rootDir}${onOpenEditor}`;serverPort=await(portPromiseCache[cacheKey]||(portPromiseCache[cacheKey]=setupServer({...options.server??{},rootDir,onOpenEditor})))},resolveId(id){if(id===CLIENT_MODULE_ID)return resolvePath(CLIENT_MODULE_ID,import.meta.url).replace(/\.js$/,".mjs")},transform(code,id){if(ENTRY_MATCH_RE.test(id))return injectClient(code,{...options,rootDir,port:serverPort})}}}export{OpenEditorPlugin as default};