check-my-env
Version:
Scans your code for used process.env variables and checks if they're defined in your .env
40 lines (32 loc) • 1.08 kB
JavaScript
const fs = require('fs');
const path = require('path');
const dotenv = require('dotenv');
const glob = require('glob');
// Load env vars from .env
dotenv.config();
function getEnvVarsUsedInCode(dir) {
const files = glob.sync(`${dir}/**/*.{js,ts,jsx,tsx}`, {
ignore: ['node_modules/**', 'dist/**', 'build/**'],
});
const regex = /process\.env\.([a-zA-Z_][a-zA-Z0-9_]*)/g;
const vars = new Set();
files.forEach(file => {
const content = fs.readFileSync(file, 'utf8');
let match;
while ((match = regex.exec(content)) !== null) {
vars.add(match[1]);
}
});
return Array.from(vars);
}
function checkEnvUsage(rootDir = process.cwd()) {
const usedEnvVars = getEnvVarsUsedInCode(rootDir);
const missing = usedEnvVars.filter(key => !process.env[key]);
if (missing.length > 0) {
console.error(`❌ Missing the following environment variables used in code:\n${missing.map(k => `- ${k}`).join('\n')}`);
process.exit(1);
} else {
console.log('✅ All environment variables used in code are present in .env');
}
}
checkEnvUsage();