Default file system source for pub-server and pub-generator
- provides
get()andput()for bulk reads and writes - globs and descends directories
- assumes that all files with non-binary extensions are utf-8 text
var src = require('pub-src-fs');
// instantiate source on path
// options become properties of source
var source = src( { path:'.', glob:'**/*.js', depth:2, writable:true } );
source.get(function(err, files) {
if (err) return console.log(err);
console.log(_.pluck(files, 'path'));
});- recurses directories starting with
path - omits any directories starting with '.'
- results will not include the path, just a /
globis a node-glob pattern- in order to support recursive descent on other systems (like github) this implementation does not use the glob library to walk directories
- instead it walks directories and then calls minimatch to test the files in those directories.
- because
pathis used as the root for globbing, globstars in the middle of the pattern are unlikely
depthlimits the depth of tree traversal when there is globstar- this is useful for avoiding symlink cycles and improving performance
- required true for successful .put()
- disables reading with .get()
- if
dirsFirstis true, entries within each directory will be returned with directories before files instead of the default (files first)
- if
dirsSameis true, directories and files sort together (overrides dirsFirst)
get()fetches all matching files in one async operation- the result is an array of file objects each with a
path:and atext:property (for non-binary files), or abuffer:property (for binary files) - the array is sorted alphabetically by path
- results do not include directories, but do include files in subdirectories
- if the source is writable,
get()is atomic with respect toput()or othersource.get()operations
[ { path: '/fs-base.js',
text: '...' },
{ path: '/pub-src-fs.js',
text: '...' } ]put()does nothing unlesswritableis set on the source- it writes an array of file objects back to the file system overwriting existing files
- there is no partial file write but the array may contain a subset of the files read via
get() put()is atomic with respect tosource.get()or othersource.put()operationsput()tries to avoid file corruption by writing to a temp location and then renaming filesput()returns an array of the paths written
source.put(files, function(err, result) {
if (err) return console.log(err);
console.log(result);
});