提交 cfb9ca61 编写于 作者: fxy060608's avatar fxy060608

fix(cli): vue plugin

上级 0fd6dd30
......@@ -42,13 +42,13 @@ function uniMainJsPlugin() {
}
exports.uniMainJsPlugin = uniMainJsPlugin;
function createApp(code) {
return `import { plugin } from '@dcloudio/uni-h5';createApp().app.use(plugin).mount("#app");${code.replace('createSSRApp', 'createVueApp as createSSRApp')}`;
return `import { plugin as __plugin } from '@dcloudio/uni-h5';createApp().app.use(__plugin).mount("#app");${code.replace('createSSRApp', 'createVueApp as createSSRApp')}`;
}
function createLegacyApp(code) {
return `import { plugin } from '@dcloudio/uni-h5';function createApp(rootComponent,rootProps){return createVueApp(rootComponent, rootProps).use(plugin)};${code.replace('createApp', 'createVueApp')}`;
return `import { plugin as __plugin } from '@dcloudio/uni-h5';function createApp(rootComponent,rootProps){return createVueApp(rootComponent, rootProps).use(__plugin)};${code.replace('createApp', 'createVueApp')}`;
}
function createSSRClientApp(code) {
return `import { plugin } from '@dcloudio/uni-h5';import { UNI_SSR, UNI_SSR_STORE } from '@dcloudio/uni-shared';const { app: __app, store: __store } = createApp();__app.use(plugin);__store && window[UNI_SSR] && window[UNI_SSR][UNI_SSR_STORE] && __store.replaceState(window[UNI_SSR][UNI_SSR_STORE]);__app.router.isReady().then(() => __app.mount("#app"));${code}`;
return `import { plugin as __plugin } from '@dcloudio/uni-h5';import { UNI_SSR, UNI_SSR_STORE } from '@dcloudio/uni-shared';const { app: __app, store: __store } = createApp();__app.use(__plugin);__store && window[UNI_SSR] && window[UNI_SSR][UNI_SSR_STORE] && __store.replaceState(window[UNI_SSR][UNI_SSR_STORE]);__app.router.isReady().then(() => __app.mount("#app"));${code}`;
}
function createSSRServerApp(code) {
return code;
......
......@@ -38,21 +38,21 @@ export function uniMainJsPlugin() {
}
function createApp(code: string) {
return `import { plugin } from '@dcloudio/uni-h5';createApp().app.use(plugin).mount("#app");${code.replace(
return `import { plugin as __plugin } from '@dcloudio/uni-h5';createApp().app.use(__plugin).mount("#app");${code.replace(
'createSSRApp',
'createVueApp as createSSRApp'
)}`
}
function createLegacyApp(code: string) {
return `import { plugin } from '@dcloudio/uni-h5';function createApp(rootComponent,rootProps){return createVueApp(rootComponent, rootProps).use(plugin)};${code.replace(
return `import { plugin as __plugin } from '@dcloudio/uni-h5';function createApp(rootComponent,rootProps){return createVueApp(rootComponent, rootProps).use(__plugin)};${code.replace(
'createApp',
'createVueApp'
)}`
}
function createSSRClientApp(code: string) {
return `import { plugin } from '@dcloudio/uni-h5';import { UNI_SSR, UNI_SSR_STORE } from '@dcloudio/uni-shared';const { app: __app, store: __store } = createApp();__app.use(plugin);__store && window[UNI_SSR] && window[UNI_SSR][UNI_SSR_STORE] && __store.replaceState(window[UNI_SSR][UNI_SSR_STORE]);__app.router.isReady().then(() => __app.mount("#app"));${code}`
return `import { plugin as __plugin } from '@dcloudio/uni-h5';import { UNI_SSR, UNI_SSR_STORE } from '@dcloudio/uni-shared';const { app: __app, store: __store } = createApp();__app.use(__plugin);__store && window[UNI_SSR] && window[UNI_SSR][UNI_SSR_STORE] && __store.replaceState(window[UNI_SSR][UNI_SSR_STORE]);__app.router.isReady().then(() => __app.mount("#app"));${code}`
}
function createSSRServerApp(code: string) {
......
......@@ -2,8 +2,8 @@ import path from 'path'
import { Plugin, UserConfig } from 'vite'
import {
initPreContext,
normalizePath,
// initPreContext,
// normalizePath,
parseManifestJsonOnce,
} from '@dcloudio/uni-cli-shared'
......@@ -21,23 +21,20 @@ import {
initPluginVueOptions,
} from '../vue'
function normalizeRoot(config: UserConfig) {
return normalizePath(config.root ? path.resolve(config.root) : process.cwd())
}
// function normalizeRoot(config: UserConfig) {
// return normalizePath(config.root ? path.resolve(config.root) : process.cwd())
// }
// function normalizeInputDir(config: UserConfig) {
// return process.env.UNI_INPUT_DIR || path.resolve(normalizeRoot(config), 'src')
// }
function normalizeInputDir(config: UserConfig) {
return process.env.UNI_INPUT_DIR || path.resolve(normalizeRoot(config), 'src')
}
export function createConfig(
options: VitePluginUniResolvedOptions,
uniPlugins: Plugin[]
): Plugin['config'] {
return (config, env) => {
options.command = env.command
options.platform = (process.env.UNI_PLATFORM as UniApp.PLATFORM) || 'h5'
options.inputDir = normalizeInputDir(config)
initPreContext(options.platform)
let base = config.base
if (!base) {
......@@ -48,12 +45,14 @@ export function createConfig(
base = '/'
}
options.base = base!
// TODO 似乎没必要
options.vueOptions = initPluginVueOptions(options, uniPlugins)
options.vueJsxOptions = initPluginVueJsxOptions(options)
options.viteLegacyOptions = initPluginViteLegacyOptions(options)
return {
base,
root: process.env.VITE_ROOT_DIR,
publicDir: config.publicDir || false,
define: createDefine(options),
resolve: createResolve(options, config),
......
......@@ -2,7 +2,6 @@ import debug from 'debug'
import { extend } from '@vue/shared'
import { Plugin, ResolvedConfig } from 'vite'
import { FilterPattern } from '@rollup/pluginutils'
import vue from '@vitejs/plugin-vue'
import { COMMON_EXCLUDE } from '@dcloudio/uni-cli-shared'
......@@ -47,7 +46,6 @@ export function initPlugins(
) {
const command = config.command
const plugins = config.plugins as Plugin[]
addPlugin(plugins, vue(options.vueOptions), 'vite:uni', 'pre')
addPlugin(plugins, uniResolveIdPlugin(options), 'vite:resolve', 'pre')
......
......@@ -3,15 +3,17 @@ import { Plugin, ResolvedConfig, ViteDevServer } from 'vite'
import { Options as VueOptions } from '@vitejs/plugin-vue'
import { Options as ViteLegacyOptions } from '@vitejs/plugin-legacy'
import { VueJSXPluginOptions } from '@vue/babel-plugin-jsx'
import VueJsxPlugin from '@vitejs/plugin-vue-jsx'
import ViteLegacyPlugin from '@vitejs/plugin-legacy'
import vuePlugin from '@vitejs/plugin-vue'
import type VueJsxPlugin from '@vitejs/plugin-vue-jsx'
import type ViteLegacyPlugin from '@vitejs/plugin-legacy'
import { initModuleAlias } from '@dcloudio/uni-cli-shared'
import { initModuleAlias, initPreContext } from '@dcloudio/uni-cli-shared'
import { createConfig } from './config'
import { createConfigResolved } from './configResolved'
import { createConfigureServer } from './configureServer'
import { initExtraPlugins } from './utils'
import { initPluginVueOptions } from './vue'
const debugUni = debug('vite:uni:plugin')
......@@ -62,6 +64,12 @@ export default function uniPlugin(
command: 'serve',
platform: 'h5',
}
options.platform = (process.env.UNI_PLATFORM as UniApp.PLATFORM) || 'h5'
options.inputDir = process.env.UNI_INPUT_DIR
initPreContext(options.platform)
const plugins: Plugin[] = []
if (createViteLegacyPlugin && options.viteLegacyOptions !== false) {
......@@ -75,6 +83,7 @@ export default function uniPlugin(
if (createVueJsxPlugin && options.vueJsxOptions !== false) {
plugins.push(createVueJsxPlugin(options.vueJsxOptions))
}
const uniPlugins = initExtraPlugins(
process.env.UNI_CLI_CONTEXT || process.cwd(),
(process.env.UNI_PLATFORM as UniApp.PLATFORM) || 'h5'
......@@ -87,5 +96,8 @@ export default function uniPlugin(
configureServer: createConfigureServer(options),
})
plugins.push(...uniPlugins)
plugins.unshift(vuePlugin(initPluginVueOptions(options, uniPlugins)))
return plugins
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册