@nxextensions/firebase
Version:
An Nx plugin for firebase applications that would like to run the emulators in conjunction with their app
54 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.initGenerator = initGenerator;
const devkit_1 = require("@nx/devkit");
const add_plugin_1 = require("@nx/devkit/src/utils/add-plugin");
const path_1 = require("path");
const targets_1 = require("../../targets");
async function initGenerator(tree) {
const nxJson = (0, devkit_1.readNxJson)(tree);
const addPlugins = process.env.NX_ADD_PLUGINS !== 'false' &&
nxJson.useInferencePlugins !== false;
const graph = await (0, devkit_1.createProjectGraphAsync)({ exitOnError: true });
if (addPlugins) {
await addFirebasePlugin(tree, graph, true);
}
const projects = (0, devkit_1.readProjectsConfigurationFromProjectGraph)(graph).projects;
await generateConfigurationFiles(tree, projects);
await (0, devkit_1.formatFiles)(tree);
}
async function addFirebasePlugin(tree, graph, updatePackageScripts) {
return (0, add_plugin_1.addPlugin)(tree, graph, '@nxextensions/firebase', targets_1.createNodesV2, {
serveTargetName: ['serve-firebase'],
deployTargetName: ['deploy'],
includeHosting: [false],
}, updatePackageScripts);
}
async function generateConfigurationFiles(tree, projects) {
Object.entries(projects).forEach(([name, configuration]) => {
if (!hasFirebaseJson(configuration.root, tree)) {
return;
}
let targetName;
if (!configuration.targets['serve']) {
Object.keys(configuration.targets).forEach((key) => {
if (!targetName && key.toLowerCase().includes('serve')) {
targetName = key;
}
});
}
else {
targetName = 'serve';
}
(0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, 'files'), configuration.root, {
project: name,
target: targetName,
tmpl: '',
});
});
}
function hasFirebaseJson(projectRoot, tree) {
return tree.exists((0, devkit_1.joinPathFragments)(projectRoot, 'firebase.json'));
}
exports.default = initGenerator;
//# sourceMappingURL=generator.js.map