import path from 'path' import { UserConfig } from 'vite' import { isWindows, EXTNAME_VUE } from '@dcloudio/uni-cli-shared' import { VitePluginUniResolvedOptions } from '..' export function customResolver(updatedId: string) { if (isWindows) { return path.resolve(process.env.UNI_INPUT_DIR, updatedId) } return updatedId } export function createResolve( options: VitePluginUniResolvedOptions, _config: UserConfig ): UserConfig['resolve'] { return { // 必须使用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) { return path.resolve(options.inputDir, $2) }, customResolver, }, ], extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'].concat( EXTNAME_VUE ), } }