#!/usr/bin/env node const fs = require('fs'); const path = require('path'); // HBuilderX 内部的 scoped.js 路径 const SCOPED_FILE = '/Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/dist/stylePlugins/scoped.js'; if (!fs.existsSync(SCOPED_FILE)) { console.error('错误:找不到 HBuilderX 的 scoped.js 文件'); console.error(`路径:${SCOPED_FILE}`); process.exit(1); } console.log(`正在修复 ${SCOPED_FILE}...`); let content = fs.readFileSync(SCOPED_FILE, 'utf8'); // 修复 1: n.spaces.before = n.spaces.after = ''; (第 40 行) content = content.replace( /n\.value = ' ';[\s\n]*n\.spaces\.before = n\.spaces\.after = '';/, `n.value = ' ';\n n.spaces = n.spaces || {}; n.spaces.before = ''; n.spaces.after = '';` ); // 修复 2: n.value = n.spaces.before = n.spaces.after = ''; (::v-deep) content = content.replace( /if \(n\.type === '::v-deep' \) \{[\s\n]*n\.value = n\.spaces\.before = n\.spaces\.after = '';[\s\n]*return false;[\s\n]*\}/, `if (n.type === '::v-deep') {\n n.value = '';\n n.spaces = { before: '', after: '' };\n return false;\n }` ); // 修复 3: node.spaces.after = ''; content = content.replace( /if \(node\) \{[\s\n]*node\.spaces\.after = '';[\s\n]\}/, `if (node) {\n node.spaces = node.spaces || {}; node.spaces.after = '';` ); // 修复 4: selector.first.spaces.before = ''; content = content.replace( /selector\.first\.spaces\.before = '';/, `if (selector.first && selector.first.spaces) { selector.first.spaces.before = ''; }` ); fs.writeFileSync(SCOPED_FILE, content, 'utf8'); console.log('✅ 修复完成!请重启 HBuilderX 并重新编译。');