-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.env.js
More file actions
87 lines (70 loc) · 3.6 KB
/
config.env.js
File metadata and controls
87 lines (70 loc) · 3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import 'dotenv/config'
import { resolve } from 'path';
import packageJson from './package.json' with { type: "json" };
const processEnv = typeof process !== 'undefined' ? process.env : {};
// Fallback repo URL from package.json
const fallbackRepoUrl = packageJson.repository?.url;
const fallbackRepoUrlParts = fallbackRepoUrl?.replace('.git', '').split(':')?.pop()?.split('/');
const fallbackRepoName = fallbackRepoUrlParts?.pop();
const fallbackRepoOwner = fallbackRepoUrlParts?.pop();
const fallbackRepo = `${fallbackRepoOwner}/${fallbackRepoName}`;
// Output directory
export const OUTPUT_DIR = processEnv.OUTPUT_DIR || 'dist';
// Cache directory
export const CACHE_DIR = processEnv.CACHE_DIR || 'node_modules/.astro';
// PUBLIC_CONTENT_PATH_PREFIX
export const PUBLIC_CONTENT_PATH_PREFIX = processEnv.PUBLIC_CONTENT_PATH_PREFIX || '';
// PUBLIC_CONTENT_DIR
export const PUBLIC_CONTENT_DIR = processEnv.PUBLIC_CONTENT_DIR || '_content';
// PUBLIC_WORKING_DIR merges relative paths from PUBLIC_CONTENT_PATH_PREFIX and PUBLIC_CONTENT_DIR
export const PUBLIC_WORKING_DIR = (processEnv.PUBLIC_WORKING_DIR ||
(PUBLIC_CONTENT_PATH_PREFIX + '/' + PUBLIC_CONTENT_DIR))
.replace(/\/+/g, '/') // Replace multiple slashes with single slash
.replace(/\/$/, ''); // Remove trailing slash
// PUBLIC_WORKING_DIR_ABSOLUTE properly concatenate PUBLIC_CONTENT_PATH_PREFIX and PUBLIC_CONTENT_DIR
export const PUBLIC_WORKING_DIR_ABSOLUTE = processEnv.PUBLIC_WORKING_DIR_ABSOLUTE ||
(PUBLIC_CONTENT_DIR && resolve(PUBLIC_CONTENT_PATH_PREFIX, PUBLIC_CONTENT_DIR));
// POKO_THEME
export const POKO_THEME = processEnv.POKO_THEME || 'default';
// PUBLIC_USER_DIR
export const PUBLIC_USER_DIR = processEnv.PUBLIC_USER_DIR || `_user-content`;
// Detect the current hosting provider used
export const NETLIFY_BUILD = Boolean(processEnv.NETLIFY || processEnv.NETLIFY_DEPLOYMENT_ID);
export const CLOUDFLARE_BUILD = Boolean(processEnv.CF_PAGES || processEnv.CLOUDFLARE_ACCOUNT_ID);
export const VERCEL_BUILD = Boolean(processEnv.VERCEL_DEPLOYMENT_ID);
export const LOCAL_BUILD = Boolean(!NETLIFY_BUILD && !CLOUDFLARE_BUILD && !VERCEL_BUILD);
// TODO: find a way to pass the detected REPO to the Keystatic config (Vite environment)
// VERCEL REPO inferrence
export const VERCEL_GIT_REPO_OWNER = processEnv.VERCEL_GIT_REPO_OWNER || processEnv.PUBLIC_VERCEL_GIT_REPO_OWNER;
export const VERCEL_GIT_REPO_SLUG = processEnv.VERCEL_GIT_REPO_SLUG || processEnv.PUBLIC_VERCEL_GIT_REPO_SLUG;
// NETLIFY REPO inferrence
export const REPOSITORY_URL = processEnv.REPOSITORY_URL;
const repoUrlParts = REPOSITORY_URL?.split(':')?.pop()?.split('/');
export const NETLIFY_REPO_NAME = repoUrlParts?.pop();
export const NETLIFY_REPO_OWNER = repoUrlParts?.pop();
export const NETLIFY_REPO = NETLIFY_REPO_OWNER && NETLIFY_REPO_NAME && `${NETLIFY_REPO_OWNER}/${NETLIFY_REPO_NAME}`;
// CLOUDFLARE REPO inferrence
// NOTE: Doesn't look like Cloudflare export these env variables...?
// REPO inferrence
export const REPO_OWNER = processEnv.REPO_OWNER || VERCEL_GIT_REPO_OWNER || NETLIFY_REPO_OWNER;
export const REPO_NAME = processEnv.REPO_NAME || VERCEL_GIT_REPO_SLUG || NETLIFY_REPO_NAME;
export const REPO = processEnv.REPO || (REPO_OWNER && REPO_NAME && `${REPO_OWNER}/${REPO_NAME}`) || fallbackRepo;
// Fallback hosting service for local dev
export const PREFERRED_HOSTING = processEnv.PREFERRED_HOSTING || 'netlify';
export default {
NETLIFY_BUILD,
CLOUDFLARE_BUILD,
VERCEL_BUILD,
LOCAL_BUILD,
VERCEL_GIT_REPO_OWNER,
VERCEL_GIT_REPO_SLUG,
REPOSITORY_URL,
NETLIFY_REPO_NAME,
NETLIFY_REPO_OWNER,
NETLIFY_REPO,
REPO_OWNER,
REPO_NAME,
REPO,
PREFERRED_HOSTING,
PUBLIC_WORKING_DIR
}