@mnrendra/alias-resolver
v2.2.0
Published
A utility to resolve alias paths.
Downloads
223
Maintainers
Readme
@mnrendra/alias-resolver
A utility to resolve 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'