Skip to content

Workspaces

รายละเอียดเกี่ยวกับวิธีใช้ Volta ภายในสภาพแวดล้อม workspace ซึ่งมีหลายโปรเจกต์ใน repo เดียวกันและทั้งหมดต้องการใช้การตั้งค่า Volta ร่วมกัน

TIP

ฟีเจอร์นี้เพิ่มใน Volta 0.8.2 จะไม่ทำงานในเวอร์ชันก่อนหน้า

การขยายการกำหนดค่า

ภายในส่วน "volta" ใน package.json คุณสามารถระบุรายการที่มีคีย์ "extends" ค่าของรายการนั้นควรเป็นพาธไปยังไฟล์ JSON อื่นที่มีส่วน "volta" เช่นกัน พาธสัมพัทธ์จะถูกแก้ไขสัมพันธ์กับไฟล์ที่ตั้งค่า การตั้งค่า Volta ใดๆ (เช่น เวอร์ชัน "node" หรือ "yarn") จะถูกรวมกับการตั้งค่าจากไฟล์ที่ชี้โดย "extends" โดยให้ลำดับความสำคัญกับไฟล์ปัจจุบัน ดังนั้นหากคุณต้องการมีเวอร์ชัน Node เดียวกันสำหรับโปรเจกต์ทั้งหมดของคุณ คุณควรตั้งค่าเวอร์ชันเหล่านั้นที่ root และแต่ละโปรเจกต์จะต้องใช้ เพียง "extends": "../path/to/root/package.json"

ตัวอย่าง

กำหนดโครงสร้างโฟลเดอร์และเนื้อหา package.json ต่อไปนี้:

.
├── package.json
└── packages
    ├── cli
    │   └── package.json
    └── utils
        └── package.json
  • package.json
json
{
  "volta": {
    "node": "12.16.1",
    "yarn": "1.22.4"
  }
}
  • packages/cli/package.json
json
{
  "volta": {
    "extends": "../../package.json"
  }
}
  • packages/utils/package.json
json
{
  "volta": {
    "extends": "../../package.json"
  }
}

การเรียก node ที่ใดก็ได้ใน workspace จะทำให้คุณใช้ Node 12.16.1 และหากคุณอัปเดตเวอร์ชันนั้นใน package.json root จะถูกใช้โดยอัตโนมัติในโปรเจกต์ทั้งหมด โดยไม่ต้องทำซ้ำการตั้งค่าในโปรเจกต์ย่อยแต่ละโปรเจกต์

การปักหมุดเครื่องมือ

เมื่อคุณเรียก volta pin เพื่อเลือกเวอร์ชันของเครื่องมือภายใน workspace Volta จะเพิ่มการตั้งค่าเหล่านั้นลงใน package.json ที่_ใกล้ที่สุด_ ที่พบ ดังนั้นในตัวอย่างข้างต้น หากคุณเรียก volta pin node@14 ภายในโปรเจกต์ย่อย packages/utils เวอร์ชันใหม่ของ Node จะถูกเขียนลงใน packages/utils/package.json และจะ_ใช้เฉพาะ_กับโปรเจกต์ย่อย utils เท่านั้น ไม่ใช่อื่นๆ สิ่งนี้ช่วยให้คุณปรับแต่งเวอร์ชันเครื่องมือได้อย่างง่ายดายตามแต่ละโปรเจกต์

หากคุณต้องการใช้ volta pin เพื่อเปลี่ยนแปลงการกำหนดค่า root ให้ cd เข้าไปยัง root ของ workspace ก่อนแล้วจึงเรียก volta pin จากที่นั่น

Hooks

หากโปรเจกต์ของคุณใช้ project hooks คุณสามารถวางไว้ในโฟลเดอร์ .volta ในโปรเจกต์ย่อย_หรือ_ในโฟลเดอร์ .volta ที่ root ได้ Volta จะค้นหา hooks ในแต่ละตำแหน่งที่ชี้โดยคีย์ "extends" เพื่อให้สามารถปรับแต่งการตั้งค่าได้ที่ระดับใดก็ตามที่ต้องการ

ไบนารีเฉพาะโปรเจกต์

นอกจากการค้นหา hooks ในแต่ละระดับแล้ว Volta จะดูแต่ละระดับเพื่อตรวจจับ dependencies ท้องถิ่นของโปรเจกต์เพื่อใช้เมื่อเรียกใช้เครื่องมือของบุคคลที่สาม จะพยายามค้นหาใน node_modules/.bin สัมพัทธ์กับแต่ละไฟล์ที่อ้างอิงโดย "extends"

Released under the BSD 2-Clause License.