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

folderify

v1.2.1

Published

Expose the content of each file in a folder as an object property.

Downloads

4,292

Readme

folderify

Build Status Npm module Code Climate Coverage Dependencies

browserify call to includeFolder

This module is a plugin for browserify to parse the AST for includeFolder() calls so that you can inline folder contents into your bundles.

Even though this module is intended for use with browserify, nothing about it is particularly specific to browserify so it should be generally useful in other projects.

Getting Started

Install the module with: npm install folderify --save

then, for a main.js:

var includeFolder = require('include-folder'),
    folder = includeFolder("./aFolder");

and a aFolder like this:

when you run the browserify command:

$ browserify -t folderify main.js > bundle.js

now in the bundle output file you get,

var includeFolder = undefined,
    folder =  {
               file3OtherFile: 'this is file3OtherContent content',
               file1: 'this is file1 content',
               file1_1: 'this is file1_1 content'
           };

or with the api

var browserify = require('browserify');
var fs = require('fs');

var b = browserify('example/main.js');
b.transform('folderify');

b.bundle().pipe(fs.createWriteStream('bundle.js'));

##How it works

Folderify inline a whole directory content in browserify results.

  1. It uses falafel to intercepts calls to include-folder
  2. use include-folder to generate source code of a function with a fs.readFileSync call for each file in directory
  3. feed brfs stream with generated source code
  4. replace include-folder call with brfs output

##Use cases

I use it to inline my HTML templates folder when I browserify sites, but I guess it could be useful in many situations...

##Custom file extensions

By default, supported file extensions are:

  • .es
  • .es6
  • .js
  • .jsx

The list is exposed as a property validExtensions on the folderify function and can be easily extended:

var browserify = require('browserify');
var folderify = require('folderify');
folderify.validExtensions.push('.custom-js');

var b = browserify('example/main.js');
b.transform(folderify);

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality.

License

Copyright (c) 2013 Andrea Parodi

Licensed under the MIT license.