let fs = null; let Filer = null; module.exports = Filer = { FileSystem: require('./filesystem/interface.js'), Buffer: Buffer, // We previously called this Path, but node calls it path. Do both Path: require('./path.js'), path: require('./path.js'), Errors: require('./errors.js'), Shell: require('./shell/shell.js'), FilerWebpackPlugin: require('./webpack-plugin'), }; // Add a getter for the `fs` instance, which returns // a Filer FileSystem instance, using the default provider/flags. Object.defineProperty(Filer, 'fs', { enumerable: true, get() { if(!fs) { fs = new Filer.FileSystem(); } return fs; } });