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

filemixer

v0.0.8

Published

FileMixer combines string-based template engines with a merging system that can write results to the filesystem.

Downloads

12

Readme

FileMixer.js

npm version license type Build Status Coverage Status bitHound Code bitHound Score bitHound Dependencies bitHound Dev Dependencies npm downloads Source: ECMAScript 6

Create new and merged virtual files from templates.

  • Provide a template for a file's path and/or contents, render them with a template engine.
  • Use EJS templates by default, or choose your own rendering engine.
  • Render to a virtual file object, or to disk.
  • Merge or overwrite existing file contents using a provided strategy.
import FileMixer from "filemixer";

const path = "./some/path/to/hello<= name %>.txt";
const contents = "Hello, <%= name %>!";
const values = {
	name: "World"
};

/**
 * If contents is not set, the rendered VirtualFile will be a directory.
 * If contents is set, the rendered VirtualFile will be a file.
 */
new FileMixer({ path, contents, values })

/**
 * Optionally set a custom base for the path. Defaults to file's directory name.
 */
.base("./some/path/")

/**
 * Optionally set a custom template engine instead of the default EJS.
 */
.engine((string, stringValues, done) => {
	const handleBarsFileMixer = Handlebars.compile(string);
	const renderedString = handleBarsFileMixer(stringValues);
	done(null, renderedString);
})

/**
 * Optionally set a merging strategy that will run if there's an existing file.
 */
.merge((self, existingFile, newFile, done) => {
	const mergedFile = Object.assign({}, newFile);
	mergedFile.contents = existingFile.contents + newFile.contents;
	done(null, mergedFile);
})

/**
 * Render the path and contents with the designated template engine then run
 * the merge strategy if it exists and there's an existing file then call back
 * with a rendered `VirtualFile` object.
 */
.render((error, file) => {
  file.isFile; // true
  file.isDirectory; // false
  file.path; // ./some/path/to/helloWorld.txt
	file.name; // to/helloWorld.txt
	file.base; // ./some/path/
  file.contents; // Hello, World!
})

/**
 * First `.render` the VirtualFile, then write/overwrite the file to disk.
 */
.write((error, file) => {
  // File was written to disk. The virtual file object is provided here so we
  // don't `.render` twice.
});

How to Contribute

We love pull requests and issue reports! Really!

If you find a bug or have a feature suggestion, please feel free to submit an issue here.

For more information on how to submit a pull request, please read this guide on contributing to open-source projects.