JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q51845F
  • License MIT

A utility for resolving alias paths.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@mnrendra/alias-resolver) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    @mnrendra/alias-resolver

    A utility for resolving alias paths. If you are using TypeScript, we recommend using @mnrendra/tsconfig-alias-parser to automatically parse tsconfig.json into aliases.

    Features

    • ✅ Resolves alias paths for require (CommonJS)
    • ✅ Resolves alias paths for import (ES Modules)
    • ✅ Resolves alias paths for await import (dynamic imports)

    Install

    npm i @mnrendra/alias-resolver

    Usage

    Using CommonJS:

    const { normalize, resolve } = require('node:path')
    const { resolveAlias } = require('@mnrendra/alias-resolver')
    
    const aliases = [
      {
        'alias': '@',
        'path': './src'
      },
      {
        'alias': '@tests',
        'path': './tests'
      }
    ]
    
    const code = `
    const foo = require("@/foo");
    const { mocks } = require("@tests");
    const dynamic = async () => {
      await import("@/abc")
    };
    `
    
    const source = {
      path: normalize(resolve('./src/main/index.js')),
      code,
      type: 'script'
    }
    
    resolveAlias(source, aliases)
    
    console.log(source.code) // Output:
    /*
    const foo = require('../foo');
    const {
        mocks
    } = require('../../tests');
    const dynamic = async () => {
        await import("../abc")
    };
    */

    Using ES Module:

    import { normalize, resolve } from 'node:path'
    import { resolveAlias } from  '@mnrendra/alias-resolver'
    
    const aliases = [
      {
        'alias': '@',
        'path': './src'
      },
      {
        'alias': '@tests',
        'path': './tests'
      }
    ]
    
    const code = `
    import foo from "@/foo";
    import { mocks } from "@tests";
    const dynamic = async () => {
      await import("@/abc")
    };
    `
    
    const source = {
      path: normalize(resolve('./src/main/index.mjs')),
      code,
      type: 'module'
    }
    
    resolveAlias(source, aliases)
    
    console.log(source.code) // Output:
    /*
    import foo from '../foo';
    import {
        mocks
    } from '../../tests;
    const dynamic = async () => {
        await import("../abc")
    };
    */

    Using TypeScript and implement @mnrendra/tsconfig-alias-parser:

    import type { Aliases, Source } from  '@mnrendra/alias-resolver'
    
    import { normalize, resolve } from 'node:path'
    import { resolveAlias } from  '@mnrendra/alias-resolver'
    import { parseTSConfigAliasSync } from '@mnrendra/tsconfig-alias-parser'
    
    const aliases: Aliases = parseTSConfigAliasSync() // It will read from `tsconfig.json` automatically.
    
    const code = `
    import foo from "@/foo";
    import { mocks } from "@tests";
    const dynamic = async () => {
      await import("@/abc")
    };
    `
    
    const source: Source = {
      path: normalize(resolve('./src/main/index.mjs')),
      code,
      type: 'module'
    }
    
    resolveAlias(source, aliases)
    
    console.log(source.code) // Output:
    /*
    import foo from '../foo';
    import {
        mocks
    } from '../../tests;
    const dynamic = async () => {
        await import("../abc")
    };
    */

    Types

    import type {
      // acorn
      Literal,
      Program,
      CallExpression,
      VariableDeclaration,
      ImportDeclaration,
      // acorn-walk
      SimpleVisitors,
      // @mnrendra/types-aliases
      Aliases,
      Alias,
      // @mnrendra/alias-resolver
      Source,
      SourceType,
      ResolveImport,
      ResolveRequire,
      ResolveDynamicImport
    } from '@mnrendra/alias-resolver'

    License

    MIT

    Author

    @mnrendra