npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@backpackjs/build

v5.15.0

Published

## `backpackjs transform` spec (v2)

Downloads

1,053

Readme

Transform Specification [Experimental]

backpackjs transform spec (v2)

Transforms are functions that take product and collection data sourced earlier in the backpack build process and allow implementers to alter or augment that data before it's passed on to the storefront and used to create and render product and collection pages. In addition, blog, article, and page content data is accessable as read-only data.

Implementers declare which transforms should run in the backpack.config.json file under the transforms key as an array of identifiers. Transforms are run in the order they are declared in the config.

Declarations can take one of two forms:

  • identifier: String
  • [identifier: String, options: Object]

If included, options are passed to the transform function. An identifier can be one of the following:

  • name of npm package exporting transform function
    • e.g. @backpackjs/transform-shopify
  • path to file exporting transform function
    • e.g. ./transforms/shopify.js

The location the identifier points to must export a function that receives an object as an argument and returns an object containing the product and collection data modified by the transform function.

module.exports = (input: Object) => {
  return void || { products: Object[], collections: Object[] }
}

If you would like to persist your changes to product and collection data between transforms, the updated data should be returned in an object with the array fo transformed product data under the products key and the array of transformed collection data under the collections key. Returning data is optional, keys returned outside of products and collections will be ignored

Note: It is also permitted to return nothing, in which case the product and collection data that was passed into the transforme with be implicitly returned. Usually, this would be done in a situation where you need to run some kind of side-effect or produce an artifact using updated product and collection data (e.g. products-feed with augmented data), but don't update any data.

Arguments

The transform function is passed a single inputs object argument:

input: Object

  • products: Object[]
    • product data returned from the pervious transform function, or in the case of the first transform, the product data sourced earlier in the build
  • collections: Object[]
    • collection data returned from the pervious transform function, or in the case of the first transform, the collection data sourced earlier in the build
  • blogs: Object[]
    • blogs data sourced during the fetchBlogs task. This data is read-only and cannot be updated.
  • articles: Object[]
    • articles data sourced during the fetchArticles task. This data is read-only and cannot be updated.
  • pages: Object[]
    • pages data sourced during the fetchPages task. This data is read-only and cannot be updated.
  • context: Object
    • Listr2 build context object
  • options: Object
    • option values provided by the implementer in backpack.config.json
  • log: Object
    • object with info, error and message methods used for logging
    • e.g.
      • log.info('this is a normal log');
      • log.error('this appears under the "Errors" heading');
      • log.message('this appears under the "Warning" heading')
  • clients: Object
    • object with preconfigured graphql clients for accessing the Shopify, DatoCMS, and BackpackJS graphql apis used during the build