Skip to content

Conversation

seefood
Copy link
Contributor

@seefood seefood commented Oct 7, 2025

Summary

Adds the ability to only show node version in the prompt when inside a Node.js project directory.

Problem

The node version is always displayed in the prompt regardless of context. This wastes valuable prompt space when working on:

  • Python projects
  • Ansible playbooks
  • Ruby projects
  • Documentation directories
  • Any non-Node.js work

Solution

New environment variable NODE_VERSION_CHECK_PROJECT:

  • Default: false (maintains current behavior)
  • When true: Node version only shows in directories containing package.json
  • Searches current directory and all parent directories up to $HOME

Usage

Add to ~/.bashrc or ~/.bash_profile before sourcing bash-it:

export NODE_VERSION_CHECK_PROJECT=true

Implementation Details

New Helper Function:

_is_node_project() {
  # Searches for package.json in current and parent directories
}

Modified Functions:

  • node_version_prompt() - Main version display function
  • node_command_version_prompt() - Legacy version display

Compatibility:

  • Fully backwards compatible (off by default)
  • Works with all node version strategies: nvm, node, command
  • No impact on existing configurations

Example Behavior

Without NODE_VERSION_CHECK_PROJECT (current behavior):

~/python-project $ # Shows: v20.10.0
~/ansible-playbooks $ # Shows: v20.10.0
~/nodejs-app $ # Shows: v20.10.0

With NODE_VERSION_CHECK_PROJECT=true:

~/python-project $ # No node version shown
~/ansible-playbooks $ # No node version shown
~/nodejs-app $ # Shows: v20.10.0 (has package.json)

Testing

  • ✅ Passes shellcheck with no warnings
  • ✅ Passes shfmt formatting checks
  • ✅ Passes all pre-commit hooks
  • ✅ Maintains backwards compatibility

Related

Closes #2216

Inspiration

Similar to Powerlevel10k's approach referenced in the issue.

🤖 Generated with Claude Code

…ersion

Adds the ability to only show node version in the prompt when inside a
Node.js project (detected by presence of package.json).

**Problem:**
The node version was always displayed in the prompt regardless of the
current directory context. This wastes space when working on non-Node.js
projects (Python, Ansible, etc.).

**Solution:**
- New environment variable: `NODE_VERSION_CHECK_PROJECT` (default: false)
- When set to 'true', node version only shows in directories with package.json
- Searches current directory and parent directories up to $HOME
- Applies to all node version display strategies (nvm, node, command)

**Usage:**
```bash
# Add to ~/.bashrc or ~/.bash_profile before sourcing bash-it
export NODE_VERSION_CHECK_PROJECT=true
```

**Implementation:**
- New helper function `_is_node_project()` checks for package.json
- Modified `node_version_prompt()` to check NODE_VERSION_CHECK_PROJECT
- Modified `node_command_version_prompt()` for consistency
- Backwards compatible (disabled by default)

**Testing:**
- Passes shellcheck with no warnings
- Passes shfmt formatting checks
- Maintains backward compatibility

Closes Bash-it#2216

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
seefood added a commit that referenced this pull request Oct 7, 2025
Updated all three planning documents to reflect the completed work:

**Issues Fixed (6 total)**:
- #2317: Auto-detect git remote (PR #2345)
- #2248: Laravel artisan completion (PR #2349)
- #2296: down4me URL malformation (PR #2350)
- #2260: SSH completion @ sign (PR #2351)
- #2238: Uninstall script backup (PR #2352)
- #2216: Node version conditional display (PR #2353)

**Changes to docs/plans/**:
1. bash-it-issues-comprehensive-analysis.md
   - Marked 5 quick wins as FIXED with PR numbers
   - Updated executive summary: 32 → 27 open issues
   - Updated work plan to show Phase 1 completed
   - Updated issue reference appendix

2. bash-it-quick-reference.md
   - Moved completed issues to "Fixed" section
   - Updated TL;DR metrics
   - Removed completed items from decision list
   - Updated metrics table with current progress

3. bash-it-roadmap-2025.md
   - Updated health metrics (32 → 27 issues)
   - Marked Phase 1 as COMPLETED
   - Listed all 6 PRs with dates
   - Updated success criteria checkmarks

**Remaining Work**:
- 1 quick fix (#2314 - todo alias rename)
- 18 stale issues to close
- 4 strategic decisions needed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>

# If NODE_VERSION_CHECK_PROJECT is enabled, only show version in Node.js projects
if [[ "${NODE_VERSION_CHECK_PROJECT}" == "true" ]] && ! _is_node_project; then
return
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some specify the return code as return 0, while some don't. Is there a background? If not, I recommend always specifying the return code explicitly. Bash had some strange behaviors of the return statement without exit code inside trap handlers.

Add explicit return code 0 to all return statements as suggested by
@akinomyoga to avoid strange behaviors in trap handlers.

Co-Authored-By: akinomyoga <[email protected]>
@seefood seefood merged commit b2adfa9 into Bash-it:master Oct 7, 2025
6 checks passed
@seefood seefood deleted the feature/nvm-conditional-display branch October 7, 2025 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: nvm: only show node version if folder has package.json

2 participants