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-resolverUsage
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'