npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pathlra-aliaser

v4.6.11

Published

High-performance path alias resolver for Node.js with LRU caching and radix-tree optimization

Readme

pathlra-aliaser

High-performance path alias resolver for Node.js, with a focus on speed, safety, and predictable behavior.

Designed to provide fast alias resolution in large codebases, using built-in caching and zero external dependencies.

Works with CommonJS out of the box and requires no code changes beyond a simple initialization call.


Why pathlra-aliaser?

pathlra-aliaser is a path alias resolver and module loader enhancement for Node.js.

It is designed to balance performance, correctness, and simplicity. Instead of introducing additional configuration files, build steps, or runtime layers, it integrates directly with Node.js’s module resolution mechanism while preserving its expected behavior.

Internally, the resolver applies adaptive lookup strategies and caching to keep alias resolution efficient as projects grow. This makes it suitable for larger codebases that want cleaner and more readable import paths, without relying on deep relative paths or additional runtime dependencies.

const db = require("@services/database");

No build step or transpilation is required.


Key Features

  • Sub-millisecond alias resolution in typical usage scenarios
  • Adaptive resolution strategy:
    • Linear scan for smaller alias sets (≤100)
    • Radix tree lookup for larger configurations (>100)
  • LRU cache with batch-based eviction to reduce GC pressure
  • Aliases configured directly in package.json
  • Support for dynamic, runtime-generated aliases
  • Optional custom module directories
  • Zero external dependencies (pure Node.js)
  • Small and predictable memory footprint
  • Optional hot-reload support for development environments
  • Debug and verbose modes for tracing resolution behavior
  • Helper for generating TypeScript path mappings
  • Configuration validation with clear error messages
  • Built-in presets such as @root and @src

How It Works

  • Initialization: Reads alias definitions from package.json keys starting with path_aliaser
  • Registration: Builds internal alias-to-path mappings
  • Strategy selection:
    • Fewer aliases use a simple linear scan
    • Larger sets switch to a radix-tree-based lookup
  • Module patching: Hooks into Node.js module resolution
  • Caching: Stores resolved paths using an LRU cache
  • Path propagation: Injects custom module directories when configured

All setup is performed once at startup.


Installation

npm install pathlra-aliaser

Configuration via package.json

{
  "dependencies": {
    "pathlra-aliaser": "^4.6.11"
  },
  "path_aliaser_": {
    "@products": "./routes/products.js",
    "@users": "./routes/users.js",
    "@logger": "./utils/logger.js",
    "@controllers": "./src/controllers"
  },
  "_moduleDirectories": ["node_modules", "custom_libs"]
}

Paths are resolved relative to the project root.

_moduleDirectories extends Node.js’s module search paths in a controlled manner.


Example Usage

"use strict";

require("pathlra-aliaser")(); // Must be called before aliased requires

const logger = require("@utils/logger");
const User = require("@models/User");

Advanced Features

Dynamic Aliases

const aliaser = require("pathlra-aliaser");

aliaser.aa("@dynamic", () => "./runtime/path");

Add a Custom Module Directory

aliaser.ap("./internal_modules");

Bulk Alias Registration

aliaser.addAliases({
  "@core": "./src/core"
});

Performance & Benchmarks

  • Default cache size: 10,000 entries
  • Eviction strategy: Batch removal of least-used entries
  • Typical memory usage: <2 MB with large alias sets

Benchmark results depend on workload and project structure.


Ideal For

  • Medium to large Node.js applications
  • Microservices and modular architectures
  • Long-running backend processes
  • Teams that want consistent import conventions

Not intended for: frontend bundling workflows, build-time-only aliasing, or projects that avoid package.json configuration.


Common Misconceptions

  • “I need to register every alias manually.” → Aliases can be defined entirely in package.json.
  • “It replaces Node.js behavior unsafely.” → It integrates with the resolver while preserving expected semantics.
  • “It adds noticeable runtime overhead.” → Resolution is cached and designed to remain efficient after warm-up.

Feature & Performance Comparison: pathlra-aliaser vs Top Alternatives

| Feature / Capability | pathlra-aliaser ✅ | module-alias | tsconfig-paths | babel-plugin-module-resolver | |----------------------|--------------------------|--------------------|------------------------|------------------------------------| | Pure Node.js (no build step) | ✅ Yes | ✅ Yes | ⚠️ Only with ts-node | ❌ Requires Babel transpilation | | Zero Dependencies | ✅ Yes | ✅ Yes | ❌ Needs TypeScript | ❌ Needs Babel + plugins | | Sub-millisecond Resolution | ✅ <0.1ms (adaptive) | ❌ ~0.3–1ms (linear only) | ⚠️ Slower (TS overhead) | N/A (build-time only) | | Smart Resolution Strategy | ✅ Radix Tree (≥100 aliases) + Linear (<100) | ❌ Linear scan only (O(n)) | ❌ Regex-based matching | N/A | | LRU Caching with Batch Eviction | ✅ Yes (10k entries, 10% batch) | ❌ No cache | ⚠️ Limited caching | N/A | | Dynamic Aliases (Handler Functions) | ✅ Yes + type validation | ✅ Yes (no validation) | ❌ No | ❌ No | | Hot-Reload Support | ✅ Optional (dev-only) | ❌ No | ⚠️ Via ts-node-dev | ❌ No | | TypeScript Paths Auto-Gen | ✅ Built-in _internal.generateTSConfig() | ❌ No | N/A (it is TS) | ❌ Manual sync needed | | Security: Path Traversal Protection | ✅ Blocks .., ~, \0 | ❌ Vulnerable | ⚠️ Depends on config | N/A | | Memory Optimization | ✅ Minimal Mode (<10 aliases → 1k cache) | ❌ Fixed overhead | ❌ High TS memory use | N/A | | Config via package.json | ✅ Any key starting with path_aliaser | ✅ _moduleAliases only | ❌ tsconfig.json only | ❌ .babelrc / babel.config.js | | Custom Module Directories | ✅ _moduleDirectories + ap() | ✅ _moduleDirectories | ❌ No | ❌ No | | Debug/Verbose Mode | ✅ Full resolution tracing | ❌ No | ⚠️ Limited logs | ❌ No | | ESM Support | ✅ Via patched resolver | ✅ Partial (Node ≥14.6+) | ✅ With ts-node | ✅ If Babel configured | | Works in Jest | ⚠️ Same as module-alias (needs moduleNameMapper) | ⚠️ Requires Jest config | ✅ With ts-jest | ✅ If Babel used in Jest | | Production-Ready Performance | ✅ 8.7x faster @ 1k aliases, 60% less RAM | ❌ Degrades with scale | ❌ Not for pure JS projects | ❌ Build-only | | Default Presets | ✅ @root, @src auto-applied | ❌ None | ❌ None | ❌ None | | Friendly Error Messages | ✅ Clear, actionable errors | ⚠️ Generic errors | ⚠️ TS cryptic errors | ⚠️ Babel errors |


License

MIT © hub-mgv

Built to be reliable, efficient, and unobtrusive.

pathlra-aliaser: keeping path resolution simple.