// https://github.com/igoradamenko/esbuild-plugin-alias/blob/master/index.js // MIT License. Copyright (c) 2021 Igor Adamenko import type { Plugin } from "esbuild" export function alias(options: Record): Plugin { const aliases = Object.keys(options) const re = new RegExp(`^(${aliases.map(x => escapeRegExp(x)).join("|")})$`) return { name: "alias", setup(build) { // we do not register 'file' namespace here, because the root file won't be processed // https://github.com/evanw/esbuild/issues/791 build.onResolve({ filter: re }, args => ({ path: options[args.path], })) }, } } function escapeRegExp(string: string) { // $& means the whole matched string return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") }