0.1.0 • Published 3 years ago

nestjs-shopify-wrapper v0.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

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.