nvexeca
Version:
nvm + execa = nvexeca
41 lines (23 loc) • 833 B
JavaScript
import{readFile}from"node:fs/promises";
export const getContent=async({type,srcBinDir,filename})=>{
const path=`${srcBinDir}/${filename}`;
const content=await readFile(path,"utf8");
const distContent=CONTENTS[type](srcBinDir,content);
return distContent
};
const getCmdContent=(srcBinDir,content)=>{
const srcBinDirA=srcBinDir.replaceAll("/","\\");
return content.replaceAll(CMD_REGEXP,`${srcBinDirA}$2`)
};
const CMD_REGEXP=/(%%F|%~dp0|%dp0%)(\\node_modules)/gu;
const getShellContent=(srcBinDir,content)=>{
const srcBinDirA=srcBinDir.replace("\\","/");
return content.replaceAll(SHELL_REGEXP,`${srcBinDirA}$1`)
};
const SHELL_REGEXP=
/(\$basedir|\$CLI_BASEDIR|\$NPM_PREFIX|\$PSScriptRoot|"\$nodedir|"\$npmprefix)(\/node_modules)/gu;
const CONTENTS={
cmd:getCmdContent,
bash:getShellContent,
ps1:getShellContent
};