@nxextensions/firebase
Version:
An Nx plugin for firebase applications that would like to run the emulators in conjunction with their app
54 lines • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = update;
const devkit_1 = require("@nx/devkit");
const path_1 = require("path");
async function update(host) {
const graph = await (0, devkit_1.createProjectGraphAsync)();
const projects = (0, devkit_1.readProjectsConfigurationFromProjectGraph)(graph).projects;
if (allProjectsMigrated(projects, host)) {
return;
}
configureProjects(projects, host);
await (0, devkit_1.formatFiles)(host);
}
function allProjectsMigrated(projects, tree) {
for (const [, configuration] of Object.entries(projects)) {
if (configuration.projectType !== 'application') {
continue;
}
const hasFirebaseJson = tree.exists((0, devkit_1.joinPathFragments)(configuration.root, 'firebase.json'));
if (hasFirebaseJson) {
const hasNxFirebaseJson = tree.exists((0, devkit_1.joinPathFragments)(configuration.root, 'nx-firebase.json'));
if (!hasNxFirebaseJson) {
return false;
}
}
}
return true;
}
function configureProjects(projects, host) {
Object.entries(projects)
.filter(([, configuration]) => configuration.projectType === 'application')
.forEach(([name, configuration]) => {
var _a;
const firebasePath = (0, devkit_1.joinPathFragments)(configuration.root, 'firebase.json');
const nxFirebasePath = (0, devkit_1.joinPathFragments)(configuration.root, 'nx-firebase.json');
if (!host.exists(firebasePath) || host.exists(nxFirebasePath)) {
return;
}
let target = ((_a = configuration.targets) === null || _a === void 0 ? void 0 : _a['serve'])
? 'serve'
: undefined;
if (!target) {
target = Object.keys(configuration.targets).find((key) => key.toLowerCase().includes('serve'));
}
if (target) {
(0, devkit_1.generateFiles)(host, (0, path_1.join)(__dirname, 'files'), configuration.root, {
project: name,
target,
});
}
});
}
//# sourceMappingURL=add-nx-firebase-json.js.map