A powerful CLI tool and library to generate file and folder structures from both tree diagrams and flat path lists. Perfect for quickly scaffolding projects or creating complex directory structures with a single command.
-
Dual Input Modes: Supports both tree diagrams (
│ ├── └──
) and flat path lists -
Smart Parsing: Handles comments (lines starting with
#
) and validates paths - Safe Operations: Skips existing files and validates path characters
- Recursive Creation: Automatically creates all necessary parent directories
- CLI & Programmable: Use via command line or import as a library
npm install -g file-tree-creator
npm install file-tree-creator --save-dev
ftc <input-file> [--mode=tree|flat]
or
npx file-tree-creator <input-file> [--mode=tree|flat]
- From a tree diagram:
ftc structure.txt
# or explicitly
ftc structure.txt --mode=tree
- From flat paths:
ftc paths.txt --mode=flat
const { parseTreeDiagram, parseFlatPath, createFileStructure } = require('file-tree-creator');
// Using tree diagram
const treeInput = `
├── src
│ ├── index.js
│ └── utils
│ └── helper.js
`;
const paths = parseTreeDiagram(treeInput);
createFileStructure(paths, './my-project');
// Using flat paths
const flatInput = `
src/index.js
src/utils/helper.js
README.md
`;
const flatPaths = parseFlatPath(flatInput);
createFileStructure(flatPaths, './my-project');
├── src
│ ├── index.js
│ └── utils
│ └── helper.js
├── README.md
└── .gitignore
src/index.js
src/utils/helper.js
README.md
.gitignore
Both formats support comments (lines starting with #
):
# This is a comment
src/index.js # This part will be parsed
# Another comment
Parses a tree diagram string into an array of paths.
Parameters:
-
treeText
(String): The tree diagram text
Returns:
- Array of path strings
Parses a flat path list into an array of paths.
Parameters:
-
flatText
(String): The flat path text
Returns:
- Array of path strings
Creates the file structure from an array of paths.
Parameters:
-
paths
(Array): Array of path strings -
baseDir
(String): Base directory to create structure in (defaults to current directory)
By default, the tool runs in lenient mode:
- Continues after errors
- Shows warnings for invalid paths
- Returns exit code 0 unless catastrophic failure occurs
Use --strict
flag for strict mode:
- Fails immediately on first error
- Returns exit code 1 if any errors occur
- Recommended for CI/CD environments
Examples:
# Lenient mode (default)
ftc paths.txt
# Strict mode
ftc paths.txt --strict
The tool handles several error cases gracefully:
- Skips existing files/folders with warning
- Rejects paths with invalid characters (
<>:"|?*
) - Rejects paths with double slashes (
//
) - Provides clear error messages for file system operations
See the examples/
directory for sample input files:
-
tree.txt
: Tree diagram example -
flat.txt
: Flat path example
Contributions are welcome! Please open an issue or PR for any:
- Bug reports
- Feature requests
- Documentation improvements
- Test cases
MIT © Festus Charles
Enjoy creating file structures with ease! 🎯