0.3.1 • Published 10 years ago

file-indexer v0.3.1

Weekly downloads
5
License
MIT
Repository
github
Last release
10 years ago

file-indexer Build StatusDependency Status

Create index.js file for folders

NPM

npm install --save-dev file-indexer

Why

Reduces boilerplate for nested file structures.

before

var one = require('./path/one');
var two = require('./path/two');
var three = require('./path/three');

after

es6

import {one, two, three} from './path';

js

var path = require('./path');
var one = path.one, two = path.two, three = path.three;

####es6

API

indexer(array|string, callback)

array|string

A folder path string (or an array of folder paths) where you'd like to generate index.js files.

callback(error, files)

files: an object of buffers labeled by relative filename.

if indexer(['./file1', './path/file2'], cb(<err>, <files>))

files = {
 file1: <buf>,
 file2: <buf>
}

How to Use

var indexer = require('file-indexer');
indexer(['./path/folder', './path/src', './path/src/components'], function(err, files) {
  fs.writeFileSync('./path/folder/index.js', files.folder);
  fs.writeFileSync('./path/src/index.js', files.src);
  fs.writeFileSync('./path/src/components/index.js', files.components);
})

With folder stucture:

  • path/
    • folder/
      • one.js
      • two.js
      • three.js
      • index.js

path/folder/index.js

var index = {};

module.exports = index;

index['one'] = require('./one');
index['two'] = require('./two');
index['three'] = require('./three');
  • src/
    • init.js
    • save.js
    • components/
    • index.js

src/index.js

var index = {};

module.exports = index;

index['init'] = require('./init');
index['save'] = require('./save');
index['components'] = require('./components');
  • components/
    • header.js
    • footer.js
    • index.js

components/index.js

var index = {};

module.exports = index;

index['header'] = require('./header');
index['footer'] = require('./footer');

Using gulp-ecosystem

Gulp-Pattern (plugin in the works)

var tap = require('gulp-tap');
var conflict = require('gulp-conflict')
var rename = require('gulp-rename');

var paths = ['./path/folder', './path/src'];

gulp.task('index', function() {
  indexer(paths, function(err, files) {

    gulp.src(paths)
        .pipe(tap(function(file) {
          gulp.src(file.path, {read: false})
              .pipe(tap(function(file) {
                file.contents = files[file.relative]
              }))
              .pipe(rename('index.js'))
              .pipe(conflict(file.path))
              .pipe(gulp.dest(file.path))
        }))

  })
})

MIT

0.3.1

10 years ago

0.3.0

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.6

10 years ago

0.1.5

11 years ago

0.1.4

11 years ago

0.1.3

11 years ago

0.1.2

11 years ago

0.1.1

11 years ago