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 🙏

© 2025 – Pkg Stats / Ryan Hefner

frame-build

v2.2.5

Published

Frame build process featuring Gulp and Webpack.

Downloads

54

Readme

Frame Build Package

A frontend build system for Frame Creative sites. This project wraps up a gulp + webpack build process into a single reusable package with flexible congifuration options and ability to override or customise to your project.

Will work with 90% of Frame's WordPress projects out of the box, only minor config changes needed if theme dirs are named different to our conventions. Will also work with just about anything - we've used it successfully with Shopify themes, CraftCMS sites, static websites etc.

Tasks

The package defines a number of internal tasks, and exposes two public gulp tasks.

Styles

Transforms SCSS files into CSS and runs it through autoprefixer and a minifier. As PostCSS is used for autoprefixer, it's pretty easy to get it doing other PostCSS processing if necessary.

Supports glob includes in SCSS - ie: @import 'tools/**

Since V2 dart-sass is in use - this may throw warnings round syntax that has been deprecated, especially to do with math functions.

Scripts

JS transpile task using webpack. Supports ES6, JSX and Vue templates out the box. Runs uglify on production builds.

SVG / Icons

Takes any svg file in the icons directory and combines them into an SVG sprite. We typically load this sprite async using JS and then insert it into the DOM to allow <use> for referencing SVGs.

Modernizr

Optional task to build a modernizr bundle.

V2.2 Notes

  • SVG min task removed from the Dupe function, as it's causing issues with watch

v 2.1 Notes

  • Added an examples folder with some sample gulp files to help get up and running.
  • Export out individual task (scripts, styles, icons ) with custom clean functions to enable them to be run seprately if needed.
  • Removed gulp-util to remove unecessary dependencies and warnings (we were barely using it).

Recommend downgrading svgo to version below, as gulp-svgmin is some time away from implementing options that can be passed in to svgo >=2.4

It's highly recommended you add the following to your project's package.json

These resolutions are required to use Frame Buil on an Apple Silicon based mac.

  "resolutions": {
    "chokidar": "^3.5.2",
    "svgo": "2.3.1"
  },

V2.0 Notes

It's highly recommended you add the following to your project's package.json

  "resolutions": {
    "chokidar": "^3.5.2",
    "svgo": "2.3.1"
  },

Other notes

  • Node version 14 and above is required.
  • MergeStream swapped for merge2
  • Moved to Gulp 4
  • SVGMin config is now editable per-project via set options

Config

The default config is

let config = {
    themePaths : [],
    assetDir : 'assets',
    builtDir : 'built',
    scriptsDir : 'scripts',
    stylesDir : 'styles',
    iconsDir : 'icons',
    isProduction : isProduction,
    webpack : require('./webpack.config.js'),
    versions : isProduction,
    flatten : false,
    modernizr : false,
    debug : false,
    svgMin: svgMinOpts
};

You can set the config within a project using Frame Build, by calling setOptions()

const frameBuild = require('frame-build');

// Example of setting options via a simple object
frameBuild.setOptions({
    themePaths : [
        'site/content/themes/poderma'
    ],
    browsersyncUrl : proxyUrl
});

// Example of setting via a callback function

frameBuild.setOptions( (options) => {

  if ( ! process.env.NODE_ENV === 'staging' ) return options;

  options.versions = true;

  return options;

});