Ability to control other options programatically

Open
#986 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
javascript

Research direction

Start by reading the existing initialization and enable paths, including the handling of process.env and browser localStorage described in the issue. Done means a callable debug.init() can re-read the relevant environment configuration, including DEBUG_COLORS, after dotenv.config() or equivalent setup without requiring a reload.

Written by the indexing model from the issue text.

Description

I use the package dotenv and the dotenv.config(); function to load my config from a .env file. I would like my default .env file to contain the config:

DEBUG=my-app:*,-my-app:verbose*
DEBUG_COLORS=1

So that developers, with the default .env file will have a good experience.

I have found that I can get debug to honor my DEBUG environment variable with this snippet of code in my config file:

dotenv.config();
const DEBUG: false | string = process.env.DEBUG && process.env.DEBUG !== 'false' ? process.env.DEBUG : false;
if (isString(DEBUG) && DEBUG !== 'false') {
    console.error(colors.yellow(`🐞 enabling debug outout for: "${DEBUG}". You can edit, or disable this in the .env file`));
    Debug.enable(DEBUG);
}

but as far as I can tell, there is no way to get debug to switch the DEBUG_COLORS config over–once the package initializes and reads it from process.env, that's it. Unfortunately this doesn't work in this case.

Request: add a debug.init() method that can be called to re-read all of the environment configs–this way, once I know my environment is setup correctly, I can call debug.init and trust things will work.


I have run into the same exact issue with the debug package in the browser, though I did not know about debug.enableat the time. This point is moot, just wanted to provide it to share some insights with how I'm using it.

I have some FE code that says:

if (environment.local && !localStorage.debug) {
  localStorage.debug = '...';
  console.warn(`debug initialized–reload your browser and enable verbose logging in the console to see the output`);
}

In the front end case, I need to ship a change that uses debug.enable, and override the log to use console.log, and that will let me improve the experience.

Dominant language
JavaScript
Stars
11.5k
Forks
992
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from debug-js/debug

All issues in debug-js/debug

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.