ฉันต้องการเรียกใช้ Node.JS ด้วย--harmonyธงเสมอ มีวิธีการเปิดใช้งานการตั้งค่าสถานะนี้อย่างง่ายดายหรือไม่
(หมายเหตุ: ฉันกำลังใช้งาน Windows ดังนั้นฉันมีสิทธิ์เข้าถึง Cygwin หรือ Mingw เป็นเชลล์เท่านั้น)
ฉันต้องการเรียกใช้ Node.JS ด้วย--harmonyธงเสมอ มีวิธีการเปิดใช้งานการตั้งค่าสถานะนี้อย่างง่ายดายหรือไม่
(หมายเหตุ: ฉันกำลังใช้งาน Windows ดังนั้นฉันมีสิทธิ์เข้าถึง Cygwin หรือ Mingw เป็นเชลล์เท่านั้น)
คำตอบ:
หากคุณกำลังพูดถึงการทำงานแบบโต้ตอบคุณสามารถใช้ bash aliasได้ ใส่สิ่งนี้ใน~/.bashrc:
alias node="node --harmony"
(สำหรับด้านล่าง: โปรดทราบว่าเมื่อฉันพูดว่า "executable" ฉันไม่ได้หมายถึงไบนารีหรือ "ไฟล์ exe" "Executables" รวมถึงสิ่งที่สามารถดำเนินการได้โดยไม่ต้องใช้ล่ามแปลภาษาซึ่งรวมถึงสคริปต์ที่มี shebang )
หากคุณต้องการเรียกใช้ไฟล์ปฏิบัติการเช่นภายในสคริปต์อื่นคุณสามารถสร้างเชลล์สคริปต์ที่เรียกใช้เป้าหมายด้วยค่าสถานะพิเศษ:
สร้าง a nodeHarmonyและวางไว้ในพา ธ การค้นหาของคุณเช่น/usr/local/bin:
#!/bin/sh
node --harmony "$@"
จากนั้นchmod a+xมัน
จากนั้นดำเนินการnodeHarmonyทุกครั้งที่คุณต้องการให้มีการผนวกค่าสถานะนั้น หากคุณต้องการแทนที่nodeไฟล์ปฏิบัติการคุณอาจเปลี่ยนชื่อnodeเป็นอย่างอื่น (เช่นnode_original) ตั้งชื่อสคริปต์nodeและใช้node_originalภายในสคริปต์
คุณสามารถสร้างสคริปต์ชุดงาน Windows ที่เทียบเท่าซึ่งจะทำงานนอก Cygwin / MinGW:
@echo off
node --harmony %*
นี้จะมีพฤติกรรมในทำนองเดียวกัน แต่อาจมีผลกระทบกับชุดแปลกโต้แย้งบางเพราะรายการจะได้รับการแยกวิเคราะห์เป็นครั้งที่สอง - nodeเมื่อเมื่อรันสคริปต์ชุดและครั้งภายในสคริปต์ที่เมื่อมีการดำเนิน วิธีการแก้ปัญหาบางอย่างที่นี่
หากคุณพร้อมที่จะคอมไพล์ node.js อีกครั้งบทความ วิธีรับความสามัคคีใน node.js ของคุณบอกว่า:
เมื่อคุณมีซอร์สโค้ดแล้วให้เปิด
deps/v8/src/flag-definitions.hและมองหา Line 115 เปลี่ยนค่าสถานะจาก false เป็น True:DEFINE_bool(harmony, true, "enable all harmony features")จากนั้นรวบรวมโหนด:
./configure && make && make install
เห็นได้ชัดว่าhttps://www.npmjs.org/package/setflagsสามารถใช้เพื่อตั้งค่าสถานะที่รันไทม์ แต่ฉันไม่สามารถติดตั้งได้
คุณสามารถแก้ไขไฟล์ node.js และ:
ค้นหาตัวแปรที่ตรวจสอบการตั้งค่าสำหรับ "--harmony" หรือ "harmony" สิ่งที่ต้องการ:
if (variable_name == 'harmony') ...
ตั้งค่าตัวแปรนี้ก่อนหน้าในรหัส:
var this_variable_name = 'harmony';
ทำไมคุณไม่กำหนดค่าpackage.jsonด้วยคำสั่งสคริปต์ ?
ตัวอย่างเช่นเพิ่มไปยัง package.json:
"scripts": {
"start": "node --harmony server.js"
}
จากนั้นเรียกใช้เป็น cmd (ในไดเรกทอรีโครงการ):
เริ่มต้นนาที