การดำเนินการนี้มีฟังก์ชันการทำงานต่อไปนี้สำหรับผู้ใช้ GitHub Actions:
เลือกดาวน์โหลดและแคชการกระจายเวอร์ชัน Node.js ที่ร้องขอ และเพิ่มลงใน PATH
เป็นทางเลือกในการแคชการอ้างอิง npm/yarn/pnpm
การลงทะเบียนตัวจับคู่ปัญหาสำหรับเอาต์พุตข้อผิดพลาด
การกำหนดค่าการรับรองความถูกต้องสำหรับ GPR หรือ npm
ดูที่ action.yml
- ใช้: actions/setup-node@v4
ด้วย:# Version Spec ของเวอร์ชันที่จะใช้ในรูปแบบ SemVer# นอกจากนี้ยังยอมรับนามแฝงเช่น lts/*, ล่าสุด, nightly และ canary builds# ตัวอย่าง: 12.x, 10.15.1, >=10.15.0, lts/ ไฮโดรเจน 16 คืน ล่าสุด เวอร์ชัน nodenode: ''# ไฟล์ที่มีเวอร์ชัน Spec ของเวอร์ชันที่จะใช้ ตัวอย่าง: package.json, .nvmrc, .node-version, .tool-versions.# หากระบุทั้ง node-version และ node-version-file การดำเนินการจะใช้เวอร์ชันจาก node-version node-version-file: ''# ตั้งค่าตัวเลือกนี้หากคุณต้องการให้การดำเนินการตรวจสอบเวอร์ชันล่าสุดที่มีอยู่ # ที่ตรงกับข้อกำหนดเวอร์ชัน # มันจะได้รับผลกระทบเฉพาะกับเวอร์ชัน lts Nodejs (12.x, >=10.15. 0,lts/ไฮโดรเจน) # ค่าเริ่มต้น: falsecheck-latest: false# สถาปัตยกรรมเป้าหมายสำหรับโหนดที่จะใช้ ตัวอย่าง: x86, x64 จะใช้สถาปัตยกรรมระบบเป็นค่าเริ่มต้น # ค่าเริ่มต้น: '' การดำเนินการใช้สถาปัตยกรรมระบบตามสถาปัตยกรรมเริ่มต้น: ''# ใช้เพื่อดึงการกระจายโหนดจาก https://github.com/actions/node-versions # เนื่องจากมีค่าเริ่มต้น ผู้ใช้จึงมักไม่ได้ระบุค่านี้ # เมื่อเรียกใช้การกระทำนี้บน github.com ค่าเริ่มต้นก็เพียงพอแล้ว # เมื่อทำงานบน GHES คุณสามารถส่งโทเค็นการเข้าถึงส่วนบุคคลสำหรับ github.com ได้ หากคุณประสบปัญหาการจำกัดอัตรา## เราขอแนะนำให้ใช้บัญชีบริการที่มีสิทธิ์อนุญาตน้อยที่สุด นอกจากนี้# เมื่อสร้าง PAT ใหม่ ให้เลือกขอบเขตที่จำเป็นน้อยที่สุด## [เรียนรู้เพิ่มเติมเกี่ยวกับการสร้างและการใช้ความลับที่เข้ารหัส](https://help.github.com/en/actions/automating-your-workflow-with-github -actions/creating-and-using-encrypted-secrets)## ค่าเริ่มต้น: ${{ github.server_url == 'https://github.com' && github.token || '' }}โทเค็น: ''# ใช้เพื่อระบุตัวจัดการแพ็คเกจสำหรับการแคชในไดเร็กทอรีเริ่มต้น ค่าที่รองรับ: npm,เส้นด้าย, pnpm.# ตัวจัดการแพ็คเกจควรติดตั้งไว้ล่วงหน้า# ค่าเริ่มต้น: ''แคช: ''# ใช้เพื่อระบุเส้นทางไปยังไฟล์อ้างอิง: package-lock.json, Yarn.lock ฯลฯ # มันจะสร้างแฮชจากไฟล์เป้าหมายสำหรับคีย์หลัก ใช้งานได้เฉพาะเมื่อมีการระบุแคช # รองรับไวด์การ์ดหรือรายการชื่อไฟล์สำหรับการแคชการอ้างอิงหลายรายการ # ค่าเริ่มต้น: ''cache-dependency-path: ''# รีจิสทรีเสริมเพื่อตั้งค่าสำหรับการตรวจสอบสิทธิ์ จะตั้งค่ารีจิสทรีในระดับโครงการ .npmrc และไฟล์ .yarnrc # และตั้งค่าการตรวจสอบสิทธิ์เพื่ออ่านจาก env.NODE_AUTH_TOKEN # ค่าเริ่มต้น: ''registry-url: ''# ขอบเขตเพิ่มเติมสำหรับการตรวจสอบสิทธิ์กับรีจิสทรีที่กำหนดขอบเขต # จะถอยกลับไปที่เจ้าของพื้นที่เก็บข้อมูลเมื่อใช้รีจิสทรีแพ็คเกจ GitHub (https://npm.pkg.github.com/) # ค่าเริ่มต้น: ''ขอบเขต: ''# ตั้งค่าตัวเลือกการรับรองความถูกต้องเสมอในไฟล์ npmrc # ค่าเริ่มต้น : ''ตรวจสอบสิทธิ์เสมอ:''พื้นฐาน:
ขั้นตอน: - ใช้: actions/checkout@v4- ใช้: actions/setup-node@v4 ด้วย: โหนดเวอร์ชัน: 18- รัน: npm ci- รัน: ทดสอบ npm
อินพุต node-version เป็นทางเลือก หากไม่ได้ระบุไว้ ระบบจะใช้เวอร์ชันโหนดจาก PATH อย่างไรก็ตาม ขอแนะนำให้ระบุเวอร์ชันของ Node.js เสมอ และไม่ต้องพึ่งพาระบบ
การดำเนินการจะตรวจสอบแคชในเครื่องก่อนเพื่อดูการจับคู่ Semver หากไม่พบเวอร์ชันที่เจาะจงในแคช การดำเนินการจะพยายามดาวน์โหลดเวอร์ชันของ Node.js มันจะดึงเวอร์ชัน LTS จากการเผยแพร่เวอร์ชันโหนด และหากพลาดหรือล้มเหลวจะถอยกลับไปเป็นลักษณะการทำงานก่อนหน้าของการดาวน์โหลดโดยตรงจาก node dist
สำหรับข้อมูลเกี่ยวกับ Node.js เวอร์ชันแคชในเครื่องบนรันเนอร์ที่โฮสต์ GitHub โปรดดูที่รูปภาพนักวิ่ง GitHub Actions
อินพุต node-version รองรับข้อกำหนดการกำหนดเวอร์ชันแบบ Semantic สำหรับตัวอย่างโดยละเอียดเพิ่มเติม โปรดดูเอกสารประกอบแพ็คเกจ semver
ตัวอย่าง:
เวอร์ชันหลัก: 18 , 20
เวอร์ชันเฉพาะเพิ่มเติม: 10.15 , 16.15.1 , 18.4.0
ไวยากรณ์ NVM LTS: lts/erbium , lts/fermium , lts/* , lts/-n
รุ่นล่าสุด: * หรือ latest / current / node
หมายเหตุ: เช่นเดียวกับค่าอื่นๆ * จะได้รับเวอร์ชัน Node.js ที่แคชในเครื่องล่าสุด หรือเวอร์ชันล่าสุดจากการดำเนินการ/เวอร์ชันโหนด ขึ้นอยู่กับอินพุต check-latest
current / latest / node จะแก้ไขเป็นเวอร์ชัน dist ล่าสุดเสมอ จากนั้นเวอร์ชันนั้นจะถูกดาวน์โหลดจาก actions/node-version หากเป็นไปได้ หรือดาวน์โหลดโดยตรงจาก Node.js หากไม่ใช่ เนื่องจากมันจะไม่ถูกแคชเสมอไป จึงมีความเป็นไปได้ที่จะถึงขีดจำกัดอัตราการดาวน์โหลดเมื่อดาวน์โหลดจาก dist
ขอแนะนำ เสมอ ให้คอมมิตไฟล์ล็อคของตัวจัดการแพ็คเกจของคุณเพื่อความปลอดภัยและประสิทธิภาพ สำหรับข้อมูลเพิ่มเติม โปรดดูส่วน "การทำงานกับไฟล์ล็อค" ของคู่มือการใช้งานขั้นสูง
การดำเนินการนี้มีฟังก์ชันในตัวสำหรับการแคชและการกู้คืนการขึ้นต่อกัน ใช้การดำเนินการ/แคชภายใต้ประทุนสำหรับการแคชข้อมูลแพ็คเกจทั่วโลก แต่ต้องการการตั้งค่าการกำหนดค่าน้อยกว่า ผู้จัดการแพ็คเกจที่รองรับคือ npm , yarn , pnpm (v6.10+) อินพุต cache เป็นทางเลือก และการแคชจะถูกปิดตามค่าเริ่มต้น
การดำเนินการมีค่าเริ่มต้นเพื่อค้นหาไฟล์อ้างอิง ( package-lock.json , npm-shrinkwrap.json หรือ yarn.lock ) ในรูทของที่เก็บ และใช้แฮชเป็นส่วนหนึ่งของคีย์แคช ใช้ cache-dependency-path สำหรับกรณีที่มีการใช้ไฟล์อ้างอิงหลายไฟล์ หรืออยู่ในไดเร็กทอรีย่อยที่แตกต่างกัน
หมายเหตุ: การดำเนินการจะไม่แคช node_modules
ดูตัวอย่างการใช้แคชสำหรับ yarn / pnpm และอินพุต cache-dependency-path ในคู่มือการใช้งานขั้นสูง
การแคชการพึ่งพา npm:
ขั้นตอน: - ใช้: actions/checkout@v4- ใช้: actions/setup-node@v4 ด้วย: โหนดเวอร์ชัน: 20cache: 'npm'- ทำงาน: npm ci- run: ทดสอบ npm
การแคชการพึ่งพา npm ใน monorepos:
ขั้นตอน: - ใช้: actions/checkout@v4- ใช้: actions/setup-node@v4 ด้วย: โหนดเวอร์ชัน: 20cache: 'npm'cache-dependency-path: subdir/package-lock.json- run: npm ci- run: การทดสอบ npm
งาน: build:runs-on: ubuntu-lateststrategy: matrix:node: [ 14, 16, 18 ]name: Node ${{ matrix.node }} ตัวอย่างขั้นตอน:
- การใช้งาน: actions/checkout@v4 - ชื่อ: ตั้งค่า nodeuses: actions/setup-node@v4with: node-version: ${{ matrix.node }} - run: npm ci - run: npm testsetup-node บน GHES setup-node จะติดตั้งไว้ล่วงหน้าบนอุปกรณ์พร้อมกับ GHES หากเปิดใช้งานการดำเนินการ เมื่อดาวน์โหลดการแจกจ่าย Nodejs แบบไดนามิก setup-node จะดาวน์โหลดการแจกจ่ายจาก actions/node-versions บน github.com (ภายนอกอุปกรณ์) การเรียกร้องให้ actions/node-versions เหล่านี้สร้างขึ้นผ่านคำขอที่ไม่ได้รับการรับรองความถูกต้อง ซึ่งจำกัดอยู่ที่ 60 คำขอต่อชั่วโมงต่อ IP หากมีการร้องขอเพิ่มเติมภายในกรอบเวลา คุณจะเริ่มเห็นข้อผิดพลาดขีดจำกัดอัตราในระหว่างการดาวน์โหลดที่มีลักษณะดังนี้: ##[error]API rate limit exceeded for... หลังจากข้อผิดพลาดดังกล่าว การดำเนินการจะพยายามดาวน์โหลดเวอร์ชันโดยตรงจากเว็บไซต์อย่างเป็นทางการ แต่อาจมีขีดจำกัดอัตราด้วย ดังนั้นควรใส่โทเค็นจะดีกว่า
หากต้องการรับขีดจำกัดอัตราที่สูงขึ้น คุณสามารถสร้างโทเค็นการเข้าถึงส่วนบุคคลบน github.com และส่งผ่านเป็นอินพุต token สำหรับการดำเนินการ:
ใช้: actions/setup-node@v4with: โทเค็น: ${{ secrets.GH_DOTCOM_TOKEN }}
เวอร์ชันโหนด: 20หากนักวิ่งไม่สามารถเข้าถึง github.com เวอร์ชัน Nodejs ใดๆ ที่ร้องขอระหว่างการรันเวิร์กโฟลว์จะต้องมาจากแคชเครื่องมือของรันเนอร์ ดู "การตั้งค่าแคชเครื่องมือบนรันเนอร์ที่โฮสต์เองโดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต" สำหรับข้อมูลเพิ่มเติม
ตรวจสอบเวอร์ชันล่าสุด
การใช้ไฟล์เวอร์ชันโหนด
การใช้สถาปัตยกรรมที่แตกต่างกัน
ใช้เวอร์ชัน canary v8
ใช้เวอร์ชันกลางคืน
การใช้เวอร์ชัน rc
การแคชข้อมูลแพ็กเกจ
การใช้ระบบปฏิบัติการและสถาปัตยกรรมหลายระบบ
การเผยแพร่ไปยัง npmjs และ GPR ด้วย npm
การเผยแพร่ไปยัง npmjs และ GPR ด้วยเส้นด้าย
การใช้แพ็คเกจส่วนตัว
สคริปต์และเอกสารประกอบในโครงการนี้เผยแพร่ภายใต้ใบอนุญาต MIT
ยินดีบริจาค! ดูคู่มือผู้ร่วมให้ข้อมูล
เป็นคนดี. ดูจรรยาบรรณของเรา