ฉันใช้ Sublime Text เป็นโปรแกรมแก้ไขข้อความ
มี jsFormat สำหรับจัดรูปแบบไฟล์ javascript แต่ฉันไม่พบไฟล์สำหรับ JSX
พวกคุณจัดการกับการฟอร์แมต JSX อย่างไร?
ฉันใช้ Sublime Text เป็นโปรแกรมแก้ไขข้อความ
มี jsFormat สำหรับจัดรูปแบบไฟล์ javascript แต่ฉันไม่พบไฟล์สำหรับ JSX
พวกคุณจัดการกับการฟอร์แมต JSX อย่างไร?
คำตอบ:
อัปเดต 4
ตรวจสอบที่สวยกว่าซึ่งไม่สามารถกำหนดค่าได้เป็น esformatter แต่ปัจจุบันใช้เพื่อจัดรูปแบบโครงการขนาดใหญ่บางโครงการ ( เช่น React เอง )
อัปเดต 3
ตรวจสอบประเสริฐ jsfmt หากคุณเพิ่มesformatter-jsxลงใน config และติดตั้งแพ็กเกจภายใน forlder สำหรับ sublime-jsfmt คุณจะสามารถฟอร์แมตไฟล์ JSX ได้โดยตรงจาก Sublime นี่คือคำแนะนำสำหรับสิ่งนั้น
อัปเดต 2
จากบรรทัดคำสั่งคุณยังสามารถใช้esbeautifier เป็นกระดาษห่อหุ้มรอบesformatterที่ยอมรับรายการ globs เพื่อจัดรูปแบบ
# install the dependencies globally
npm i -g esbeautifier
# beautify the files under src/ and specs/ both .js and .jsx
esbeautifier src/**/*.js* specs/**/*.js*
อัปเดต
ดังนั้นฉันจึงทำปลั๊กอินสำหรับesformatterเพื่อเปิดใช้งานการจัดรูปแบบไฟล์ JSX:
https://www.npmjs.com/package/esformatter-jsx
นี่คือการสาธิตสดบน requirebin
มันควรจะเป็นไปได้ที่จะเรียกesformatterจาก Sublime ผ่านไฟล์ปัจจุบันเป็นอาร์กิวเมนต์ ไม่ว่าในกรณีใด ๆ ในการใช้งานจากบรรทัดคำสั่งคุณสามารถทำตามคำแนะนำเหล่านี้:
จากบรรทัดคำสั่งสามารถใช้ได้ดังนี้:
# install the dependencies globally
npm i -g esformatter esformatter-jsx
# call it (this will print to stdout)
esformatter --plugins=esformatter-jsx ./path/to/your/file
# to actually modify the file
esformatter --plugins=esformatter-jsx ./path/to/your/file > ./path/to/your/file
# to specify a config file (where you can also specify the plugins)
# check esformatter for more info about the configuration options
esformatter -c ./path/to/.esformatter ./path/to/your/file > ./path/to/your/file
==== คำตอบเก่าด้านล่าง ===
ดังนั้นหากสิ่งที่คุณกำลังมองหาคือการทำให้ไฟล์ jsx ของคุณถูกจัดรูปแบบในขณะที่อนุญาตให้ใช้jsx
ไวยากรณ์ (โดยทั่วไปจะทำให้ไวยากรณ์ของ javascript ทั้งหมดสวยงามและละเว้นjsx
แท็กซึ่งหมายความว่าปล่อยให้เป็นอยู่) นี่คือสิ่งที่ฉันกำลังใช้esformatter
// needed for grunt.file.expand
var grunt = require('grunt');
// use it with care, I haven't check if there
// isn't any side effect from using proxyquire to
// inject esprima-fb into the esformatter
// but this type of dependency replacement
// seems to be very fragile... if rocambole deps change
// this will certainly break, same is true for esformatter
// use it with care
var proxyquire = require('proxyquire');
var rocambole = proxyquire('rocambole', {
'esprima': require('esprima-fb')
});
var esformatter = proxyquire('esformatter', {
rocambole: rocambole
});
// path to your esformatter configuration
var cfg = grunt.file.readJSON('./esformatter.json');
// expand the files from the glob
var files = grunt.file.expand('./js/**/*.jsx');
// do the actual formatting
files.forEach(function (fIn) {
console.log('formatting', fIn);
var output = esformatter.format(grunt.file.read(fIn), cfg);
grunt.file.write(fIn, output);
});
ฉันต้องการให้ esformatter ใช้ rocambole เวอร์ชันที่ใช้ esprima-fb แทน esprima เพื่อหลีกเลี่ยง proxyquire
มีการตั้งค่าในปลั๊กอิน HTML-CSS-JS Prettify ที่อนุญาตให้คุณละเว้นไวยากรณ์ xml ในไฟล์ js / jsx วิธีนี้จะไม่ทำให้โค้ด jsx ยุ่ง การตั้งค่าคือ"e4x": true
ในส่วน "js" ของไฟล์การตั้งค่า
ค่ากำหนด> การตั้งค่าแพ็คเกจ> HTML \ CSS \ JS Prettify> ตั้งค่า Prettify Preferences
วิธีนี้ใช้ไม่ได้ผลหากคุณมีแท็กปิดตัวเองเช่น แท็กที่ลงท้ายด้วย />
/>
ในรหัสของฉัน แต่ยังใช้ไม่ได้
คุณสามารถติดตั้งแพ็คเกจ JsPrettier สำหรับ Sublime 2 & 3 ได้ซึ่งเป็นฟอร์แมตเตอร์ JavaScript ที่ค่อนข้างใหม่ (ณ เวลาที่เขียนสิ่งนี้: ก.พ. 2017) รองรับการพัฒนาล่าสุดส่วนใหญ่เช่น ES2017, JSX และ Flow
เริ่มต้นอย่างรวดเร็ว
$ npm install -g prettier
{ "keys": ["super+b"], "command": "js_prettier" }
ลิงค์:
หากต้องการเพิ่มสิ่งที่ @Shoobah กล่าว:
มีการตั้งค่าในปลั๊กอิน HTML-CSS-JS Prettify ที่อนุญาตให้คุณละเว้นไวยากรณ์ xml ในไฟล์ js / jsx วิธีนี้จะไม่ทำให้โค้ด jsx เสียหาย การตั้งค่าคือ "e4x": true ในส่วน "js" ของไฟล์การตั้งค่า
ไปที่: Preferences> Package Settings> HTML \ CSS \ JS Prettify> Set Prettify Preferences
ไปที่ส่วน "js":
เพิ่ม "jsx" ใน "allow_file_extension" จากนั้นเปลี่ยน "e4x" เป็น "true"
คำตอบในอินเทอร์เน็ตที่บอกให้คุณตั้งค่า 'e4x' เป็นจริงเสมอ แต่บางครั้งเราต้องตั้งค่าตัวเลือกของ 'format_on_save_extensions' จากนั้นเพิ่ม 'jsx' ในอาร์เรย์
แก้ไข jsFormat.sublime-settings
{
"e4x": true,
"format_on_save": true,
"format_on_save_extensions": ["js", "json", "jsx"]
}
"format_on_save_extensions": ["js", "json", "jsx"]
เพื่อที่จะสามารถปรับเปลี่ยน สิ่งที่ใกล้เคียงที่สุดที่ฉันพบเกี่ยวกับนามสกุลไฟล์คือ"js": { "allowed_file_extensions": ["js", "json",...]
ไม่ใช่เฉพาะสำหรับ Sublime Text แต่มีตัวตกแต่งใน JavaScript สำหรับ React JSX
http://prettydiff.com/?m=beautifyอ้างว่าสนับสนุน JSX ที่: http://prettydiff.com/guide/react_jsx.xhtml