Public commit
This commit is contained in:
24
scripts/plugins/esbuild-alias.ts
Normal file
24
scripts/plugins/esbuild-alias.ts
Normal file
@ -0,0 +1,24 @@
|
||||
// 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<string, string>): 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, "\\$&")
|
||||
}
|
Reference in New Issue
Block a user