A tiny library for creating gorgeous (and sometimes witty) terminal output
rejoinder
re·join·der
/rəˈjoindər/
noun
a reply, especially a sharp or witty one.
rejoinder
builds on debug
and chalk
to deliver consistent and
beautiful output to stdout and/or stderr.
Like debug
, rejoinder
's output is organized by optionally-nested namespaces
that can be enabled or disabled in a coarse-grain manner (via environment
variables). Beyond debug
, output can also be enabled or disabled
programmatically in a fine-grain manner via several simple yet highly-flexible
tag-based APIs. Output can be controlled in as fine-grained a manner as desired,
extending up to the namespace level or all the way down to individual lines of
output.
Install
To install:
npm install rejoinder
Usage
TODO (logger (not debug) errors and warnings guaranteed to be one color)
Appendix
Further documentation can be found under docs/
.
Published Package Details
This is a CJS2 package with statically-analyzable exports
built by Babel for use in Node.js versions that are not end-of-life. For
TypeScript users, this package supports both "Node10"
and "Node16"
module
resolution strategies.
Expand details
That means both CJS2 (via require(...)
) and ESM (via import { ... } from ...
or await import(...)
) source will load this package from the same entry points
when using Node. This has several benefits, the foremost being: less code
shipped/smaller package size, avoiding dual package
hazard entirely, distributables are not
packed/bundled/uglified, a drastically less complex build process, and CJS
consumers aren't shafted.
Each entry point (i.e. ENTRY
) in package.json
's
exports[ENTRY]
object includes one or more export
conditions. These entries may or may not include: an
exports[ENTRY].types
condition pointing to a type
declaration file for TypeScript and IDEs, a
exports[ENTRY].module
condition pointing to
(usually ESM) source for Webpack/Rollup, a exports[ENTRY].node
and/or
exports[ENTRY].default
condition pointing to (usually CJS2) source for Node.js
require
/import
and for browsers and other environments, and other
conditions not enumerated here. Check the
package.json file to see which export conditions are
supported.
Note that, regardless of the { "type": "..." }
specified in
package.json
, any JavaScript files written in ESM
syntax (including distributables) will always have the .mjs
extension. Note
also that package.json
may include the
sideEffects
key, which is almost always false
for
optimal tree shaking where appropriate.
License
See LICENSE.
Contributing and Support
New issues and pull requests
are always welcome and greatly appreciated! 🤩 Just as well, you can star 🌟
this project to let me know you found it useful! ✊🏿 Or buy
me a beer, I'd appreciate it. Thank you!
See CONTRIBUTING.md and SUPPORT.md for
more information.
Contributors
Thanks goes to these wonderful people (emoji
key):
This project follows the all-contributors
specification. Contributions of any kind welcome!