element-plus/build/plugins/element-plus-alias.ts
三咲智子 4e99d0b5ba
build!: simplify build & support esm import (#4018)
* build!: simplify build & support native esm import

* build: refactor build

* refactor: reorganize files

* refactor: refactor build

* build: improve perf

* fix: scripts

* build: add rollup-plugin-filesize

* chore: scripts ignore no-console

* build: disable tree-shaking

* build: improve code

* build: add sourcemap

* build: add banner

* refactor: remove annotation

* build!: improve esm exports (#3871)

* build: improve esm import

* refactor: change mjs for esm version

* chore: improve exports map

* fix: add sideEffects

* refactor: improve alias

* build: upgrade dependencies
2021-10-25 17:07:48 +08:00

30 lines
848 B
TypeScript

import { EP_PKG, EP_PREFIX } from '../utils/constants'
import { getDistPackages } from '../utils/pkg'
import type { Plugin } from 'rollup'
export async function ElementPlusAlias(): Promise<Plugin> {
const pkgs = await getDistPackages()
return {
name: 'element-plus-alias-plugin',
resolveId(id, importer, options) {
if (!id.startsWith(EP_PREFIX)) return
const THEME_CHALK = `${EP_PREFIX}/theme-chalk`
if (id.startsWith(THEME_CHALK)) {
return {
id: id.replaceAll(THEME_CHALK, `${EP_PKG}/theme-chalk`),
external: 'absolute',
}
}
let updatedId = id
for (const pkg of pkgs) {
if (id.startsWith(pkg.name))
updatedId = updatedId.replace(pkg.name, pkg.dir)
}
return this.resolve(id, importer, { skipSelf: true, ...options })
},
}
}