Skip to content

Nest dependency injectable provider for Shopify API client

Notifications You must be signed in to change notification settings

lukeheath/nestjs-shopify

Repository files navigation

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.

About

Nest dependency injectable provider for Shopify API client

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published