firebase-tools
Version:
Command-Line Interface for Firebase
43 lines (42 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.localBuild = localBuild;
const build_1 = require("@apphosting/build");
async function localBuild(projectRoot, framework, env = {}) {
const originalEnv = { ...process.env };
const addedEnv = toProcessEnv(env);
for (const [key, value] of Object.entries(addedEnv)) {
process.env[key] = value;
}
let apphostingBuildOutput;
try {
apphostingBuildOutput = await (0, build_1.localBuild)(projectRoot, framework);
}
finally {
for (const key in process.env) {
if (!(key in originalEnv)) {
delete process.env[key];
}
}
for (const [key, value] of Object.entries(originalEnv)) {
process.env[key] = value;
}
}
const annotations = Object.fromEntries(Object.entries(apphostingBuildOutput.metadata).map(([key, value]) => [key, String(value)]));
const discoveredEnv = apphostingBuildOutput.runConfig.environmentVariables?.map(({ variable, value, availability }) => ({
variable,
value,
availability,
}));
return {
outputFiles: apphostingBuildOutput.outputFiles?.serverApp.include ?? [],
annotations,
buildConfig: {
runCommand: apphostingBuildOutput.runConfig.runCommand,
env: discoveredEnv ?? [],
},
};
}
function toProcessEnv(env) {
return Object.fromEntries(Object.entries(env).map(([key, value]) => [key, value.value || ""]));
}