FilesPipe
allows you to process files in a pipeline, making it easy to perform
various actions on them.
Installation
To get started with FilesPipe
, follow these steps:
Install the FilesPipe
package using npm:
npm install -D -E files-pipe
Create a new pipe instance using the following code in your Index.ts file:
Index.ts
import Files from "files-pipe";
await new Files().In("./Input");
Getting started
With FilesPipe
, you can use the Pipe method to perform actions on files within
the pipe. Here's an example of how to use it in your Index.ts:
Index.ts
import Files from "files-pipe";
await (
await (await new Files().In("./Input")).By("**/*.md")
).Pipe({
Wrote: (On) => (On.Buffer += "LICENSE [MIT]"),
});
Default Callbacks
FilesPipe
provides default callbacks for file processing. These callbacks can
be customized to suit your specific needs. Here are the default callbacks:
import Files from "files-pipe";
await new Files().Pipe({
Read: async (On) => await fs.promises.readFile(On.Input, "utf-8"),
Wrote: async (On) => On.Buffer,
Passed: async (On) => On && true,
Failed: async (Input) => `Error: Cannot process file ${Input}!`,
Accomplished: async (On) => `Processed ${On.Input} in ${On.Output}.`,
Fulfilled: async (Plan) =>
`Successfully processed a total of ${Plan.Files} ${
Plan.Files === 1 ? "file" : "files"
}.`,
Changed: async (Plan) => Plan,
});
Adding Multiple Paths
You can add multiple paths to your pipe by specifying an array as the Path
variable:
Index.ts
import Files from "files-pipe";
await new Files().In(["./Input", "./Input2"]);
Input-Output Mapping
FilesPipe
allows you to provide a map of paths for different input and output
directories, making it easy to control where files are read from and written to:
Index.ts
import Files from "files-pipe";
await new Files().In(new Map([["./Input", "./Output"]]));
File Filtering
You can filter files to exclude specific ones from your FilesPipe
. Filters can
be an array of regular expressions or a single match. You can also use functions
to match on file names:
Index.ts
import Files from "files-pipe";
await new Files().Not([
"File.txt",
(File: string) => File === "./Input/File.txt",
]);
Controlling Logging
You can control the logging level by setting the Logger
parameter. The default
value is 2
, but you can set it to 0
if you don't want to see debug messages:
Index.ts
import Files from "files-pipe";
new Files(0);
Changelog
See CHANGELOG.md for a history of changes to this component.