index.ts 1.5 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1
import { Plugin, ResolvedConfig } from 'vite'
fxy060608's avatar
fxy060608 已提交
2 3 4 5 6 7
import {
  formatErrMsg,
  checkUpdate,
  isWindows,
  formatInfoMsg,
} from '@dcloudio/uni-cli-shared'
8
import { VitePluginUniResolvedOptions } from '..'
fxy060608's avatar
fxy060608 已提交
9 10 11 12

import { initEnv } from './env'
import { initOptions } from './options'
import { initPlugins } from './plugins'
13
import { customResolver } from '../config/resolve'
14 15 16

export function createConfigResolved(options: VitePluginUniResolvedOptions) {
  return ((config) => {
fxy060608's avatar
fxy060608 已提交
17
    initEnv(config)
fxy060608's avatar
fxy060608 已提交
18
    initLogger(config)
fxy060608's avatar
fxy060608 已提交
19 20
    initOptions(options, config)
    initPlugins(config, options)
fxy060608's avatar
fxy060608 已提交
21
    initCheckUpdate()
22 23 24
    if (isWindows) {
      // TODO 等 https://github.com/vitejs/vite/issues/3331 修复后,可以移除下列代码
      const item = config.resolve.alias.find((item) =>
fxy060608's avatar
fxy060608 已提交
25
        typeof item.find !== 'string' ? item.find.test('@/') : false
26 27 28 29 30
      )
      if (item) {
        item.customResolver = customResolver
      }
    }
31 32
  }) as Plugin['configResolved']
}
fxy060608's avatar
fxy060608 已提交
33 34

function initCheckUpdate() {
fxy060608's avatar
fxy060608 已提交
35 36 37 38 39 40 41
  const pkg = require('@dcloudio/vite-plugin-uni/package.json')
  checkUpdate({
    inputDir: process.env.UNI_INPUT_DIR,
    compilerVersion:
      (pkg['uni-app'] && pkg['uni-app']['compilerVersion']) || '',
    versionType: pkg.version.includes('alpha') ? 'a' : 'r',
  })
fxy060608's avatar
fxy060608 已提交
42
}
fxy060608's avatar
fxy060608 已提交
43 44

function initLogger({ logger }: ResolvedConfig) {
fxy060608's avatar
fxy060608 已提交
45 46 47 48 49 50 51
  const { info, error } = logger
  logger.info = (msg, opts) => {
    msg = formatInfoMsg(msg)
    if (msg) {
      return info(msg, opts)
    }
  }
fxy060608's avatar
fxy060608 已提交
52
  logger.error = (msg, opts) => {
fxy060608's avatar
fxy060608 已提交
53 54 55 56
    msg = formatErrMsg(msg)
    if (msg) {
      return error(msg, opts)
    }
fxy060608's avatar
fxy060608 已提交
57 58
  }
}