Pretty logger of Apollo GraphQL network operations
Apollo Link Printer is a logging library designed to provide a pretty and informative log of your Apollo GraphQL network operations. It logs details of your GraphQL queries, mutations, and subscriptions, making it easier to debug and understand the network interactions in your application.
The library extends the ApolloLink
from @apollo/client
and provides a custom PrinterLink
that logs various aspects of the network operations, such as fragments, variables, and messages.
Node Package Manager installation
npm install apollo-link-printer
Yarn installation
yarn add apollo-link-printer
Below is an example of how to set up Apollo Link Printer in your Apollo Client configuration:
import { ApolloClient, InMemoryCache, HttpLink, ApolloLink } from '@apollo/client';
import { PrinterLink } from 'apollo-link-printer';
// Define options
const options = {
print: true,
collapsed: false,
};
const client = new ApolloClient({
link: ApolloLink.from([
new PrinterLink(options),
new HttpLink({ uri: 'http://localhost:4000' }),
]),
cache: new InMemoryCache(),
});
In this example, PrinterLink
is added to the Apollo Client link chain. The options
object allows you to customize the logging behavior.
name | type | explanation |
---|---|---|
print |
boolean | if true , information will be output to the console |
collapsed |
boolean | if true , console.groupCollapsed will be used, otherwise console.group |
This project uses TypeScript to provide static typing for JavaScript and Jest for testing. To contribute, follow these steps:
-
Clone the repository:
git clone https://github.com/egorlem/apollo-link-printer.git
cd apollo-link-printer
-
Install dependencies:
npm install # or `yarn`
-
Make your changes and run tests to ensure everything works as expected:
npm test # or `yarn test`
-
To run the library locally in another project, you can link it:
npm link
npm link apollo-link-printer # In the project where you want to use the library
-
Commit and push your changes, then open a pull request on GitHub.
This project is licensed under the MIT License. See the LICENSE file for details.
Maintained by Egor Lem