check-vue-script.js 893 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/env node
  2. /**
  3. * 提取 .vue 的 <script> 块并 node --check 语法校验
  4. * 用法: node scripts/check-vue-script.js <file...>
  5. */
  6. const fs = require('fs');
  7. const cp = require('child_process');
  8. const os = require('os');
  9. const path = require('path');
  10. for (const f of process.argv.slice(2)) {
  11. if (!fs.existsSync(f)) { console.log('SKIP(not found):', f); continue; }
  12. const src = fs.readFileSync(f, 'utf8');
  13. const m = src.match(/<script>([\s\S]*?)<\/script>/);
  14. if (!m) { console.log('NO SCRIPT:', f); continue; }
  15. const tmp = path.join(os.tmpdir(), 'check_' + Math.random().toString(36).slice(2) + '.js');
  16. fs.writeFileSync(tmp, m[1], 'utf8');
  17. try {
  18. cp.execFileSync('node', ['--check', tmp], { stdio: 'pipe' });
  19. console.log('OK :', f);
  20. } catch (e) {
  21. console.log('FAIL:', f);
  22. console.log(String(e.stderr || '').slice(0, 600));
  23. }
  24. fs.unlinkSync(tmp);
  25. }