Skip to content

Commit 1455aad

Browse files
authored
fix(element-plus): get esm package version, closes unplugin#194 (unplugin#232)
1 parent 96a4137 commit 1455aad

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

src/core/resolvers/element-plus.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -140,25 +140,32 @@ function resolveDirective(name: string, options: ElementPlusResolverOptionsResol
140140
export function ElementPlusResolver(
141141
options: ElementPlusResolverOptions = {},
142142
): ComponentResolver[] {
143-
const optionsResolved: ElementPlusResolverOptionsResolved = {
144-
ssr: false,
145-
version: getPkgVersion('element-plus', '1.1.0-beta.21'),
146-
importStyle: 'css',
147-
directives: true,
148-
...options,
143+
let optionsResolved: ElementPlusResolverOptionsResolved | undefined
144+
145+
async function resolveOptions() {
146+
if (optionsResolved)
147+
return optionsResolved
148+
optionsResolved = {
149+
ssr: false,
150+
version: await getPkgVersion('element-plus', '1.1.0-beta.21'),
151+
importStyle: 'css',
152+
directives: true,
153+
...options,
154+
}
155+
return optionsResolved
149156
}
150157

151158
return [
152159
{
153160
type: 'component',
154-
resolve: (name: string) => {
155-
return resolveComponent(name, optionsResolved)
161+
resolve: async(name: string) => {
162+
return resolveComponent(name, await resolveOptions())
156163
},
157164
},
158165
{
159166
type: 'directive',
160-
resolve: (name: string) => {
161-
return resolveDirective(name, optionsResolved)
167+
resolve: async(name: string) => {
168+
return resolveDirective(name, await resolveOptions())
162169
},
163170
},
164171
]

src/core/utils.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import { parse } from 'path'
2+
import fs from 'fs'
23
import minimatch from 'minimatch'
34
import resolve from 'resolve'
45
import { ResolvedConfig } from 'vite'
56
import { slash, toArray } from '@antfu/utils'
7+
import {
8+
isPackageExists,
9+
getPackageInfo,
10+
} from 'local-pkg'
611
import { ComponentInfo, ResolvedOptions, ImportInfo } from '../types'
712
import { Context } from './context'
813
import { DISABLE_COMMENT } from './constants'
@@ -146,10 +151,16 @@ export function resolveAlias(filepath: string, alias: ResolvedConfig['resolve'][
146151
return result
147152
}
148153

149-
export function getPkgVersion(pkgName: string, defaultVersion: string): string {
154+
export async function getPkgVersion(pkgName: string, defaultVersion: string): Promise<string> {
150155
try {
151-
/* eslint-disable @typescript-eslint/no-var-requires */
152-
return require(`${pkgName}/package.json`).version
156+
const isExist = isPackageExists(pkgName)
157+
if (isExist) {
158+
const pkg = await getPackageInfo(pkgName)
159+
return pkg?.version ?? defaultVersion
160+
}
161+
else {
162+
return defaultVersion
163+
}
153164
}
154165
catch (err) {
155166
console.error(err)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy