devbox icon indicating copy to clipboard operation
devbox copied to clipboard

Enforce explicit npm: prefix and improve error handling for missing packages

Open iwatakeshi opened this issue 3 months ago • 0 comments

Summary

This PR enhances Devbox's npm package support by enforcing an explicit npm: prefix for npm packages, removing implicit transformation of scoped packages (e.g., @angular/cli no longer auto-transforms). It improves version parsing for npm-prefixed packages, refactors the parsing logic for better maintainability, and provides clearer error messages when npm packages are not found in Nixpkgs. Users now get actionable guidance, including a workaround to set npm's global prefix and install manually.

Partially fixes #2300

Changes Made

  • Enforced explicit npm: prefix in parsePackageInput and newPackage.
  • Updated error handling in initDefaultNames for user-friendly npm package not-found messages.
  • Refactored code to extract helper functions and consolidate logic.
  • Updated tests to reflect new behavior.

How was it tested?

  • Built the local Devbox binary and tested installation of valid npm packages (e.g., npm:lodash).
  • Attempted installation of non-existent npm packages (e.g., npm:@github/copilot) to verify improved error messages.
  • Ran unit tests to ensure no regressions.
  • Verified that bare scoped packages (e.g., @angular/cli) are no longer transformed.

Community Contribution License

All community contributions in this pull request are licensed to the project maintainers under the terms of the Apache 2 License.

By creating this pull request, I represent that I have the right to license the contributions to the project maintainers under the Apache 2 License as stated in the Community Contribution License.

iwatakeshi avatar Sep 26 '25 00:09 iwatakeshi