inquirer-file-selector
An file selector prompt implementation for Inquirer.js.
Installation
npm install inquirer-file-selector
Usage
import fileSelector from 'inquirer-file-selector'
const filePath = await fileSelector({
message: 'Select a file:',
...
})
Options
Option | Type | Required | Description |
---|
message | string | ✔ | The message to display in the prompt. |
basePath | string | | The path to the directory where it will be started. Default: process.cwd() |
type | 'file'︱'directory'︱'file+directory' | | The type of elements that are valid selection options. Default: 'file' |
pageSize | number | | The maximum number of items to display in the list. Default: 10 |
loop | boolean | | If true , the list will loop from the last item to the first item and vice versa. Default: false |
filter | (file: FileStats) => boolean | | A function to filter files and directories. If not provided, all files and directories will be included by default. |
showExcluded | boolean | | If true , the list will include files and directories that are excluded by the filter function. Default: false |
disabledLabel | string | | The label to display when a file is disabled. Default: (not allowed) |
allowCancel | boolean | | If true, the prompt will allow the user to cancel the selection. Default: false |
cancelText | string | | The message to display when the user cancels the selection. Default: Canceled. |
emptyText | string | | The message that will be displayed when the directory is empty. Default: Directory is empty. |
theme | See Theming | | The theme to use for the file selector. |
Theming
You can theme a prompt by passing a theme
object option. The theme object only need to includes the keys you wish to modify, we'll fallback on the defaults for the rest.
type FileSelectorTheme = {
prefix: {
idle: string
done: string
canceled: string
}
icon: {
linePrefix: (isLast: boolean) => string
}
style: {
disabled: (text: string) => string
active: (text: string) => string
cancelText: (text: string) => string
emptyText: (text: string) => string
directory: (text: string) => string
file: (text: string) => string
currentDir: (text: string) => string
message: (text: string, status: 'idle' | 'done' | 'canceled') => string
help: (text: string) => string
key: (text: string) => string
}
}
[!NOTE]
To see the default theme used by the prompt, look at the fileSelectorTheme constant and the FileSelectorTheme type.
Examples
For examples look in the examples/ directory. You can execute the examples using node.
cd examples/
node <example-name>.js
[!NOTE]
Before running the examples, make sure you have installed the dependencies with npm install
and compiled the project with npm run build
.
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am "feat: my new feature"
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
[!NOTE]
The commit message should follow the Conventional Commits specification.
Copyright & License
© 2024 Brian Fernandez
This project is licensed under the MIT license. See the file LICENSE for details.