compose-paths
v1.2.3
Published
Define paths + routes without the repetition.
Downloads
22
Maintainers
Readme
Quickly throw together a few local paths and have them assigned to aliases or routes.
const { composePaths } = require('compose-paths')
const paths = composePaths(`
${__dirname}
/src
/html
/templates = TEMPLATES
/pages = PAGES
/public = PUBLIC
/images = IMAGES
`)
paths.TEMPLATES
// "/dir/name/src/html/templates"
paths.PUBLIC
// "/dir/name/public"
paths.aliases
// ["TEMPLATES", "PAGES", "PUBLIC", "IMAGES"]
compose-paths
looks at the indentation-level of its input as the cue to concatenate lines together. Either tabs
or spaces
should be fine, so long as you're consistent.
More examples
Path
→ Route
(via aliases and zip
)
const { composePaths, zip } = require('compose-paths')
const routes = composePaths(`
/ = HOME
/about = ABOUT
/contact = CONTACT
`)
const paths = composePaths(`
${__dirname}
/src
/html/pages
/index.html = HOME
/about.html = ABOUT
/contact.html = CONTACT
`)
const staticRoutes = zip(routes, paths)
staticRoutes.forEach(([route, path]) => {
app.get(route, sendFile(path))
})
Path
→ Route
(directly)
const { composePaths } = require('compose-paths')
const pathFromRoute = composePaths(`
${__dirname}
/src/html/pages
/index.html = /
/about.html = /about
/contact.html = /contact
`)
pathFromRoute['/']
// "/dir/name/src/html/pages/index.html"
pathFromRoute['/contact']
// "/dir/name/src/html/pages/contact.html"
pathFromRoute.aliases.forEach(route => {
console.log(pathFromRoute[route])
})
That's it!
Credits
compose-paths
was written by Conan Theobald.
Did you find this useful? If so, I like coffee ☕️ :)
License
MIT licensed: See LICENSE