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; always use DEBUG='rootNamespace:*' for activation, never DEBUG='rootNamespace*')
Appendix
Further documentation can be found under docs/
.
Published Package Details
This is a [CJS2 package][x-pkg-cjs-mojito] 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.
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][x-pkg-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][x-pkg-exports-conditions]. These entries may or may not include: an
[exports[ENTRY].types
][x-pkg-exports-types-key] condition pointing to a type
declaration file for TypeScript and IDEs, a
[exports[ENTRY].module
][x-pkg-exports-module-key] 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][x-pkg-exports-conditions] not enumerated here. Check the
package.json file to see which export conditions are
supported.
Note that, regardless of the [{ "type": "..." }
][x-pkg-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
][x-pkg-side-effects-key] key, which is almost always false
for
optimal tree shaking where appropriate.
License
See LICENSE.
Contributing and Support
[New issues][x-repo-choose-new-issue] 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):
Bernard 🚇 💻 📖 🚧 ⚠️ 👀 |
||||||
|
This project follows the all-contributors specification. Contributions of any kind welcome!
[x-badge-blm-image]: https://xunn.at/badge-blm 'Join the movement!'
[x-badge-codecov-image]: https://img.shields.io/codecov/c/github/Xunnamius/rejoinder/main?style=flat-square&token=HWRIOBAAPW&flag=package.main_root 'Is this package well-tested?'
[x-badge-downloads-image]: https://img.shields.io/npm/dm/rejoinder?style=flat-square 'Number of times this package has been downloaded per month'
[x-badge-lastcommit-image]: https://img.shields.io/github/last-commit/Xunnamius/rejoinder?style=flat-square 'Latest commit timestamp' [x-badge-license-image]: https://img.shields.io/npm/l/rejoinder?style=flat-square "This package's source license"
[x-badge-npm-image]: https://xunn.at/npm-pkg-version/rejoinder 'Install this package using npm or yarn!'
[x-badge-semanticrelease-image]: https://xunn.at/badge-semantic-release 'This repo practices continuous integration and deployment!' [x-badge-semanticrelease-link]: https://github.com/semantic-release/semantic-release [x-pkg-cjs-mojito]: https://dev.to/jakobjingleheimer/configuring-commonjs-es-modules-for-nodejs-12ed#publish-only-a-cjs-distribution-with-property-exports [x-pkg-dual-package-hazard]: https://nodejs.org/api/packages.html#dual-package-hazard [x-pkg-exports-conditions]: https://webpack.js.org/guides/package-exports#reference-syntax [x-pkg-exports-module-key]: https://webpack.js.org/guides/package-exports#providing-commonjs-and-esm-version-stateless [x-pkg-exports-types-key]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-5-beta#packagejson-exports-imports-and-self-referencing [x-pkg-side-effects-key]: https://webpack.js.org/guides/tree-shaking#mark-the-file-as-side-effect-free
[x-pkg-type]: https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#type
[x-repo-choose-new-issue]: https://github.com/Xunnamius/rejoinder/issues/new/choose