พื้นที่เก็บข้อมูลนี้มีแพลตฟอร์มต่างๆ ของแอปพลิเคชัน Deriv
ในเอกสารนี้ :
ก่อนที่จะรันหรือสนับสนุนโปรเจ็กต์นี้ คุณต้องมีการตั้งค่าแพ็คเกจต่อไปนี้ในสภาพแวดล้อมของคุณ
contribution
) แยกโครงการ
เพื่อที่จะทำงานกับแอปพลิเคชัน Deriv เวอร์ชันของคุณเอง โปรดแยกโปรเจ็กต์ไปยังที่เก็บของคุณเอง
โคลนโดยใช้ SSH
git clone [email protected]:deriv-com/deriv-app.git
ภายใน : บูรณาการ NX และ Lerna
- ค้นหาและคัดลอก nx-cloud accessToken
- ทำสำเนาของ
nx-cloud.env.example
จากไดเรกทอรีรากของโปรเจ็กต์และตั้งชื่อเป็นnx-cloud.env
และแทนที่ด้วยโทเค็นที่ให้มา
เข้าสู่ไดเรกทอรีโครงการ
cd deriv-app
ติดตั้งการพึ่งพาของคุณ:
npm run bootstrap
สร้างแพ็คเกจ:
npm run build:all
ชื่อแพ็คเกจ | เอกสาร | เวอร์ชัน |
---|---|---|
Account | - | - |
Appstore | - | |
Bot-skeleton | - | |
Bot-web-ui | - | |
Cashier | - | |
Cfd | - | |
Components | - | |
Core | - | |
Indicators | - | |
P2P | ||
Publisher | - | |
Shared | - | |
Trader | - | |
Translations | - |
แพ็คเกจทั้งหมดต้องมีสคริปต์ต่อไปนี้เพื่อดำเนินการตามที่ระบุไว้:
พารามิเตอร์แพ็คเกจ | สั่งการ | คำอธิบาย |
---|---|---|
start | รันชุดการทดสอบและสร้างที่สมบูรณ์ และเริ่มเซิร์ฟเวอร์ dev | |
serve | รันชุดบิลด์และเริ่มเซิร์ฟเวอร์ dev เมื่อให้บริการ core ให้ใช้ค่า open เสริมเป็นอาร์กิวเมนต์เพื่อเปิดเพจเฉพาะ (เช่น: npm run serve core --open=bot ) | |
build:one | รันชุดบิลด์และส่งออกผลลัพธ์เป็น dist สำหรับชื่อแพ็กเกจที่ส่งผ่าน | |
build:all | รัน build suite สำหรับแพ็คเกจทั้งหมดและส่งออกผลลัพธ์เป็น dist | |
test | รันชุดทดสอบด้วย eslint, stylelint และ jest | |
test:jest | รันเฉพาะชุดทดสอบ jest | |
test:qa | รันชุดทดสอบ e2e | |
test:performance | รันชุดทดสอบประสิทธิภาพ |
หมายเหตุ: โปรดปฏิบัติตาม README ของแต่ละแพ็คเกจที่คุณต้องการใช้งานเกี่ยวกับวิธีการตั้งค่าและสคริปต์ที่กำหนดเอง อย่างไรก็ตาม สคริปต์ข้างต้นสามารถเรียกใช้จากไดเรกทอรีรากได้ในลักษณะดังต่อไปนี้
แต่ละแพ็กเกจตั้งชื่อด้วย @deriv/
นำหน้า อย่างไรก็ตาม สำหรับสคริปต์ด้านบน คุณไม่จำเป็นต้องเพิ่ม @deriv/
นำหน้า เนื่องจากสคริปต์นำหน้าอาร์กิวเมนต์ที่ 1 ของสคริปต์ด้วย @deriv/
แล้ว อย่างไรก็ตาม หากคุณใช้ lerna
CLI โดยตรง คุณจะต้องใช้ชื่อแพ็กเกจแบบเต็ม รวมถึงคำนำหน้า @deriv/
คุณสามารถค้นหาชื่อของแพ็คเกจได้โดยไปที่โฟลเดอร์ packages
ก่อน แต่ละโฟลเดอร์ย่อยเป็นแพ็กเกจและมีไฟล์ package.json
ค่าของคีย์ name
ใน package.json
คือชื่อแพ็กเกจ
หากคุณต้องการทำงานบน Core เพียงเรียกใช้ npm run serve core
แต่สำหรับการทำงานกับแพ็คเกจอื่นๆ (เช่น Trader, Bot, P2P) ให้ดำเนินการดังต่อไปนี้:
npm run serve {package name}
ในอันแรก เช่น: npm run serve translations
, npm run serve bot
เป็นต้นnpm run serve core
ในอันที่สอง หากคุณต้องการลบโฟลเดอร์ node_modules
ออกจากโปรเจ็กต์ โปรดรัน npm run clean
จากรูทของโปรเจ็กต์
สิ่งนี้จะรัน lerna clean && rm -rf $(git rev-parse --show-toplevel)/node_modules
ภายใต้ประทุน คุณสามารถอ่านเพิ่มเติมเกี่ยวกับคำสั่ง lerna ต่างๆ (และคำสั่ง clean
) ได้ที่เอกสาร Lerna
หมายเหตุ : ในกรณีที่พบข้อผิดพลาดในการอนุญาตถูกปฏิเสธ กรุณาเรียกใช้ sudo chown -R $(whoami) .
จากรากของโครงการ
npm cache clean -f
✅ ต้องใช้ core
เพื่อรันแพ็คเกจอื่นๆ เช่น หากคุณต้องการรัน bot-web-ui คอร์จะต้องถูกสร้างอินสแตนซ์ก่อน
npm run serve core
หากสคริปต์สนับสนุน "พารามิเตอร์แพ็คเกจ" คุณสามารถระบุ {package name}
เพื่อให้สคริปต์เรียกใช้สคริปต์ได้ ในขณะนี้ คุณสามารถตั้งชื่อแพ็คเกจได้เพียง 1 ชื่อให้กับสคริปต์เท่านั้น หากคุณต้องการเรียกใช้หลายรายการ โปรด ใช้คำสั่ง lerna
ที่ใช้ภายใต้ประทุนตามเอกสาร
✅ ในการรันแพ็คเกจ bot
เพียงแค่รัน:
npm run serve bot-web-ui
✅ ในทำนองเดียวกันสำหรับ trader
(หรือแพ็คเกจอื่น ๆ ) ที่มีสคริปต์อื่น:
npm run test:stylelint trader
การปล่อยมี 2 ประเภท:
git tag staging_v20191205 -m 'release staging'
# แท็กต้องเป็นไปตามรูปแบบ RegExp /^staging.*/
git push origin staging_v20191205
git tag production_v20191205 -m 'release production'
git push origin production_v20191205
มีการเปิดตัวประเภทที่ 4: ปล่อยแพ็คเกจรีจิสทรี npm (ปัจจุบันคือ @deriv/p2p
) นี่คือ WIP แต่วิธีการปัจจุบันคือ:
@deriv
npm@deriv/p2p
)npm run publish:p2p
คำสั่งเผยแพร่แพ็คเกจที่ถูกชนทั้งหมด อย่างไรก็ตาม ขณะนี้ชื่อมีคำว่า p2p
เพื่อส่งสัญญาณสถานะ WIP และ P2P นั้นเป็นแพ็คเกจเดียวที่เผยแพร่ภายใต้ repo นี้ [{Project Code}] {Developer}/{Clickup Card ID}/{Description}
สำหรับชื่อ PR (เช่น: [COJ] evgeniy/COJ-247/Align next-button on mt5 modal
) โดยที่ [COJ] คือโค้ดโปรเจ็กต์แบบคลิกอัพการแสดงตัวอย่างการปรับใช้ลิงก์ทดสอบมีสองประเภท:
เมื่อสร้าง PR แล้ว Vercel จะสร้างลิงก์ทดสอบภายใน PR โดยอัตโนมัติ คุณสามารถใช้สิ่งนั้นเพื่อดูตัวอย่างลิงก์ทดสอบสำหรับการเปลี่ยนแปลงที่คุณทำ
หากต้องการใช้การปรับใช้ด้วยตนเอง คุณสามารถใช้ฟังก์ชัน gh-pages เพื่อสร้างลิงก์ทดสอบได้ ต่อไปนี้เป็นวิธีดำเนินการ:
gh-pages
ด้วย: npm run deploy
br_
และล้างรูท) สาขา gh-pages
ของคุณและปรับใช้กับรูทในคำสั่งเดียวด้วย npm run deploy:clean
gh-pages
ของคุณเพื่อแยกจากการปรับใช้แอปรูทและการปรับใช้โฟลเดอร์อื่น ๆ ด้วย: npm run deploy:folder br_test_folder
(ชื่อโฟลเดอร์จะต้องนำหน้าด้วย br_
)) ฉัน จะติดตั้ง แพ็คเกจ npm ในแพ็คเกจใดแพ็คเกจหนึ่งของเราได้อย่างไร
A. คุณสามารถ cd
ลงในแพ็คเกจที่คุณต้องการติดตั้ง จากนั้นรัน npm i package-name
ตามปกติ หรือเพียงแค่เรียกใช้ lerna exec
เช่น lerna exec --scope=local-package -- npm i npm-package-name
เช่น: lerna exec --scope=@deriv/translations -- npm i i18next
โปรดทราบว่าสำหรับการใช้งาน lerna
CLI โดยตรง คุณต้องมีชื่อแพ็กเกจแบบเต็ม รวมถึง @deriv/
นำหน้าด้วย
ฉัน จะถอนการติดตั้ง แพ็คเกจ npm จากแพ็คเกจใดแพ็คเกจหนึ่งของเราได้อย่างไร
ตอบ เช่นเดียวกับการติดตั้ง ยกเว้นคำสั่ง npm
ที่คุณเรียกใช้จะเป็นการ npm uninstall
(ย่อเป็น npm un
) เช่น: lerna exec --scope=@deriv/translations -- npm un i18next
ฉันจะรัน npm ci
หรือเทียบเท่าเพื่อเพิ่มการพึ่งพาตาม package-lock.json
ได้อย่างไร
A. คุณมีสองทางเลือก:
lerna exec
พร้อมกับอาร์กิวเมนต์ --scope
เป็นแพ็คเกจที่คุณต้องการเรียกใช้คำสั่ง เช่น lerna exec --scope=trader -- npm ci
cd
ลงใน packages/PACKAGE-NAME
และรัน npm ci
เช่น cd packages/trader && npm ci
งานสร้างของฉันล้มเหลวและฉันเห็นว่าเกี่ยวข้องกับ Node Sass ( node-sass
) ฉันควรทำอย่างไร
ตอบ ปัญหานี้เกิดขึ้นเมื่อ node-sass
ของคุณตั้งค่า binding.node
เป็นเวอร์ชันของโหนดที่แตกต่างจากโหนดของโปรเจ็กต์ปัจจุบัน โปรดลองทำตามลำดับต่อไปนี้:
npx lerna exec -- npm rebuild node-sass
และลองสร้างแพ็คเกจของคุณอีกครั้งnpm cache clean --force
ตามด้วย npm run clean
จากนั้น npm run bootstrap
ฉันจะสร้างไฟล์ package-lock.json
ใหม่ได้อย่างไร
เราได้เพิ่ม bootstrap:dev
ให้กับสคริปต์แล้ว หากคุณกำลังอัปเดตหรือเพิ่มแพ็คเกจและต้องการสร้างไฟล์ package-lock.json
ใหม่ คุณควรรันคำสั่งนี้ npm run bootstrap:dev