file-indexer
v0.3.1
Published
Create index.js file for folders
Downloads
17
Maintainers
Readme
file-indexer
Create index.js file for folders
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
- folder/
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