reactjs - วิธีการแชร์คอมโพเนนต์ของ React ข้ามหลายโปรเจกต์?
ฉันมีคอมโพเนนต์ React ไม่กี่ตัวในโปรเจกต์หนึ่งที่ฉันต้องการนำไปใช้ในอีกไม่กี่โปรเจกต์ React อะไรจะเป็นวิธีที่ดีที่สุดในการแชร์คอมโพเนนต์เหล่านี้ข้ามโปรเจกต์ต่าง ๆ ? ฉันรู้ว่าเราสามารถใช้บางอย่างเช่น Bitly ในการทำได้ แต่มีวิธีเปิดแหล่งอื่นเช่น Git Submodules เพื่อแชร์คอมโพเนนต์ข้ามหลายโปรเจกต์หรือไม่
คำตอบ #1
วิธีหนึ่งที่ใช้ได้ผลสำหรับฉันคือการกำหนดคอมโพเนนต์ในแอป React (โดยใช้ create-react-app), นำแอป React ทั้งหมดนั้นไปที่ Github, และใช้ npm install เพื่อติดตั้งมันเป็น dependency ฉันขอแนะนำอย่างยิ่งให้คุณดูแหล่งข้อมูลนี้ซึ่งอธิบายอย่างละเอียดเกี่ยวกับการเตรียมคอมโพเนนต์ React สำหรับกระบวนการนี้ ทำตามขั้นตอนในบทแนะนำที่เชื่อมโยงถึงข้อ #3 จากนั้นนำทุกอย่าง (รวมถึงโฟลเดอร์ /dist) ไปที่ Github หลังจากนั้น, ทำ npm install org_name/repo_name และติดตั้งมันเป็น dependency ในแอป React ที่สองของคุณ จากนั้น, เพื่อการนำเข้าคอมโพเนนต์เฉพาะ คุณสามารถทำได้ประมาณนี้ import { Button } from 'repo_name/dist/index' หรืออ้างอิงไปยังไฟล์ใด ๆ ที่คุณใช้เพื่อส่งออกคอมโพเนนต์ของคุณ
ในกรณีที่ลิงก์ไม่ทำงาน นี่คือขั้นตอนในบทความ:
- สร้างโฟลเดอร์ชื่อ
libที่เก็บคอมโพเนนต์ทั้งหมดที่คุณต้องการนำไปใช้ในแอป React อื่น นอกจากนี้ให้สร้างไฟล์ชื่อindex.jsในโฟลเดอร์นี้ที่ทำหน้าที่ส่งออกคอมโพเนนต์เหล่านี้ - สร้างรีโปสำหรับคอมโพเนนต์บน Github
- ติดตั้ง Babel และสร้างโฟลเดอร์
dist(npm install --save-dev @babel/core @babel/cli @babel/preset-envและnpm install -save @babel/polyfill) - เพิ่มไฟล์คอนฟิกต่อไปนี้ไปยังโฟลเดอร์ระดับบนสุดของโครงการของคุณ:
{
"presets": [
[
"@babel/env",
{
"targets": {
"edge": "17",
"firefox": "60",
"chrome": "67",
"safari": "11.1"
},
"useBuiltIns": "usage",
"corejs": "3.6.5"
}
],
"@babel/preset-react"
]
}
- ในไฟล์ package.json ให้แทนที่สคริปต์ build ด้วยสิ่งต่อไปนี้:
"build": "rm -rf dist && NODE_ENV=production babel src/lib --out-dir dist --copy-files"; - รันคำสั่ง
npm run build
คำตอบ #2
มีหลายวิธีขึ้นอยู่กับการตั้งค่าของคุณ ตามที่ @Alex Wayne แนะนำ วิธีที่ง่ายที่สุดคือการใช้ monorepo หากการตั้งค่าของคุณไม่อนุญาต คุณสามารถเผยแพ็คเกจไปยัง npm ได้ หากคุณไม่สามารถหรือไม่ต้องการสร้างแพ็คเกจสาธารณะ คุณสามารถเผยแพ็คเกจส่วนตัว (ด้วยบัญชีที่ชำระเงิน) หรือใช้รีจิสทรีแพ็คเกจส่วนตัว เช่น GitHub packages นอกจากนี้ยังมีโซลูชันที่คุณจัดการรีจิสทรีแพ็คเกจเองได้ หากคุณต้องการประหยัดเงินบางส่วนแลกกับการทำงานเพิ่มเติม.
แก้ไข 2023: ตอนนี้ดูเหมือนว่า Github packages จะมีแผนฟรีสำหรับรีโพสิตอรีส่วนตัวแล้ว ขอบคุณ @Taig ที่ชี้ให้เห็นเรื่องนี้
