Ensure directories exist before writing to them.
var { Readable, Writable } = require('streamx');
var mkdirpStream = require('fs-mkdirp-stream');
Readable.from([{ dirname: './path/to/my/', path: './path/to/my/file.js' }])
.pipe(
mkdirpStream(function (obj, callback) {
// callback can take 3 arguments (err, dirname, mode)
callback(null, obj.dirname);
})
)
.pipe(
new Writable({
write: function (obj, cb) {
// This will be called once the directory exists
// obj === { dirname: '/path/to/my/', path: '/path/to/my/file.js' }
cb();
},
})
);
mkdirpStream(resolver)
Takes a resolver
function or string and returns a streamx.Transform
stream.
If the resolver
is a function, it will be called once per chunk with the signature (chunk, callback)
. The callback(error, dirpath, mode)
must be called with the dirpath
to be created as the 2nd parameter or an error
as the 1st parameter; optionally with a mode
as the 3rd parameter.
If the resolver
is a string, it will be created/ensured for each chunk (e.g. if it were deleted between chunks, it would be recreated). When using a string, a custom mode
can't be used.
MIT
Contains a custom implementation of mkdirp
originally based on https://github.com/substack/node-mkdirp (Licensed MIT/X11 - Copyright 2010 James Halliday) with heavy modification to better support custom modes.