Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rishabh3112/graphql-tag-swc-plugin
SWC plugin to expand gql template literal during build itself
https://github.com/rishabh3112/graphql-tag-swc-plugin
gql graphql swc swc-plugin
Last synced: 17 days ago
JSON representation
SWC plugin to expand gql template literal during build itself
- Host: GitHub
- URL: https://github.com/rishabh3112/graphql-tag-swc-plugin
- Owner: rishabh3112
- License: mit
- Created: 2022-09-06T05:46:05.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-20T10:02:41.000Z (5 months ago)
- Last Synced: 2024-10-16T04:54:25.509Z (about 1 month ago)
- Topics: gql, graphql, swc, swc-plugin
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/graphql-tag-swc-plugin
- Size: 1.19 MB
- Stars: 15
- Watchers: 2
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# graphql-tag-swc-plugin
[![NPM Downloads](https://img.shields.io/npm/d18m/graphql-tag-swc-plugin?style=for-the-badge&logo=npm)](https://www.npmjs.com/package/graphql-tag-swc-plugin)
![GitHub Repo stars](https://img.shields.io/github/stars/rishabh3112/graphql-tag-swc-plugin?style=for-the-badge&logo=github)
[![](https://img.shields.io/static/v1?label=Sponsor%20Project&message=%E2%9D%A4&color=%23fe8e86&style=for-the-badge)](https://github.com/sponsors/rishabh3112)SWC plugin alternative to `babel-plugin-graphql-tag`.
## Installation
```
npm install -D graphql-tag-swc-plugin
```## Usage
### SWC
Add following to swc config (below with default values):
```
jsc: {
experimental: {
plugins: [
["graphql-tag-swc-plugin",
{
importSources: ["@apollo/client", "graphql-tag"],
gqlTagIdentifiers: ["gql"]
},
],
],
},
},
```### Next js
Add following to next config (below with default values):
```
experimental: {
swcPlugins: [
["graphql-tag-swc-plugin",
{
importSources: ["@apollo/client", "graphql-tag"],
gqlTagIdentifiers: ["gql"]
},
],
],
},
```## Configuration
Following props are accepted by plugin currently, inline with babel alternative:
1. `importSources`:
> default: `["@apollo/client", "graphql-tag"]`import paths from where gql tag is imported for which plugin should compile graphql
2. `gqlTagIdentifiers`:
> default: `["gql"]`Identifier by which graphql-tag will be imported.
Example: Here `import { gql } from "@apollo/client`, `"gql"` is the identifier.3. `strip`:
> default: `false`If true, it pre-process graphql input to remove redundant (like whitespace and comments) characters by passing it through apollo_parser's lexer. This results in smaller AST in some cases and smaller footprint in bundle size.
## Contribution
All contributions are welcome!
For any bug / feature request please create a Pull request with fixture for the same whenever possible.### Pre-requisites
Here is list of topics and resources to quickly get you up to contributing!
1. Rust: https://www.rust-lang.org/learn
2. AST and Visitors: https://notairy.vercel.app/note/ast and https://patshaughnessy.net/2022/1/22/visiting-an-abstract-syntax-tree
3. SWC: https://swc.rs/
### Architecture
Here is the basic code walkthrough (updated at v0.1.4)
![code walkthrough](https://github.com/rishabh3112/graphql-tag-swc-plugin/raw/master/assets/code_walkthrough.png)## Authors
- @rishabh3112 - Rishabh Chawla
## License
MIT