This package provides various utilities that can be used in a graphql based genesis app.
Run nx test graphql-utils
to execute the unit tests via Jest.
Prerequsite
For Using this package into your app, please follow the below steps
- Install this npm package to your repo first
yarn add @genesisx/graphql-utils
- or
npm install @genesisx/graphql-utils
- Now follow the either of the two modes to use this generator
- Goto nx console -> Genrate > search for @genesisx/graphql-utils - template
- Use Nx Console > Genrate > @genesisx/graphql-utils
- Alternatively, below command can be used
nx generate @genesisx/graphql-utils:template
- Fill the required parameters asked after that
- If nx is not already installed then install it using
npm install -g nx
This stage setup git modules and checkout code merge is possible for feature & master branch
This stage setup the base modules needed by respective projects for subsequent stages.
These Stages runs linting and unit test check against config made in the projects.eg files: jest.config.js, .eslintrc.json
These stages build the apps and create docker images for affected applications and publish those images to artefactory store. '''here PS docker registry been used'''
This stage leverage the k8 config in each apps to deploy app to infra configured in those files. i.e: ingress,service, deployment yaml.
By leveraging nx framework we are able to make pipeline optimised in easier way to run affected apps. eg: '''yarn nx affected:apps --all'''
- Refer additional documentation for more details
Run nx build graphql-utils
to build the package.
Run nx lint graphql-utils
to run lint checks on the package.
Run nx test graphql-utils
to execute the unit tests via Jest.
To publish the package you must first be logged into NPM (npm login) then run this command from the root of the project.
- Make sure the package name in package.json should start with @genesisx/
- Also use the correct version number in package.json same will be used for the published package.
- Use your NPM js credentials (Publicis Sapient) with publish rights
- Verify the package at https://www.npmjs.com/settings/genesisx/packages
npm publish dist/packages/graphql-utils --access public
packages/graphql-utils/src/commonServerConfig/GatewayBuilder.ts
has a getGateway method with an optional supergraphSdl(string) argument, which uses this method to generate federation gateways that support supergraph; without the argument, federation gateways are created without supergraph support.
It allows us to use the same method from both graphql and graphql-supergraph packages on creating federation service.