2.2.3 • Published 9 months ago

@mnrendra/alias-resolver v2.2.3

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

@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

2.2.1

1 year ago

2.2.0

1 year ago

2.2.3

9 months ago

2.2.2

9 months ago

2.1.0

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

1.2.0

1 year ago

1.1.0

1 year ago

1.0.0

1 year ago