@vitejs/plugin-vue-jsx 不支持装饰器语法,所以换成@vitejs/plugin-vue-jsx插件,不需要任何配置就可以了

This commit is contained in:
编码猿
2025-09-19 13:12:17 +08:00
parent b3718c4097
commit 32d40e1fa3
4 changed files with 41 additions and 49 deletions

View File

@@ -3,9 +3,6 @@
"version": "0.0.0",
"private": true,
"type": "module",
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"scripts": {
"dev": "vite",
"dep": "concurrently \"npm run build\" \"npm run preview\"",
@@ -20,15 +17,12 @@
"vue-router": "^4.0.6"
},
"devDependencies": {
"@abraham/reflection": "^0.13.0",
"@originjs/vite-plugin-federation": "^1.4.1",
"@types/node": "^24.5.2",
"@vue3-oop/plugin-vue-jsx": "^1.5.1",
"injection-js": "^2.5.0",
"tslib": "^2.8.1",
"typescript": "~5.8.0",
"vite": "^7.0.6",
"vite-plugin-vue-devtools": "^8.0.0",
"vue3-oop": "^1.2.1"
"vite-plugin-vue-devtools": "^8.0.0"
}
}

View File

@@ -1,5 +1,4 @@
// import './assets/main.css'
import '@abraham/reflection'
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App'

View File

@@ -53,7 +53,7 @@ export default class Home extends Vue {
item: (val: ListItemType) => <li key={ val.id }>{ val.title }</li>
} }
</Header>
{ this.testHtml }
{ this.testHtml() }
</div>
)
}

View File

@@ -1,47 +1,46 @@
import {fileURLToPath, URL} from 'node:url'
import { fileURLToPath, URL } from 'node:url'
import {defineConfig} from 'vite'
import { defineConfig } from 'vite'
import vueJsx from '@vue3-oop/plugin-vue-jsx'
import federation from '@originjs/vite-plugin-federation';
export default defineConfig({
server: {
port: 1300,
host: '0.0.0.0',
strictPort: true,
},
plugins: [
vueJsx(),
federation({
name: 'mainApp', // 主应用模块名(联邦模块需通过此名引用)
remotes: { // 配置远程联邦模块地址(开发/生产需对应)
product: 'http://localhost:1301/assets/remoteEntry.js',
shared: 'http://localhost:1333/assets/remoteEntry.js'
},
shared: {
vue: { requiredVersion: '^3.5.18' },
'vue-router': { requiredVersion: '^4.0.6' },
pinia: { requiredVersion: '^3.0.3' }
}
})
],
build: {
target: 'esnext',
minify: false,
cssCodeSplit: true,
rollupOptions: {
output: {
minifyInternalExports: false
}
}
},
resolve: {
alias: {
'@': fileURLToPath(new URL('./src/app/', import.meta.url)),
'@shared': fileURLToPath(new URL('./src/shared/', import.meta.url)),
'@features': fileURLToPath(new URL('./src/features/', import.meta.url)),
'@domains': fileURLToPath(new URL('./src/domains/', import.meta.url))
server: {
port: 1300,
host: '0.0.0.0',
strictPort: true,
},
plugins: [
vueJsx(),
federation({
name: 'mainApp', // 主应用模块名(联邦模块需通过此名引用)
remotes: { // 配置远程联邦模块地址(开发/生产需对应)
product: 'http://localhost:1301/assets/remoteEntry.js',
shared: 'http://localhost:1333/assets/remoteEntry.js'
},
shared: {
vue: { requiredVersion: '^3.5.18' },
'vue-router': { requiredVersion: '^4.0.6' },
pinia: { requiredVersion: '^3.0.3' }
}
})
],
build: {
target: 'esnext',
minify: false,
cssCodeSplit: true,
rollupOptions: {
output: {
minifyInternalExports: false
}
}
},
resolve: {
alias: {
'@': fileURLToPath(new URL('./src/app/', import.meta.url)),
'@shared': fileURLToPath(new URL('./src/shared/', import.meta.url)),
'@features': fileURLToPath(new URL('./src/features/', import.meta.url)),
'@domains': fileURLToPath(new URL('./src/domains/', import.meta.url))
},
},
},
})