cpsf_utilite
v3.5.3
Published
A CLI tool to generate a project's directory and file structure tree, with advanced filtering and configuration.
Maintainers
Readme
cpsf_utilite
cpsf_utilite (Create Project Structure File) is a powerful Command-Line Interface (CLI) tool that generates a project's directory structure tree. It is designed to be flexible, fast, and user-friendly, featuring smart filtering, content control, and full customization via a configuration file.
Key Features
- Tree Generation: Creates a clean, visual representation of your project's file and directory structure.
- Full Customization: Control what gets included in the report using a
.structurerc.jsonfile. - Smart Filtering: Comes with extensive built-in lists to ignore unnecessary files and folders (like
node_modules,.git, cache files, etc.). - Content Control: Option to display the content of text files or just the filenames for binary/media files.
- Large Directory Summaries: Automatically collapses the contents of directories with thousands of similar files, showing only the beginning, end, and total count.
- Secret Hiding: Automatically finds and hides API keys, passwords, and other secrets within file content.
- Git Integration: Automatically updates your
.gitignoreto prevent generated files from being tracked in your repository.
Installation
Install cpsf_utilite globally using npm:
npm install -g cpsf_utiliteGetting Started
Using the utility involves two simple steps: initialization (once per project) and structure generation.
Step 1: Initialization (Recommended)
In the root of your project, run the following command:
cpsf_utilite initThis command will do two things:
- Create a
.structurerc.jsonfile with default settings. You can now edit this file to customize the utility's behavior. - Add the
project_copies/directory and.structurerc.jsonto your.gitignorefile.
Step 2: Generating the Structure
After initialization, simply run the utility in your project's root directory:
cpsf_utiliteIt will prompt you to choose an action in interactive mode. You can also specify the command directly:
cpsf_utilite structureThe result will be saved in the project_copies/ directory in a file with a unique name, such as project-structure_D_2023-10-27_H_15-30-00.txt.
Configuration (.structurerc.json)
All the customization magic happens in the .structurerc.json file. You can add or remove files, extensions, and folders to be ignored, included, or handled in a special way.
Here is an example configuration:
{
// Directories to be completely ignored
"excludedDirectories": [".git", ".idea", "node_modules", "dist"],
// Files to be completely ignored by name
"excludedFiles": [".DS_Store", "yarn.lock"],
// Files to be ignored by extension
"excludedExtensions": [".log", ".env", ".bak"],
// Files for which only the name is displayed (no content)
"filesWithoutContent": ["package-lock.json", "README.md", ".py"],
// Media extensions that do not have text content
"mediaExtensions": [".png", ".jpg", ".mp3", ".zip"],
// Regular expressions to find and hide secrets
"secretsToHide": ["API_KEY=.*", "SECRET_TOKEN=.*"],
// Settings for summarizing large directories
"largeDirectorySummary": {
"enabled": true, // Enable/disable the feature
"threshold": 10, // File count threshold to consider a directory "large"
"first": 3, // How many files to show at the beginning
"last": 3 // How many files to show at the end
}
}Example Output
Thanks to the largeDirectorySummary feature, the output for projects with large datasets will be clean and informative:
.
└── data/
├── processed/
│ ├── p225/
│ │ ├── 001.pt
│ │ ├── 002.pt
│ │ ├── 003.pt
│ │ ├── ... (and 360 more files) ...
│ │ ├── 364.pt
│ │ ├── 365.pt
│ │ └── 366.pt
│ └── p226/
│ ├── 001.pt
│ ├── 002.pt
│ ├── 003.pt
│ ├── ... (and 364 more files) ...
│ ├── 368.pt
│ ├── 369.pt
│ └── 370.pt
└── raw/
└── VCTK-Corpus-0.92.zipFAQ
Q: Can I customize which files and folders are ignored?
A: Yes! That's the main advantage of this utility. Simply edit the .structurerc.json file created by the cpsf_utilite init command.
Q: Can I use cpsf_utilite for non-Node.js projects?
A: Absolutely. The utility operates on the file system and is not dependent on the project's technology stack.
Feedback
If you have any questions or suggestions, please create an Issue on GitHub.
License
cpsf_utilite is distributed under the MIT license.
