filewrap
v1.0.0
Published
Light wrapper for files to make absolute and relative paths easier
Downloads
32
Readme
Filewrap
A light wrapper for files to make absolute and relative paths easier
Note: This project is in early development, and versioning is a little different. Read this for more details.
Why should you care?
Sometimes you will have a project where you need to transform paths to and from relative/absolute frequently. It's super annoying to continuously run something like absolutePath.replace(rootPath, '')
and path.join(rootPath, relativePath)
whenever this is needed. To make this cleaner and easier, you can use a small wrapper around the file that exposes both paths.
Installation
npm install filewrap -S
Note: This project is compatible with node v6+ only
Usage
const File = require('filewrap')
const f = new File('/Users/doge/projects', 'personal-site/index.html')
f.relative // personal-site/index.html
f.absolute // /Users/doge/projects/personal-site/index.html
If you are starting with an absolute path, you can initialize with the absolute path in the same way, filewrap will figure out the relative path for you and make sure it's formatted consistently.
const File = require('filewrap')
const f = new File('/Users/doge/projects', '/Users/doge/projects/personal-site/index.html')
f.relative // personal-site/index.html
f.absolute // /Users/doge/projects/personal-site/index.html
Note that your relative path will never include a leading slash no matter how you initialize, so you can count on this being consistent. And your absolute path will be the path.join
result of your root and relative paths. Platform-specific directory dividers will always be fully respected.
Map Helpers
Now if you have an array of these wrapped files, you may want to quickly unwrap them all into relative or absolute paths. Filewrap also exposes a couple convenient helpers that make this clear and simple:
const {getRelative, getAbsolute} = require('filewrap')
arrayOfFilewrapObjects.map(getRelative)
arrayOfFilewrapObjects.map(getAbsolute)
License & Contributing
- Details on the license can be found here
- Details on running tests and contributing can be found here