index.ts 1.4 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1
import { Plugin, ResolvedConfig } from 'vite'
2
import { formatMsg, checkUpdate, isWindows } from '@dcloudio/uni-cli-shared'
3
import { VitePluginUniResolvedOptions } from '..'
fxy060608's avatar
fxy060608 已提交
4 5 6 7

import { initEnv } from './env'
import { initOptions } from './options'
import { initPlugins } from './plugins'
8
import { customResolver } from '../config/resolve'
9 10 11

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

function initCheckUpdate() {
fxy060608's avatar
fxy060608 已提交
30 31 32 33 34 35 36
  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 已提交
37
}
fxy060608's avatar
fxy060608 已提交
38 39 40 41 42 43 44

function initLogger({ logger }: ResolvedConfig) {
  const { error } = logger
  logger.error = (msg, opts) => {
    return error(formatMsg(msg), opts)
  }
}