pankod/refine

View on GitHub
packages/cli/src/utils/project/index.ts

Summary

Maintainability
B
4 hrs
Test Coverage
import { ProjectTypes, UIFrameworks } from "@definitions";
import { getDependencies, getDevDependencies } from "@utils/package";

export const getProjectType = (platform?: ProjectTypes): ProjectTypes => {
  if (platform) {
    return platform;
  }
  // read dependencies from package.json
  const dependencies = getDependencies();
  const devDependencies = getDevDependencies();

  // check for craco
  // craco and react-scripts installs together. We need to check for craco first
  if (
    dependencies.includes("@craco/craco") ||
    devDependencies.includes("@craco/craco")
  ) {
    return ProjectTypes.CRACO;
  }

  // check for react-scripts
  if (
    dependencies.includes("react-scripts") ||
    devDependencies.includes("react-scripts")
  ) {
    return ProjectTypes.REACT_SCRIPT;
  }

  // check for next
  if (dependencies.includes("next") || devDependencies.includes("next")) {
    return ProjectTypes.NEXTJS;
  }

  // check for remix
  if (
    dependencies.includes("@remix-run/react") ||
    devDependencies.includes("@remix-run/react")
  ) {
    return ProjectTypes.REMIX;
  }

  // check for vite
  if (dependencies.includes("vite") || devDependencies.includes("vite")) {
    return ProjectTypes.VITE;
  }

  if (dependencies.includes("parcel") || devDependencies.includes("parcel")) {
    return ProjectTypes.PARCEL;
  }

  return ProjectTypes.UNKNOWN;
};

export const getUIFramework = (): UIFrameworks | undefined => {
  // read dependencies from package.json
  const dependencies = getDependencies();

  // check for antd
  if (dependencies.includes("@refinedev/antd")) {
    return UIFrameworks.ANTD;
  }

  // check for mui
  if (dependencies.includes("@refinedev/mui")) {
    return UIFrameworks.MUI;
  }

  // check for chakra
  if (dependencies.includes("@refinedev/chakra-ui")) {
    return UIFrameworks.CHAKRA;
  }

  // check for mantine
  if (dependencies.includes("@refinedev/mantine")) {
    return UIFrameworks.MANTINE;
  }

  return;
};

export const getDevtoolsEnvKeyByProjectType = (
  projectType: ProjectTypes,
): string => {
  switch (projectType) {
    case ProjectTypes.REACT_SCRIPT:
      return "REACT_APP_REFINE_DEVTOOLS_PORT";
    case ProjectTypes.NEXTJS:
      return "NEXT_PUBLIC_REFINE_DEVTOOLS_PORT";
    case ProjectTypes.VITE:
      return "VITE_REFINE_DEVTOOLS_PORT";
    default:
      return "REFINE_DEVTOOLS_PORT";
  }
};