Opens a π text editor, waits until closed & captures π¬ file content.
Allows you to capture user input by opening a text editor instead of stdin
. Manually passing large amounts of data through stdin
is cumbersome and not widely supported as it depends on the terminal emulator.
This module creates a temporary file and opens it with the configured text editor. When the user saves the file and quits the editor, we read back the file while optionally deleting it.
Since most text editors support UTF-8, any emojis and special characters will be handled safely instead of replying on the terminal.
Tweet @vsnthdev, I would love to know your opinion & experience on this project π
- Cross platform
- Supports graphical & terminal editors
- Prefills the file with content
npm i read-file-input
After read-file-input
as a dependency using the above command, you can use it in the following way:
// import readFileInput from 'read-file-input'
import readFi from '../dist/read-file-input.js'
// read from the user with zero configuration
const read = await readFi()
// print the input we have read
console.log('Read input as:')
console.log(read)
export interface ConfigImpl {
// the name of the file created, defaults to "[id].txt"
// where [id] is replaced with a random 5 character string
// to prevent conflicts
name?: string
// a custom editor command which defaults to notepad.exe on Windows
// and uses the $VISUAL & $EDITOR environment variables on Linux & macOS
editor?: string
// whether to delete the file after the input has been read
// defaults to true and recommended to keep it that way
cleanup?: boolean
// do not wait for the editor to be closed, just return
// as soon as the editor has opened, useful to just show
// some content rather than taking inputs
noWait?: boolean
// the content that the temporary file should be pre-filled with
// undefined by default
content?: {
// the string of data which will be pre-filled onto the
// temporary file, will override the file setting
data?: string
// path to a file from which the content will be read
// for generating the temporary file
// useful for passing large amount of data for the temporary file
file?: string
}
}
You need to be at least on Node.js v17 or above and follow the below instructions to build the project π
- STEP 1οΈβ£ Clone this project
- STEP 2οΈβ£ Run
npm install
to get all dependencies - STEP 3οΈβ£ To build the TypeScript project run
npm run build
Now you should have a dist
folder in the project directory.
Once you have successfully built the project, to run a basic example π
node examples/basic.js
Checkout other examples to know more on different use cases and configuration of options of read-file-input.
This project follows Vasanth's Commit Style for commit messages.
The read-file-input project is released under the MIT license.
Developed & maintained By Vasanth Srivatsa. Copyright 2023 Β© Vasanth Developer.
vsnth.dev Β Β·Β YouTube @vasanthdeveloper Β Β·Β Twitter @vsnthdev Β Β·Β Discord Vasanth Developer