NestJS + Shopify = <3
This is a NestJS module wrapper around the official shopify-api-node library. To get started, you will need API credentials generated in your Shopify admin as a private app.
Installation
To install this project:
npm install --save nestjs-shopify-wrapper
Setup
In your Nest Module, import NestjsShopifyModule
:
import { NestjsShopifyModule } from 'nestjs-shopify';
And register the module in your imports
:
NestjsShopifyModule.registerAsync({
imports: [ConfigModule],
useFactory: (config: ConfigService) => ({
shopName: config.get('SHOPIFY_STORE'),
apiKey: config.get('SHOPIFY_KEY'),
password: config.get('SHOPIFY_PW'),
}),
inject: [ConfigService],
}),
In your Nest Provider, import the Shopify library as ShopifyClient
for type references. It does not provide a named export, so default import is required. Also import the NestjsShopifyService
, which will provide a Nest-compatible reference to the underlying Shopify class:
import * as ShopifyClient from 'shopify-api-node';
import { NestjsShopifyService } from 'nestjs-shopify';
In your Nest Provider, instantiate the client:
@Injectable()
export class ShopifyService {
private shopifyClient: ShopifyClient;
constructor(
private shopifyService: NestjsShopifyService
) {
// Returns a new instance of the Shopify class
this.shopifyClient = this.shopifyService.getShopify();
}
You can now reference all methods and events on the shopfyClient
Shopify instance as defined in the [docs]((https://www.npmjs.com/package/shopify-api-node). Reference typings on the ShopifyClient module directly:
async getShopifyProducts(): Promise<ShopifyClient.IProduct[]> {
return await this.shopifyClient.product.list({ limit: 20 });
}
Big Ups
-
Nest Dynamic Package Generator Schematics generates a starter template for building NestJS dynamic packages. It uses the
@nestjs/cli
core package, and provides customized schematics for generating modular NestJS applications. See here for the full set of available schematics, and documentation.