mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-08 04:55:06 +09:00
dotenv can be invoke with require hook like this. No need to have another package. ``` NODE_OPTIONS='-r dotenv/config' any_node_command ```
76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
// @ts-check
|
|
/**
|
|
* This file is included in `/remix.config.js` which ensures the app isn't built with invalid env vars.
|
|
* It has to be a `.js`-file to be imported there.
|
|
*/
|
|
|
|
/**
|
|
* Remix does not read .env files when building for production so this would make it to that when you tried to run pnpm build locally
|
|
* you would get an error because your environment variables are in the .env file.
|
|
* `dot-env` makes it so that when you run this file the `process.env` is always populated with your `.env` file if it finds one,
|
|
* if not it will read the environment variables set by your hosting provider like remix does.
|
|
*/
|
|
require("dotenv/config");
|
|
|
|
const REQUIRED_ENVS = ["DATABASE_URL", "AUTH_SECRET"];
|
|
const S3_KEYS = [
|
|
"S3_ENDPOINT",
|
|
"S3_REGION",
|
|
"S3_SECRET_ACCESS_KEY",
|
|
"S3_ACCESS_KEY_ID",
|
|
"S3_BUCKET",
|
|
];
|
|
|
|
const errors = [];
|
|
|
|
REQUIRED_ENVS.map((env) => {
|
|
if (!process.env[env])
|
|
errors.push(`👉 The ${env} environment variable is required`);
|
|
});
|
|
|
|
if (process.env.DEPLOYMENT_ENVIRONMENT === "production") {
|
|
if (!process.env.DEPLOYMENT_URL) {
|
|
errors.push(
|
|
"👉 In production DEPLOYMENT_URL is required for website functionality. Please set it to your production URL."
|
|
);
|
|
}
|
|
if (!process.env.BUILDER_HOST) {
|
|
errors.push(
|
|
"👉 In production BUILDER_HOST is required for website functionality. Please set it to your production URL of the builder."
|
|
);
|
|
}
|
|
if (!process.env.PUBLISHER_HOST) {
|
|
errors.push(
|
|
"👉 In production PUBLISHER_HOST is required for website functionality. Please set it to your production URL of the builder."
|
|
);
|
|
}
|
|
if (!process.env.BUILD_ORIGIN) {
|
|
errors.push(
|
|
"👉 In production BUILD_ORIGIN is required for security reasons."
|
|
);
|
|
}
|
|
}
|
|
|
|
// check for when user has some S3 env variables but not all required
|
|
if (
|
|
S3_KEYS.some((key) => Object.keys(process.env).includes(key)) &&
|
|
!S3_KEYS.every((key) => Object.keys(process.env).includes(key))
|
|
) {
|
|
const notIncluded = S3_KEYS.filter(
|
|
(key) => !Object.keys(process.env).includes(key)
|
|
);
|
|
errors.push(
|
|
`👉 You don't have all the necessary envriroment variables to have S3 asset hosting, you are missing ${notIncluded.join(
|
|
","
|
|
)}`
|
|
);
|
|
}
|
|
|
|
if (errors.length) {
|
|
// eslint-disable-next-line no-console
|
|
console.error("❌ Invalid environment variables:");
|
|
// eslint-disable-next-line no-console
|
|
console.error(errors.join("\n"));
|
|
process.exit(1);
|
|
}
|