resolve.ts 1.5 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1
import path from 'path'
fxy060608's avatar
fxy060608 已提交
2
import { UserConfig, ResolverFunction } from 'vite'
3 4 5 6 7
import {
  isWindows,
  extensions,
  normalizePath,
  requireResolve,
fxy060608's avatar
fxy060608 已提交
8
  resolveUtsModule,
fxy060608's avatar
fxy060608 已提交
9
  resolveUtsModuleProxyFile,
10
} from '@dcloudio/uni-cli-shared'
11 12
import { VitePluginUniResolvedOptions } from '..'

fxy060608's avatar
fxy060608 已提交
13
export const customResolver: ResolverFunction = (updatedId, importer) => {
fxy060608's avatar
fxy060608 已提交
14 15 16 17 18 19 20
  const utsImporter = importer
    ? path.dirname(importer)
    : process.env.UNI_INPUT_DIR
  const utsModuleFile =
    process.env.UNI_PLATFORM === 'app'
      ? resolveUtsModuleProxyFile(updatedId, utsImporter)
      : resolveUtsModule(updatedId, utsImporter, process.env.UNI_UTS_PLATFORM)
fxy060608's avatar
fxy060608 已提交
21 22 23
  if (utsModuleFile) {
    return isWindows ? normalizePath(utsModuleFile) : utsModuleFile
  }
24
  if (isWindows) {
fxy060608's avatar
fxy060608 已提交
25 26 27
    return normalizePath(
      requireResolve(updatedId, importer || process.env.UNI_INPUT_DIR)
    )
28
  }
fxy060608's avatar
fxy060608 已提交
29
  return requireResolve(updatedId, importer || process.env.UNI_INPUT_DIR)
30 31
}

32
export function createResolve(
fxy060608's avatar
fxy060608 已提交
33
  options: VitePluginUniResolvedOptions,
fxy060608's avatar
fxy060608 已提交
34
  _config: UserConfig
35 36
): UserConfig['resolve'] {
  return {
fxy060608's avatar
fxy060608 已提交
37 38 39 40 41 42 43
    // 必须使用alias解析,插件定制的resolveId,不会被应用到css等预处理器中
    alias: [
      // @ts-ignore because @rollup/plugin-alias' type doesn't allow function
      // replacement, but its implementation does work with function values.
      {
        find: /^(~@|@)\/(.*)/,
        replacement(_str: string, _$1: string, $2: string) {
fxy060608's avatar
fxy060608 已提交
44
          return normalizePath(path.resolve(options.inputDir, $2))
fxy060608's avatar
fxy060608 已提交
45
        },
46
        customResolver,
fxy060608's avatar
fxy060608 已提交
47 48
      },
    ],
49
    extensions,
50 51
  }
}