const fs = require('fs'); const path = require('path'); // Libraries known to have Vue 3 compatibility issues const problematicLibraries = { 'tree-table-vue': { status: 'incompatible', alternatives: ['PrimeVue TreeTable', 'Ant Design Vue Tree Table', 'Syncfusion Vue Tree Grid'] }, 'v-org-tree': { status: 'unknown', alternatives: ['vue3-organization-chart', 'vue-organization-chart'] }, 'iview-area': { status: 'unknown', alternatives: ['element-plus area picker', 'ant-design-vue cascader'] }, 'v-click-outside-x': { status: 'unknown', alternatives: ['v-click-outside for Vue 3', 'custom directive'] } }; // Libraries that are Vue 3 compatible const compatibleLibraries = { 'vuedraggable': 'Version 4.x is Vue 3 compatible', 'sortablejs': 'Framework agnostic, works with Vue 3', 'codemirror': 'Framework agnostic, works with Vue 3', 'wangeditor': 'Version 4+ works with Vue 3', 'axios': 'Framework agnostic', 'echarts': 'Framework agnostic', 'dayjs': 'Framework agnostic', 'js-cookie': 'Framework agnostic', 'socket.io-client': 'Framework agnostic', 'mitt': 'Event emitter for Vue 3', 'view-ui-plus': 'Vue 3 version of iView' }; console.log('=== Vue 3 兼容性检查报告 ===\n'); // Read package.json const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8')); const dependencies = { ...packageJson.dependencies, ...packageJson.devDependencies }; console.log('🔴 不兼容的库:'); Object.entries(problematicLibraries).forEach(([lib, info]) => { if (dependencies[lib]) { console.log(` - ${lib} (${dependencies[lib]}): ${info.status}`); console.log(` 替代方案: ${info.alternatives.join(', ')}`); } }); console.log('\n🟡 需要验证的库:'); Object.entries(problematicLibraries).forEach(([lib, info]) => { if (dependencies[lib] && info.status === 'unknown') { console.log(` - ${lib} (${dependencies[lib]}): 需要测试验证`); } }); console.log('\n✅ 已兼容的库:'); Object.entries(compatibleLibraries).forEach(([lib, note]) => { if (dependencies[lib]) { console.log(` - ${lib} (${dependencies[lib]}): ${note}`); } }); // Check for potential issues in code console.log('\n📋 代码检查建议:'); console.log(' 1. 检查所有 beforeDestroy 生命周期钩子是否已更新为 beforeUnmount'); console.log(' 2. 检查所有 slot-scope 是否已更新为 v-slot'); console.log(' 3. 检查所有 /deep/ 和 >>> 是否已更新为 :deep()'); console.log(' 4. 检查所有 $listeners 是否已移除或更新'); console.log(' 5. 检查所有事件处理器命名 (如 @on-change 改为 @change)');