Helper base class for Broccoli plugins wraps fs-tree-diff and node-walk-sync providing different methods based off of different file operations.
class TreeWalker {
/**
* Virtual method `unlink`: Called when you remove the specified file
*/
virtual unlink(filePath: string, rootPath: string): any
/**
* Virtual method `rmdir`: Called when you remove the specified folder
*/
virtual rmdir(filePath: string, rootPath: string): any
/**
* Virtual method `mkdir`: Called when you create the specified folder
*/
virtual mkdir(filePath: string, rootPath: string): any
/**
* Virtual method `create`: Called when you create the specified file
*/
virtual create(filePath: string, rootPath: string): any
/**
* Virtual method `change`: Called when you update the specified file to reflect changes
*/
virtual change(filePath: string, rootPath: string): any
/**
* Virtal method `nodesChanged` Called when a change has been made to one of the input nodes
*/
virtual nodesChanged(patchResults: Array<FSTree.Patch>): any
}
-
include
: Entry optionglobs
from node-walk-sync -
exclude
: Entry optionignore
from node-walk-sync -
directory
: Entry optiondirectories
from node-walk-sync -
name
,annotation
: Same as broccoli-plugin; see there.
All options except name
and annotation
can also be set on the prototype
instead of being passed into the constructor.
const TreeWalker = require('broccoli-tree-walker');
class FileWriter extends Walker {
_fileContents() {
return `/* some file contents */`;
}
create(filePath) {
const fullFilePath = path.join(this.outputPath, filePath);
return fs.outputFileSync(fullFilePath, this._someFileContents(filePath));
}
unlink(filePath) {
const fullFilePath = path.join(this.outputPath, filePath);
return fs.removeSync(fullFilePath);
}
}