unplugin-check-syntax
ปลั๊กอินตรวจสอบไวยากรณ์ที่ใช้งานได้ทั่วไป รองรับเครื่องมือสร้างหลายแบบ (Webpack, Vite, Rollup, esbuild, Rspack ฯลฯ) สำหรับตรวจสอบความเข้ากันได้ของไวยากรณ์ ECMAScript ในไฟล์ JavaScript และ HTML ปลั๊กอินนี้อ้างอิงจาก rsbuild-plugin-check-syntax
คุณสมบัติ
- 🔧 รองรับเครื่องมือสร้างหลายแบบ: รองรับ Webpack, Vite, Rollup, esbuild, Rspack ฯลฯ
- 📝 รองรับหลายประเภทไฟล์: รองรับไฟล์ JavaScript และสคริปต์แบบอินไลน์ในไฟล์ HTML
- 🎯 ระบุจุดผิดพลาดได้แม่นยำ: รองรับ sourcemap สามารถย้อนกลับไปยังตำแหน่งไฟล์ต้นฉบับได้
- ⚙️ ปรับแต่งได้ยืดหยุ่น: รองรับการยกเว้นไฟล์, การเพิ่มไฟล์แบบกำหนดเอง, การกรองประเภทข้อผิดพลาด ฯลฯ
- 📁 ค้นหาไฟล์อย่างชาญฉลาด: รองรับโหมด glob เพื่อเพิ่มไฟล์ JS/HTML เพิ่มเติมด้วยตนเอง
- 🌐 ผสานกับ Browserslist: รองรับการแปลงค่าการตั้งค่า browserslist ไปเป็นเวอร์ชัน ECMAScript อัตโนมัติ
การติดตั้ง
npm install @winner-fed/unplugin-check-syntax --save-dev
วิธีการใช้งาน
Vite
// vite.config.ts
import { defineConfig } from 'vite'
import checkSyntax from '@winner-fed/unplugin-check-syntax/vite'export default defineConfig({
plugins: [
checkSyntax({
targets: ['> 1%', 'last 2 versions'],
// 或者直接指定 ECMAScript 版本
// ecmaVersion: 'es2015'
}),
],
})
เว็บแพ็ค
// webpack.config.js
const checkSyntax = require('@winner-fed/unplugin-check-syntax/webpack')module.exports = {
plugins: [
checkSyntax({
targets: ['> 1%', 'last 2 versions'],
}),
],
}
โรลอัป
// rollup.config.js
import checkSyntax from '@winner-fed/unplugin-check-syntax/rollup'export default {
plugins: [
checkSyntax({
targets: ['> 1%', 'last 2 versions'],
}),
],
}
esbuild
// esbuild.config.js
const { build } = require('esbuild')
const checkSyntax = require('@winner-fed/unplugin-check-syntax/esbuild')build({
plugins: [
checkSyntax({
targets: ['> 1%', 'last 2 versions'],
}),
],
})
Rspack
อาร์เอสแพ็ค
// rspack.config.js
const checkSyntax = require('@winner-fed/unplugin-check-syntax/rspack')module.exports = {
plugins: [
checkSyntax({
targets: ['> 1%', 'last 2 versions'],
}),
],
}
ตัวเลือกการกำหนดค่า
interface CheckSyntaxOptions {
/
- 目标浏览器范围,使用 browserslist 格式
*/
targets?: string[];
/
- 直接指定 ECMAScript 版本(优先级高于 targets)
*/
ecmaVersion?: 'es3' | 'es5' | 'es2015' | 'es2016' | 'es2017' | 'es2018' | 'es2019' | 'es2020' | 'es2021' | 'es2022' | 'latest';
/
- 排除源文件检查,支持正则表达式
*/
exclude?: RegExp | RegExp[];
/
- 排除输出文件检查,支持正则表达式
*/
excludeOutput?: RegExp | RegExp[];
/
- 手动包含额外的 JS 或 HTML 文件进行语法检查
- 支持文件路径(相对于项目根目录)或 glob 模式
*/
include?: string[];
/
- 排除特定的错误日志类型
*/
excludeErrorLogs?: ('source' | 'output' | 'reason' | 'code')[];
}
ตัวอย่างการใช้งาน
การตั้งค่าพื้นฐาน
// 使用 browserslist 配置
checkSyntax({
targets: ['> 1%', 'last 2 versions', 'not dead'],
})// 直接指定 ECMAScript 版本
checkSyntax({
ecmaVersion: 'es2015',
})
ไฟล์ที่ยกเว้น
checkSyntax({
targets: ['> 1%', 'last 2 versions'],
// 排除 node_modules 和测试文件
exclude: [/node_modules/, /\.test\.js$/],
// 排除特定输出文件
excludeOutput: [/vendor\.js$/],
})
รวมไฟล์เพิ่มเติม
checkSyntax({
targets: ['> 1%', 'last 2 versions'],
// 手动包含额外的文件进行检查
include: [
'src/legacy//*.js', // 包含 legacy 目录下的所有 JS 文件
'public/scripts/app.js', // 包含特定的公共脚本文件
'docs//*.html', // 包含文档中的 HTML 文件
'/absolute/path/to/file.js' // 支持绝对路径
],
})
การแสดงข้อผิดพลาดแบบกำหนดเอง
checkSyntax({
targets: ['> 1%', 'last 2 versions'],
// 只显示错误原因,不显示代码片段
excludeErrorLogs: ['code', 'output'],
})
คู่มือการย้าย
หากคุณกำลังย้ายจาก @rsbuild/plugin-check-syntax
- import { pluginCheckSyntax } from '@rsbuild/plugin-check-syntax'
+ import checkSyntax from '@winner-fed/unplugin-check-syntax/vite' // 或其他构建工具export default defineConfig({
plugins: [
- pluginCheckSyntax({
+ checkSyntax({
targets: ['> 1%', 'last 2 versions'],
}),
],
})
หลักการทำงาน
- ตรวจสอบหลังการสร้าง: ปลั๊กอินจะตรวจสอบไฟล์ผลลัพธ์หลังจากการสร้างเสร็จสิ้น
- วิเคราะห์ไวยากรณ์: ใช้ตัวแปลความหมาย Acorn เพื่อตรวจสอบไวยากรณ์ JavaScript
- ตรวจสอบความเข้ากันได้: ตรวจสอบความเข้ากันได้ของไวยากรณ์ตามเวอร์ชัน ECMAScript ที่กำหนดไว้
- รายงานข้อผิดพลาด: ให้ข้อมูลข้อผิดพลาดโดยละเอียด รวมถึงตำแหน่งไฟล์และส่วนของซอร์สโค้ด
- รองรับ Sourcemap: หากมี sourcemap จะย้อนกลับไปยังไฟล์ต้นฉบับดั้งเดิม
ใบอนุญาต
MIT License
การมีส่วนร่วม
ยินดีต้อนรับการส่ง Issue และ Pull Request!
--- Tranlated By Open Ai Tx | Last indexed: 2025-07-21 ---