เชี่ยวชาญ frontend changesets เพื่อการควบคุมเวอร์ชันที่มีประสิทธิภาพ เรียนรู้วิธีจัดการ dependencies, ทำให้การรีลีสเป็นอัตโนมัติ และทำงานร่วมกันในโปรเจกต์ frontend อย่างมีประสิทธิภาพ
Frontend Changesets: คู่มือฉบับสมบูรณ์สำหรับการจัดการเวอร์ชัน
ในโลกของการพัฒนา frontend ที่มีการเปลี่ยนแปลงอยู่เสมอ การจัดการการเปลี่ยนแปลงและการรีลีสอย่างมีประสิทธิภาพเป็นสิ่งสำคัญอย่างยิ่งในการรักษาความเสถียรของโปรเจกต์และสร้างความร่วมมือที่ราบรื่น Frontend Changesets เป็นโซลูชันที่ทรงพลังและยืดหยุ่นสำหรับการควบคุมเวอร์ชัน, การจัดการ dependency และการทำให้กระบวนการรีลีสเป็นอัตโนมัติ คู่มือนี้จะเจาะลึกรายละเอียดของ Frontend Changesets ตั้งแต่การตั้งค่าพื้นฐานไปจนถึงการกำหนดค่าขั้นสูง พร้อมตัวอย่างที่นำไปใช้ได้จริงและข้อมูลเชิงลึกที่จะช่วยให้คุณเชี่ยวชาญเครื่องมือที่จำเป็นนี้
Frontend Changesets คืออะไร?
Frontend Changesets เป็นเครื่องมือที่ออกแบบมาเพื่อจัดการเวอร์ชันและการเผยแพร่แพ็กเกจ JavaScript โดยเฉพาะอย่างยิ่งภายใน monorepos ช่วยให้กระบวนการสร้าง changelogs, อัปเดตเวอร์ชันของแพ็กเกจ และการเผยแพร่ไปยัง registry ของแพ็กเกจ เช่น npm เป็นไปโดยอัตโนมัติ โดยพื้นฐานแล้ว Changesets คือไฟล์ขนาดเล็กที่เน้นอธิบายการเปลี่ยนแปลงที่เกิดขึ้นกับแพ็กเกจหรือคอมโพเนนต์เฉพาะ ไฟล์เหล่านี้จะถูกใช้เพื่อสร้างบันทึกการรีลีส, อัปเดตเวอร์ชันของแพ็กเกจ และจัดการ dependencies
เมื่อเทียบกับวิธีการกำหนดเวอร์ชันแบบดั้งเดิม Changesets มีข้อดีที่สำคัญหลายประการ:
- การทำงานร่วมกันที่ดีขึ้น: Changesets ทำให้กระบวนการทำงานร่วมกันในโปรเจกต์ขนาดใหญ่ที่มีผู้ร่วมพัฒนาหลายคนเป็นไปอย่างราบรื่น ด้วยการกำหนดผลกระทบของการเปลี่ยนแปลงแต่ละครั้งอย่างชัดเจน ทำให้สมาชิกในทีมเข้าใจและตรวจสอบผลงานได้ง่ายขึ้น
- การรีลีสอัตโนมัติ: Changesets ทำให้กระบวนการรีลีสเป็นไปโดยอัตโนมัติ ลดความเสี่ยงจากความผิดพลาดของมนุษย์ และรับประกันการกำหนดเวอร์ชันที่สอดคล้องกันในทุกแพ็กเกจ
- ความโปร่งใสที่เพิ่มขึ้น: Changesets ให้บันทึกที่โปร่งใสของการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นกับโปรเจกต์ ทำให้ง่ายต่อการติดตามข้อบกพร่องและทำความเข้าใจวิวัฒนาการของโค้ดเบส
- การสนับสนุน Monorepo: Changesets เหมาะอย่างยิ่งสำหรับการจัดการ monorepos ซึ่งมีหลายแพ็กเกจอยู่ภายใน repository เดียวกัน โดยมีแนวทางที่เป็นศูนย์กลางและสอดคล้องกันในการกำหนดเวอร์ชันและรีลีสแพ็กเกจภายใน monorepo
การเริ่มต้นใช้งาน Frontend Changesets
ในการเริ่มใช้ Frontend Changesets คุณจะต้องติดตั้งแพ็กเกจที่จำเป็นและเริ่มต้นเครื่องมือภายในโปรเจกต์ของคุณ นี่คือคำแนะนำทีละขั้นตอน:
1. การติดตั้ง
ติดตั้งแพ็กเกจหลัก `@changesets/cli` เป็น development dependency:
npm install @changesets/cli --save-dev
# or
yarn add @changesets/cli --dev
2. การเริ่มต้น
เริ่มต้น Changesets ในโปรเจกต์ของคุณโดยรันคำสั่งต่อไปนี้:
npx changeset init
คำสั่งนี้จะสร้างไดเรกทอรี `.changeset` ในรากของโปรเจกต์ของคุณ พร้อมกับไฟล์การกำหนดค่า (`.changeset/config.json`)
3. การกำหนดค่า Changesets
ไฟล์ `config.json` ช่วยให้คุณสามารถปรับแต่งการทำงานของ Changesets ได้ นี่คือการกำหนดค่าทั่วไป:
{
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"ignore": []
}
มาดูรายละเอียดของแต่ละตัวเลือกกัน:
- `changelog`: ระบุอะแดปเตอร์ที่ใช้ในการสร้างรายการ changelog อะแดปเตอร์เริ่มต้น `@changesets/cli/changelog` ใช้การจัดรูปแบบ Markdown
- `commit`: กำหนดว่า Changesets ควร commit การเปลี่ยนแปลงไปยัง repository โดยอัตโนมัติหรือไม่ การตั้งค่านี้เป็น `false` จะช่วยให้คุณสามารถตรวจสอบและ commit การเปลี่ยนแปลงด้วยตนเองได้
- `fixed`: อาร์เรย์ของชื่อแพ็กเกจที่ควรจะรีลีสพร้อมกันเสมอด้วยเวอร์ชันเดียวกัน มีประโยชน์สำหรับแพ็กเกจที่มีความเกี่ยวข้องกันอย่างใกล้ชิด
- `linked`: อาร์เรย์ของ dependencies ที่ควรจะเชื่อมโยงเข้าด้วยกันในระหว่างการพัฒนา ซึ่งช่วยให้คุณสามารถทดสอบการเปลี่ยนแปลงข้ามหลายแพ็กเกจได้โดยไม่ต้องเผยแพร่
- `access`: กำหนดระดับการเข้าถึงของแพ็กเกจที่เผยแพร่ ระดับการเข้าถึงเริ่มต้น `public` ทำให้แพ็กเกจสามารถเข้าถึงได้แบบสาธารณะบน npm
- `baseBranch`: ระบุ branch หลักที่จะใช้เปรียบเทียบเพื่อพิจารณาว่าแพ็กเกจใดมีการเปลี่ยนแปลง โดยทั่วไปจะตั้งค่าเป็น branch หลักของ repository ของคุณ (เช่น `main`, `master`)
- `ignore`: อาร์เรย์ของไฟล์หรือไดเรกทอรีที่ควรละเว้นเมื่อพิจารณาว่าแพ็กเกจใดมีการเปลี่ยนแปลง
การสร้าง Changeset
ในการสร้าง Changeset ให้รันคำสั่งต่อไปนี้:
npx changeset
คำสั่งนี้จะแจ้งให้คุณเลือกแพ็กเกจที่มีการเปลี่ยนแปลงและให้คำอธิบายของการเปลี่ยนแปลงนั้น คำอธิบายควรชัดเจน กระชับ และให้ข้อมูลที่เป็นประโยชน์ โดยอธิบายวัตถุประสงค์และผลกระทบของการเปลี่ยนแปลง ตัวอย่างเช่น:
Fix: Corrected a bug in the button component that caused it to display incorrectly on mobile devices.
This changeset fixes a bug in the `Button` component that caused it to render with incorrect styling on mobile devices. The issue was caused by a CSS specificity conflict. This change resolves the conflict and ensures that the button component displays correctly across all devices.
จากนั้น Changesets จะสร้างไฟล์ Markdown ในไดเรกทอรี `.changeset` ที่มีข้อมูลที่คุณให้ไว้ ไฟล์นี้จะถูกใช้ในภายหลังเพื่อสร้างบันทึกการรีลีสและอัปเดตเวอร์ชันของแพ็กเกจ
การจัดการ Dependencies ด้วย Changesets
Changesets ยังสามารถใช้เพื่อจัดการ dependencies ระหว่างแพ็กเกจภายใน monorepo ได้อีกด้วย เมื่อสร้าง Changeset คุณสามารถระบุได้ว่าแพ็กเกจใดขึ้นอยู่กับแพ็กเกจที่มีการเปลี่ยนแปลง สิ่งนี้ทำให้แน่ใจได้ว่าแพ็กเกจที่ต้องพึ่งพาก็จะได้รับการอัปเดตเมื่อแพ็กเกจที่มีการเปลี่ยนแปลงถูกรีลีส
ตัวอย่างเช่น หากคุณมีสองแพ็กเกจ คือ `package-a` และ `package-b` และ `package-b` ขึ้นอยู่กับ `package-a` คุณสามารถสร้าง Changeset สำหรับ `package-a` และระบุว่า `package-b` ขึ้นอยู่กับมัน เมื่อคุณรันคำสั่ง `version` (ซึ่งจะอธิบายด้านล่าง) Changesets จะอัปเดตเวอร์ชันของ `package-b` โดยอัตโนมัติเพื่อสะท้อนการเปลี่ยนแปลงใน `package-a`
การกำหนดเวอร์ชันและการเผยแพร่
เมื่อคุณสร้าง Changeset อย่างน้อยหนึ่งรายการแล้ว คุณสามารถใช้คำสั่ง `version` เพื่ออัปเดตเวอร์ชันของแพ็กเกจและสร้าง changelogs ได้
npx changeset version
คำสั่งนี้จะ:
- อ่าน Changesets ในไดเรกทอรี `.changeset`
- กำหนดการปรับเพิ่มเวอร์ชันที่เหมาะสมสำหรับแต่ละแพ็กเกจตาม Changesets
- อัปเดตไฟล์ `package.json` ด้วยเวอร์ชันใหม่
- สร้างรายการ changelog สำหรับแต่ละแพ็กเกจ
- Commit การเปลี่ยนแปลงไปยัง repository
หลังจากรันคำสั่ง `version` แล้ว คุณสามารถเผยแพร่แพ็กเกจไปยัง npm โดยใช้คำสั่ง `publish`:
npx changeset publish
คำสั่งนี้จะ:
- สร้าง (build) แพ็กเกจ (ถ้าจำเป็น)
- เผยแพร่แพ็กเกจไปยัง npm
- ลบ Changesets ออกจากไดเรกทอรี `.changeset`
การผนวกรวม Changesets เข้ากับ CI/CD
Changesets ถูกออกแบบมาเพื่อผนวกรวมกับไปป์ไลน์ CI/CD (Continuous Integration/Continuous Delivery) ซึ่งช่วยให้คุณสามารถทำให้กระบวนการรีลีสเป็นอัตโนมัติ และมั่นใจได้ว่าการเปลี่ยนแปลงจะถูกนำไปใช้งานได้อย่างรวดเร็วและเชื่อถือได้
นี่คือขั้นตอนการทำงาน CI/CD ทั่วไปสำหรับ Changesets:
- Commit Changes: นักพัฒนา commit การเปลี่ยนแปลงไปยัง repository รวมถึง Changesets
- CI Build: ระบบ CI ทำการทดสอบและสร้างโปรเจกต์
- Version and Publish: ระบบ CI รันคำสั่ง `version` และ `publish` จาก Changesets เพื่ออัปเดตเวอร์ชันของแพ็กเกจ, สร้าง changelogs และเผยแพร่แพ็กเกจไปยัง npm ขั้นตอนนี้มักจะใช้ token หรือข้อมูลรับรองอัตโนมัติสำหรับการเข้าถึง npm
- Deploy: ระบบ CI นำแพ็กเกจที่อัปเดตแล้วไปใช้งานในสภาพแวดล้อม production
ผู้ให้บริการ CI/CD หลายรายมีการสนับสนุนในตัวสำหรับ Changesets ตัวอย่างเช่น GitHub Actions มี action เฉพาะสำหรับการรัน Changesets:
name: Release
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm install
- name: Create Release Pull Request or publish to npm
id: changesets
uses: changesets/action@v1
with:
# This makes sure we can read the token even if it's not
# available on the PR. This prevents an error from occurring in
# the publish step below.
publish: npm run release
version: npm run version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
ขั้นตอนการทำงานนี้จะรันคำสั่ง `version` และ `publish` โดยอัตโนมัติเมื่อใดก็ตามที่มีการ push การเปลี่ยนแปลงไปยัง branch `main` และยังสร้าง pull request ที่มีไฟล์ `package.json` ที่อัปเดตแล้วและ changelogs อีกด้วย
การกำหนดค่าขั้นสูง
Changesets มีตัวเลือกการกำหนดค่าขั้นสูงหลายอย่างที่ช่วยให้คุณปรับแต่งเครื่องมือให้ตรงกับความต้องการเฉพาะของคุณได้ ตัวเลือกที่มีประโยชน์ที่สุดบางส่วน ได้แก่:
- Custom Changelog Adapters: คุณสามารถสร้างอะแดปเตอร์ changelog ของคุณเองเพื่อสร้าง changelogs ในรูปแบบที่ปรับให้เข้ากับโปรเจกต์ของคุณ
- Custom Versioning Strategies: คุณสามารถกำหนดกลยุทธ์การกำหนดเวอร์ชันของคุณเองเพื่อควบคุมวิธีการปรับเพิ่มเวอร์ชันของแพ็กเกจ
- Monorepo-Specific Configuration: Changesets มีตัวเลือกการกำหนดค่าเฉพาะสำหรับการจัดการ monorepos เช่น ความสามารถในการระบุแพ็กเกจที่ควรจะรวมอยู่ในการรีลีส
Custom Changelog Adapters
อะแดปเตอร์ changelog เริ่มต้นใช้การจัดรูปแบบ Markdown ซึ่งเหมาะสำหรับโปรเจกต์ส่วนใหญ่ อย่างไรก็ตาม หากคุณต้องการสร้าง changelogs ในรูปแบบอื่น คุณสามารถสร้างอะแดปเตอร์ที่คุณกำหนดเองได้ อะแดปเตอร์ที่กำหนดเองเป็นเพียงโมดูล JavaScript ที่ส่งออกฟังก์ชันที่รับอ็อบเจกต์ Changeset เป็นอินพุตและส่งคืนสตริงที่มีรายการ changelog นี่คือตัวอย่าง:
// my-custom-changelog-adapter.js
module.exports = async function getReleaseLine(changeset, versionType, options) {
if (changeset.commit) {
return `- ${changeset.summary} (commit: ${changeset.commit})\n`;
} else {
return `- ${changeset.summary}\n`;
}
};
ในการใช้อะแดปเตอร์ที่คุณกำหนดเอง คุณต้องอัปเดตตัวเลือก `changelog` ในไฟล์ `config.json`:
{
"changelog": "./my-custom-changelog-adapter.js",
...
}
Custom Versioning Strategies
Changesets ใช้กลยุทธ์การกำหนดเวอร์ชันเชิงความหมาย (SemVer) เป็นค่าเริ่มต้น ซึ่งหมายความว่าเวอร์ชันของแพ็กเกจจะถูกปรับเพิ่มขึ้นตามประเภทของการเปลี่ยนแปลงที่เกิดขึ้น (เช่น major, minor, patch) อย่างไรก็ตาม คุณสามารถกำหนดกลยุทธ์การกำหนดเวอร์ชันของคุณเองเพื่อควบคุมวิธีการปรับเพิ่มเวอร์ชันของแพ็กเกจได้ สิ่งนี้มีประโยชน์หากคุณมีข้อกำหนดการกำหนดเวอร์ชันเฉพาะหรือหากคุณต้องการใช้รูปแบบการกำหนดเวอร์ชันที่แตกต่างออกไป
ในการกำหนดกลยุทธ์การกำหนดเวอร์ชันที่คุณกำหนดเอง คุณต้องสร้างโมดูล JavaScript ที่ส่งออกฟังก์ชันที่รับอ็อบเจกต์ Changeset เป็นอินพุตและส่งคืนประเภทการปรับเพิ่มเวอร์ชัน (เช่น `major`, `minor`, `patch`) นี่คือตัวอย่าง:
// my-custom-versioning-strategy.js
module.exports = async function determineVersion(changeset, options) {
if (changeset.summary.includes("breaking change")) {
return "major";
} else if (changeset.summary.includes("feature")) {
return "minor";
} else {
return "patch";
}
};
ในปัจจุบัน กลยุทธ์การกำหนดเวอร์ชันที่กำหนดเองต้องการการกำหนดค่าที่ลึกซึ้งยิ่งขึ้นและไม่ได้รับการสนับสนุนโดยตรงผ่าน `config.json` นี่เป็นกรณีการใช้งานขั้นสูงและโดยทั่วไปเกี่ยวข้องกับการปรับแต่งขั้นตอนการทำงานของ Changesets ในระดับที่ต่ำกว่า
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ Frontend Changesets
เพื่อเพิ่มประโยชน์สูงสุดของ Frontend Changesets ให้ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเหล่านี้:
- เขียนคำอธิบาย Changeset ที่ชัดเจนและกระชับ: คำอธิบาย Changeset เป็นส่วนที่สำคัญที่สุดของ Changeset ตรวจสอบให้แน่ใจว่าได้เขียนคำอธิบายที่ชัดเจน กระชับ และให้ข้อมูลที่เป็นประโยชน์ซึ่งอธิบายวัตถุประสงค์และผลกระทบของการเปลี่ยนแปลง
- ใช้ Semantic Versioning: ปฏิบัติตามหลักการกำหนดเวอร์ชันเชิงความหมายเมื่อกำหนดการปรับเพิ่มเวอร์ชันที่เหมาะสมสำหรับแต่ละแพ็กเกจ สิ่งนี้จะช่วยให้ผู้ใช้แพ็กเกจของคุณสามารถเข้าใจผลกระทบของการรีลีสแต่ละครั้งได้อย่างง่ายดาย
- ทำให้กระบวนการรีลีสเป็นอัตโนมัติ: ผนวกรวม Changesets เข้ากับไปป์ไลน์ CI/CD ของคุณเพื่อทำให้กระบวนการรีลีสเป็นอัตโนมัติ สิ่งนี้จะช่วยลดความเสี่ยงจากความผิดพลาดของมนุษย์และรับประกันการกำหนดเวอร์ชันที่สอดคล้องกันในทุกแพ็กเกจ
- ตรวจสอบ Changesets อย่างรอบคอบ: ตรวจสอบ Changesets อย่างรอบคอบก่อนที่จะรวมเข้ากับ branch หลัก สิ่งนี้จะช่วยตรวจจับข้อผิดพลาดและรับประกันว่าการเปลี่ยนแปลงได้รับการบันทึกอย่างถูกต้อง
- ให้ Changesets มีขนาดเล็กและมุ่งเน้น: ตั้งเป้าหมายให้ Changesets มีขนาดเล็กและมุ่งเน้นไปที่การแก้ไขปัญหาหรือฟีเจอร์เดียว สิ่งนี้จะทำให้เข้าใจและตรวจสอบการเปลี่ยนแปลงได้ง่ายขึ้น
ตัวอย่างจากโลกแห่งความเป็นจริง
ไลบรารีและเฟรมเวิร์ก JavaScript ยอดนิยมจำนวนมากใช้ Frontend Changesets เพื่อจัดการเวอร์ชันและการรีลีส นี่คือตัวอย่างบางส่วน:
- React Aria: ไลบรารีของคอมโพเนนต์ React สำหรับการสร้างส่วนติดต่อผู้ใช้ที่สามารถเข้าถึงได้
- Reach UI: ไลบรารีของ UI primitives ที่สามารถเข้าถึงได้สำหรับ React
- โปรเจกต์โอเพนซอร์สอื่นๆ อีกมากมาย: โปรเจกต์อื่นๆ อีกนับไม่ถ้วนใช้ประโยชน์จาก Changesets สำหรับกระบวนการรีลีสที่คล่องตัวและคุณสมบัติการทำงานร่วมกันที่ดียิ่งขึ้น
โปรเจกต์เหล่านี้ได้นำ Changesets มาใช้อย่างประสบความสำเร็จเพื่อปรับปรุงกระบวนการรีลีส, เพิ่มประสิทธิภาพการทำงานร่วมกัน และรักษาบันทึกการเปลี่ยนแปลงที่โปร่งใส ประสบการณ์ของพวกเขาแสดงให้เห็นถึงคุณค่าและความหลากหลายของเครื่องมืออันทรงพลังนี้
การแก้ไขปัญหาที่พบบ่อย
แม้ว่าโดยทั่วไป Changesets จะใช้งานได้ง่าย แต่คุณอาจพบปัญหาที่พบบ่อยบางอย่าง นี่คือเคล็ดลับการแก้ไขปัญหาบางประการ:
- `No changesets found`: ข้อผิดพลาดนี้โดยทั่วไปบ่งชี้ว่าคุณยังไม่ได้สร้าง Changesets ใดๆ หรือ Changesets ไม่ได้ถูกกำหนดค่าอย่างถูกต้อง ตรวจสอบให้แน่ใจว่าคุณได้สร้าง Changeset อย่างน้อยหนึ่งรายการและไฟล์ `config.json` ได้รับการกำหนดค่าอย่างถูกต้อง
- `Version conflict`: ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Changesets สองรายการขึ้นไประบุการปรับเพิ่มเวอร์ชันที่ขัดแย้งกันสำหรับแพ็กเกจเดียวกัน ตรวจสอบ Changesets และตรวจสอบให้แน่ใจว่าสอดคล้องกัน
- `Publish failed`: ข้อผิดพลาดนี้อาจเกิดขึ้นได้จากหลายสาเหตุ เช่น ข้อมูลรับรอง npm ที่ไม่ถูกต้องหรือปัญหาการเชื่อมต่อเครือข่าย ตรวจสอบข้อมูลรับรอง npm ของคุณและตรวจสอบให้แน่ใจว่าคุณมีการเชื่อมต่ออินเทอร์เน็ตที่เสถียร
- ปัญหาการผนวกรวม CI/CD: ตรวจสอบการกำหนดค่า CI/CD ของคุณอย่างรอบคอบ ตรวจสอบให้แน่ใจว่าตัวแปรสภาพแวดล้อมที่จำเป็น (เช่น `GITHUB_TOKEN`, `NPM_TOKEN`) ได้รับการตั้งค่าอย่างถูกต้องและคำสั่ง Changesets ถูกดำเนินการในลำดับที่ถูกต้อง
หากคุณพบปัญหาอื่นใด โปรดศึกษาเอกสารประกอบอย่างเป็นทางการของ Changesets หรือขอความช่วยเหลือจากชุมชน Changesets
สรุป
Frontend Changesets เป็นโซลูชันที่ทรงพลังและยืดหยุ่นสำหรับการจัดการเวอร์ชันและการรีลีสในโปรเจกต์ frontend ด้วยการทำให้กระบวนการรีลีสเป็นอัตโนมัติ, การทำงานร่วมกันที่คล่องตัว และการเพิ่มความโปร่งใส Changesets สามารถปรับปรุงประสิทธิภาพและความน่าเชื่อถือของขั้นตอนการพัฒนาของคุณได้อย่างมาก ไม่ว่าคุณจะทำงานในโปรเจกต์ส่วนตัวขนาดเล็กหรือแอปพลิเคชันระดับองค์กรขนาดใหญ่ Changesets สามารถช่วยให้คุณจัดการโค้ดเบสของคุณได้อย่างมีประสิทธิภาพยิ่งขึ้นและส่งมอบซอฟต์แวร์คุณภาพสูงให้กับผู้ใช้ของคุณ
ด้วยการปฏิบัติตามแนวทางและแนวทางปฏิบัติที่ดีที่สุดที่ระบุไว้ในคู่มือนี้ คุณสามารถเชี่ยวชาญ Frontend Changesets และใช้ประโยชน์จากศักยภาพสูงสุดของมันเพื่อปรับปรุงขั้นตอนการพัฒนา frontend ของคุณ โอบรับ Changesets และควบคุมการจัดการเวอร์ชันของคุณได้แล้ววันนี้!