NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1777 most downloaded on npm
A drop-in replacement / proxy to Node.js path, replacing \\ with / for all results & adding file extension functions.
Last release 3 months ago
05 Jul 2026
Ships unpredictably
gaps range from 2 weeks to 5.4 years
Rarely documented
notes for 6 of 25 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
25 releases · first in 2014
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> GitOrigin-RevId: daf4d21a564224cb008ed7e04ba4fd08d859ecc8
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
GitOrigin-RevId: daf4d21a564224cb008ed7e04ba4fd08d859ecc8
normalizeTrim to preserve the //./ DOS-device/UNC root so it stays idempotent — normalizeTrim('//.//') now returns '//./' instead of the invalid '//.'. Thanks to @spokodev for the fix.ci: add changesets publish workflow
ci: add changesets publish workflow
One column per quarter.
@types/node >= 25 compatibility. PlatformPath was removed from @types/node v25; upath now derives its PlatformPath type from typeof path instead of re-exporting the removed interface. Works with @types/node v20 through v25+.All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
ci: restore publish.yml — public-repo-only, excluded from Copybara sync
ci: restore publish.yml — public-repo-only, excluded from Copybara sync
.github/FUNDING.yml and package.json alongside existing GitHub Sponsors and Tidelift.path vs upath behavior side-by-side, inspired by the v2-era docs. Every extra function now explains why it exists (what path does wrong).docs/API.md generation -- test files are now sorted by name before the doc reporter processes them, eliminating spurious diffs caused by Jest's non-deterministic parallel execution order.node_modules -- the hook falls back to the main worktree's node_modules/.bin when lint-staged isn't found locally.Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
engines field.__esModule and default properties — require('upath') still works for all standard usage (no .default needed). However, Object.keys(require('upath')) now includes "__esModule" and "default". Bundlers using Babel-style interop (mod.__esModule ? mod.default : mod) will resolve to .default, which IS the full upath object, so it works correctly.join(...paths: any[]) → join(...paths: string[]), same for resolve and joinSafe. If you pass non-string args, add explicit casts: join(myVar as string)._makeLong removed from top-level exports — this was a deprecated Node.js internal. Use toNamespacedPath instead (available in upath v2+ and Node.js 8.3+). Note: _makeLong remains accessible via the .default property on CJS exports (it's part of the full path proxy), but this is not a supported API.String objects no longer accepted — new String('foo') is rejected; use plain string primitives. This is unlikely to affect anyone.import and require() both work via package.json exports.import { normalize, join, toUnix } from 'upath'.matchesGlob typed export (wraps Node 22+ path.matchesGlob).toNamespacedPath typed export.UPath interface exported for TypeScript consumers.docs/API.md built from test suite.chore(): release v2.0.1
chore(): release v2.0.1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →