版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

90 строки
2.6 KiB

  1. const providers = [
  2. ["APPVEYOR"],
  3. ["AZURE_PIPELINES", "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],
  4. ["AZURE_STATIC", "INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],
  5. ["APPCIRCLE", "AC_APPCIRCLE"],
  6. ["BAMBOO", "bamboo_planKey"],
  7. ["BITBUCKET", "BITBUCKET_COMMIT"],
  8. ["BITRISE", "BITRISE_IO"],
  9. ["BUDDY", "BUDDY_WORKSPACE_ID"],
  10. ["BUILDKITE"],
  11. ["CIRCLE", "CIRCLECI"],
  12. ["CIRRUS", "CIRRUS_CI"],
  13. ["CLOUDFLARE_PAGES", "CF_PAGES", { ci: true }],
  14. ["CODEBUILD", "CODEBUILD_BUILD_ARN"],
  15. ["CODEFRESH", "CF_BUILD_ID"],
  16. ["DRONE"],
  17. ["DRONE", "DRONE_BUILD_EVENT"],
  18. ["DSARI"],
  19. ["GITHUB_ACTIONS"],
  20. ["GITLAB", "GITLAB_CI"],
  21. ["GITLAB", "CI_MERGE_REQUEST_ID"],
  22. ["GOCD", "GO_PIPELINE_LABEL"],
  23. ["LAYERCI"],
  24. ["HUDSON", "HUDSON_URL"],
  25. ["JENKINS", "JENKINS_URL"],
  26. ["MAGNUM"],
  27. ["NETLIFY"],
  28. ["NETLIFY", "NETLIFY_LOCAL", { ci: false }],
  29. ["NEVERCODE"],
  30. ["RENDER"],
  31. ["SAIL", "SAILCI"],
  32. ["SEMAPHORE"],
  33. ["SCREWDRIVER"],
  34. ["SHIPPABLE"],
  35. ["SOLANO", "TDDIUM"],
  36. ["STRIDER"],
  37. ["TEAMCITY", "TEAMCITY_VERSION"],
  38. ["TRAVIS"],
  39. ["VERCEL", "NOW_BUILDER"],
  40. ["APPCENTER", "APPCENTER_BUILD_ID"],
  41. ["CODESANDBOX", "CODESANDBOX_SSE", { ci: false }],
  42. ["STACKBLITZ"],
  43. ["STORMKIT"],
  44. ["CLEAVR"]
  45. ];
  46. function detectProvider(env) {
  47. for (const provider of providers) {
  48. const envName = provider[1] || provider[0];
  49. if (env[envName]) {
  50. return {
  51. name: provider[0].toLowerCase(),
  52. ...provider[2]
  53. };
  54. }
  55. }
  56. if (env.SHELL && env.SHELL === "/bin/jsh") {
  57. return {
  58. name: "stackblitz",
  59. ci: false
  60. };
  61. }
  62. return {
  63. name: "",
  64. ci: false
  65. };
  66. }
  67. const processShim = typeof process !== "undefined" ? process : {};
  68. const envShim = processShim.env || {};
  69. const providerInfo = detectProvider(envShim);
  70. const nodeENV = envShim.NODE_ENV || "";
  71. const platform = processShim.platform;
  72. const provider = providerInfo.name;
  73. const isCI = toBoolean(envShim.CI) || providerInfo.ci !== false;
  74. const hasTTY = toBoolean(processShim.stdout && processShim.stdout.isTTY);
  75. const hasWindow = typeof window !== "undefined";
  76. const isDebug = toBoolean(envShim.DEBUG);
  77. const isTest = nodeENV === "test" || toBoolean(envShim.TEST);
  78. const isProduction = nodeENV === "production";
  79. const isDevelopment = nodeENV === "dev" || nodeENV === "development";
  80. const isMinimal = toBoolean(envShim.MINIMAL) || isCI || isTest || !hasTTY;
  81. const isWindows = /^win/i.test(platform);
  82. const isLinux = /^linux/i.test(platform);
  83. const isMacOS = /^darwin/i.test(platform);
  84. function toBoolean(val) {
  85. return val ? val !== "false" : false;
  86. }
  87. export { hasTTY, hasWindow, isCI, isDebug, isDevelopment, isLinux, isMacOS, isMinimal, isProduction, isTest, isWindows, platform, provider };