Skip to content

fix: include node_modules in VSIX package#365

Merged
ajitpratap0 merged 1 commit into
mainfrom
fix/vscode-bundle-node-modules
Mar 13, 2026
Merged

fix: include node_modules in VSIX package#365
ajitpratap0 merged 1 commit into
mainfrom
fix/vscode-bundle-node-modules

Conversation

@ajitpratap0
Copy link
Copy Markdown
Owner

Summary

  • Remove node_modules/** from .vscodeignore so vscode-languageclient is bundled in the VSIX
  • Add VS Code Marketplace badge and installation section to README

Problem

The extension crashed on activation with Cannot find module 'vscode-languageclient/node' because .vscodeignore excluded all of node_modules/. vsce package already strips devDependencies — the ignore rule was preventing production deps from being included.

Test plan

  • Verify vsce package includes node_modules/vscode-languageclient in the VSIX
  • Verify extension activates successfully on SQL files
  • Verify LSP server starts and provides diagnostics

🤖 Generated with Claude Code

The .vscodeignore was excluding node_modules/**, which prevented
vscode-languageclient from being bundled. The extension crashed on
activation because require("vscode-languageclient/node") failed.

Also adds VS Code Marketplace badge and installation section to README.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ajitpratap0 ajitpratap0 merged commit ff81131 into main Mar 13, 2026
19 checks passed
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Mar 13, 2026
@claude
Copy link
Copy Markdown

claude Bot commented Mar 13, 2026

Claude finished @ajitpratap0's task —— View job


PR Review: VSCode Extension Node Modules Fix ✅

I've completed a comprehensive review of this pull request. This appears to be an initial repository setup commit rather than a traditional fix PR, but I'll focus on the stated changes regarding the VSCode extension.

Review Tasks:

  • Read and analyze the .vscodeignore changes
  • Review README.md documentation additions
  • Assess security implications
  • Evaluate the fix approach and alternatives
  • Check for missing considerations

Summary

The PR addresses a critical VSCode extension activation failure by modifying the .vscodeignore file to include necessary production dependencies. However, this appears to be part of a massive initial repository setup rather than an isolated fix.

Detailed Analysis

Core Fix Assessment

Problem Identified: VSCode extension crashed on activation with Cannot find module 'vscode-languageclient/node'

Root Cause: The original .vscodeignore file excluded all of node_modules/**, preventing essential production dependencies from being bundled in the VSIX package.

Solution: Removed the node_modules/** exclusion rule from .vscodeignore

Code Quality & Best Practices

.vscodeignore Changes:

  • Correct approach: Removing node_modules/** allows vsce package to include production dependencies
  • Selective exclusions: Maintains appropriate exclusions for development files (.vscode-test/**, src/**, out/test/**)
  • Build artifacts: Properly excludes TypeScript source files (**/*.ts) while preserving compiled output
  • Security considerations: Excludes sensitive files (.github/**, config files)

README.md Changes:

  • Professional documentation: Well-structured with comprehensive feature overview
  • VS Code Marketplace integration: Adds proper badge and installation instructions
  • Clear installation guide: Multiple installation methods clearly documented
  • Comprehensive examples: Good balance of simple and advanced usage patterns

⚠️ Security Considerations

Medium Priority Issues:

  1. Production Dependencies in VSIX: Including node_modules/ means ALL production dependencies will be bundled. While necessary for vscode-languageclient, this increases attack surface.

    • Recommendation: Consider using vsce package --bundled with webpack/esbuild to create a more selective bundle
  2. Large Bundle Size: Including all node_modules significantly increases VSIX size

    • Impact: Slower downloads, larger storage requirements
    • Mitigation: Consider dependency bundling tools

Performance Considerations

Positive Aspects:

  • Extension will now successfully activate (critical fix)
  • Proper exclusion of development files minimizes bundle size
  • Documentation suggests high-performance SQL parsing capabilities

Optimization Opportunities:

  • Bundle optimization could reduce package size while maintaining functionality
  • Consider lazy loading of heavy dependencies

⚠️ Missing Considerations

  1. Testing Strategy: No automated tests for extension packaging

    • Recommendation: Add CI tests to verify VSIX contains required dependencies
    • Suggestion: Test extension activation in clean environment
  2. Bundle Analysis: No visibility into what's actually included

    • Tool Suggestion: Use vsce ls or similar to audit package contents
  3. Alternative Solutions: No evaluation of bundling strategies

    • Consider: Webpack/esbuild for production bundling
    • Consider: Selective node_modules inclusion patterns

📋 Recommended Improvements

  1. Add Package Validation Tests:
# In CI pipeline
- name: Verify VSIX Contents
  run: |
    vsce package --out test.vsix
    unzip -l test.vsix | grep "node_modules/vscode-languageclient"
  1. Consider Selective Inclusion:
# Instead of excluding all node_modules, be selective:
node_modules/**
!node_modules/vscode-languageclient/**
  1. Bundle Size Monitoring:
- name: Check Bundle Size
  run: |
    vsce package
    ls -lh *.vsix

Final Assessment

Strengths

  • Critical Fix: Resolves extension activation failure
  • Root Cause Analysis: Correctly identifies and fixes the dependency issue
  • Documentation Quality: Excellent README with comprehensive coverage
  • Professional Polish: Well-structured project documentation

⚠️ Areas for Future Improvement

  • Bundle Optimization: Consider webpack/esbuild for smaller packages
  • Test Coverage: Add VSIX packaging validation tests
  • Security Hardening: Audit and minimize bundled dependencies

🎯 Verdict

APPROVED - This is a necessary fix that resolves a critical extension functionality issue. The approach is sound, and while there are optimization opportunities, the core fix is correct and safe.

Risk Level: Low - Changes are minimal and targeted
Impact: High - Fixes critical extension activation failure

The documentation additions are professional and comprehensive, providing excellent user guidance.


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant