export function resolveMainFilePath()

in packages/plugin-miniapp/src/helper/utils.ts [222:254]


export function resolveMainFilePath(p: string, extArrs = SCRIPT_EXT): string {
  if (p.startsWith('pages/') || p === 'app.config') {
    return p;
  }
  const realPath = p;
  const taroEnv = process.env.TARO_ENV;
  for (let i = 0; i < extArrs.length; i++) {
    const item = extArrs[i];
    if (taroEnv) {
      if (fs.existsSync(`${p}.${taroEnv}${item}`)) {
        return `${p}.${taroEnv}${item}`;
      }
      if (fs.existsSync(`${p}${path.sep}index.${taroEnv}${item}`)) {
        return `${p}${path.sep}index.${taroEnv}${item}`;
      }
      if (fs.existsSync(`${p.replace(/\/index$/, `.${taroEnv}/index`)}${item}`)) {
        return `${p.replace(/\/index$/, `.${taroEnv}/index`)}${item}`;
      }
    }
    if (fs.existsSync(`${p}${item}`)) {
      return `${p}${item}`;
    }
    if (fs.existsSync(`${p}${path.sep}index${item}`)) {
      return `${p}${path.sep}index${item}`;
    }
  }
  // 存在多端页面但是对应的多端页面配置不存在时,使用该页面默认配置
  if (taroEnv && path.parse(p).base.endsWith(`.${taroEnv}.config`)) {
    const idx = p.lastIndexOf(`.${taroEnv}.config`);
    return resolveMainFilePath(`${p.slice(0, idx)}.config`);
  }
  return realPath;
}