| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/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 并重新编译。');
|