inquirer-fs-selector
A filesystem prompt selector plugin for Inquirer.js.
Installation
npm install --save inquirer-fs-selector
Features
- Support for symlinked files
- Vim style navigation
- Search for file with / key
- Customize (or disable) file and directory icons
- Select file (optionally) or directory
- Define the initial pointer position
Key Maps
- Press / key to enter search mode
- Press - key to go up (back) a directory
- Press . key to select the current directory
Usage
This prompt is anonymous, meaning you can register this prompt with the type name you please:
inquirer.registerPrompt('fs-selector', require('inquirer-fs-selector'));
inquirer.prompt({
type: 'fs-selector',
})
Change fs-selector
to whatever you might prefer.
Parameters
Note: allowed options written inside square brackets ([]
) are optional. Others are required.
Takes type
, name
, message
, basePath
[, default
, options
] properties.
See inquirer.js README for meaning of all except basePath and default.
Which are:
basePath
the relative path from your current working directory
default
the name of the item (string) where the pointer will be initially positioned (default: '.'
)
Return
An object with the following shape
{
isDirectory: Boolean
isFile: Boolean
path: String
}
Example
const inquirer = require('inquirer')
inquirer.registerPrompt('fs', require('inquirer-fs-selector'))
inquirer.prompt([{
type: 'directory',
name: 'fs',
message: 'Choose a file or directory',
basePath: './',
options: {
displayHidden: true,
displayFiles: true,
canSelectFile: true,
icons: {
currentDir: '\u{1F4C2}',
},
shouldDisplayItem: (isDir, isFile, path) => true,
}
}]).then((answers) => {
console.log(answers.fs)
})
See also example.js for a working example.

Options
displayFiles | true | Set this to false if you need to hide files |
displayHidden | false | Set this to true if you to display hidden folders (and displayFiles === true ) |
canSelectFile | true (if displayFiles === true ) | Set this to false to disable files selection |
icons.currentDir | '\u{1F4C2}' (📂) | Set an icon for current directory |
icons.dir | '\u{1F4C1}' (📁) | Set an icon for other directories |
icons.file | '\u{1F4C4}' (📄) | Set an icon for files |
shouldDisplayItem | undefined (same as passing () => true ) | A callback function with the following signature: (isDirectory: boolean, isFile: boolean, fullPath: string) => boolean . Should return true to prompt the item on the list |
TIP: To disable prompt icons, make icons === false
.
License
MIT