Extract a valid fs path from a string

Usage no npm install needed!

<script type="module">
  import extractPath from 'https://cdn.skypack.dev/extract-path';



NPM version Build Status coveralls-image MIT license

Extract a valid fs path from a string.

extract-path is a node library that will attempt to find a possible valid file system path for a given input, validate its existance within the file system and return the matching value upon confirmation.

Table of Contents


The main use case for the lib is to be able to take valid path values out of verbose outputs such as those generated by a git status command:

  • modified: src/Router.js resolves to src/Router.js
  • ?? src/utils/__tests__/file.test.js resolves to src/utils/__tests__/file.test.js

This library was primarily put together for usage in iPipeTo which allows for its users to easily extract a path out of a random input value. Some extra effort was made to ensure extract-path works well as a separated lib in the hope that it can be useful for different use cases out there. Feel free to refer to iPipeTo source code as a implementation example if ever needed.


npm install extract-path


// example.js
const extractPath = require('extract-path');

extractPath('Selected file: ~/Documents/foo.js ...')
    .then(path => {
        // ~/Documents/foo.js


The API only exposes a single function, that receives a string and returns a Promise which resolves with a single, valid string value or undefined if there was no possible match.

extractPath(str, opts)

  • str string value to be parsed in order to extract a valid fs path
  • opts [optional] object containing the following:
    • validateFileExists boolean wether the module should validate the file exists, defaults to true
    • resolveWithFallback boolean uses a fallback system that matches the entire input if a path couldn't be infered from the input, defaults to true


extract-path is heavily inspired by the work done in PathPicker parsing algorithm and regular expressions.


iPipeTo - Interactive Pipe To: The missing cli interactive workflow


Please do! This is an open source project. If you have a bug or want to discuss something, open an issue.


MIT © 2018 Ruy Adorno