blog-app mở cho tất cả mọi người, và chúng tôi hoan nghênh bất kỳ đóng góp nào. Chúng tôi tin rằng dự án này sẽ hoàn thiện hơn khi nhận được sự quan tâm của các bạn.
Những chương trình cần cài trước trong máy:
Tên chương trình | Phiên bản |
---|---|
Node.js | 8.9.3 |
MongoDB | 3.4.5 |
Nếu Node.js hoặc MongoDB đã có sẵn trong máy của bạn, hãy chạy câu lệnh sau để kiểm tra phiên bản đã cài đặt:
node -v
mongo --version
Nếu phiên bản Node.js hoặc MongoDB của bạn đang thấp hơn phiên bản yêu cầu trên, bạn cần tiến hành cập nhật.
Bạn cần fork dự án này về repo của bạn.
- Vào repo của fcchn-blog-backend tại địa chỉ: https://github.com/ngminhtrung/fcchn-blog-backend
- Kéo lên đầu trang, click chuột vào nút "Fork" ở bên tay phải. Xem chi tiết ở đây.
- Sau khi repo này được forked, trình duyệt web sẽ đưa bạn đến repo trên account Github của bạn tại địa chỉ [lưu ý thay tên account của bạn]: https://github.com/[tên-account-Github-của-bạn]/fcchn-blog-backend
- Mở Terminal/ Command Line/ Bash Shell trong folder nào đó trong máy bạn, chọn folder mà bạn muốn lưu trữ repo fcchn-blog-backedn nói trên, ví dụ:
/learningReact
- Clone bản fork của fcchn-blog-backend về máy qua câu lệnh:
git clone https://github.com/[tên-account-Github-của-bạn]/fcchn-blog-backend.git
Lưu ý lần nữa: nhớ đổi "tên-account-Github-của-bạn" trong đường dẫn trên với username Github của bạn.
- Chuyển đến thư mục chứa fcchn-blog-backend (ví dụ bằng câu lệnh
cd fcchn-blog-backend
) - Thêm một tham chiếu từ xa đến repo chính thức của fcchn-blog-backend:
$ git remote add upstream https://github.com/ngminhtrung/fcchn-blog-backend.git
Lưu ý: từ upstream
có thể thay đổi bằng bất kỳ từ nào khác theo ý bạn. Chủ yếu bạn cần nhớ từ khóa này để dùng sau này, khi cần cập nhật mã nguồn từ repo chính thức của fcchn-blog-backend.
Bây giờ bạn đã có 1 bản fork, sẽ có vài việc cần làm để giúp cho bản fork này được cập nhật.
Hãy thực hiện việc sau trước khi tạo 1 branch mới để Pull Request:
- Đảm bảo rằng bạn đang ở nhánh
develop
:
git status
// On branch develope
// Your branch is up-to-date with 'origin/develop'
Nếu đang ở nhánh khác, hãy xử lý các files còn đang dang dở, commits, rồi chuyển sang nhánh develop
:
git checkout develop
Thực hiện 1 pull có rebase đối với repo "upstream" (chính là repo gốc của fcchn-blog-backend). Lưu ý: nếu bạn đã từng thay từ "upstream" bằng cái tên khác ở bước bên trên, thì ở đây cũng phải đổi "upstream" thành từ mà bạn đã đặt.
git pull --rebase upstream develop
Việc này sẽ giúp lôi mọi thay đổi từ nhánh develop
của repo chính thức về repo của bạn (mà không tạo thêm commit trong repo trên máy).
- (Tùy chọn) Force push những thay đổi trên nhánh
develop
trên repo trên máy đến bản fork online trên Github
git push origin develop --force
Thao tác này sẽ ghi đè nhánh develope
trên bản fork của bạn (trên Github).
Trước khi tiến hành công việc, bạn sẽ cần tạo 1 nhánh mới liên quan cụ thể đến issue/ tính năng mà bạn đang nhắm đến. Mọi code của bạn sẽ được đẩy vào nhánh này.
Định dạng tên nhánh:
- Khi fix bug:
fix/xxx
- Khi liên quan đến tính năng:
feature/xxx
trong đó xxx
là mô tả "cực" ngắn về thay đổi hoặc tính năng mà bạn đang thêm vào. Ví dụ, nếu bạn định fix bug liên quan đến tính năng log-in bằng email, hãy đặt tên nhánh là fix/email-login
.
Tạo một nhánh mới trên máy và chuyển đến nhánh đó bằng lệnh:
git checkout -b [tên_nhánh_mới_của_bạn]
sau đó đẩy lên Github
$ git push origin [tên_nhánh_mới_của_bạn]
Nếu cần tra thêm cách xử lý với nhánh, hãy xem tại đây.
Bạn cần có ESLint được cài vào editor của mình, ESLint sẽ giúp phát hiện bất kỳ đoạn code nào không tuân thủ với quy định về viết code của fcchn-blog-backend. Các quy định được dựa trên Airbnb JavaScript Style Guide.
Xin đừng bỏ qua bất kỳ vấn đề nào do ESLint chỉ ra, bởi quy định về viết code được sinh ra để đảm bảo chúng ta luôn có một code base sạch sẽ và sáng sủa.
Một khi bạn đã fork fcchn-blog-backend về máy, trước khi chạy chương trình, bạn cần cài đặt tất cả các dependencies qua lệnh:
npm install
Sau đó bạn cần khởi động MongoDB, thêm dữ liệu cho database, sau đó khởi động chương trình:
# Bật mongo server ở một terminal riêng:
# Nếu dùng macOS:
mongod
# Nếu dùng Windows, bạn cần phải chỉ rõ đường dẫn đến file thực thi mongod
# Đường dẫn dưới đây chỉ là mẫu, hãy thay 3.4 bằng phiên bản thực tế cài trên máy bạn:
"C:\Program Files\MongoDB\Server\3.4\bin\mongod"
# Khởi động fcchn-blog-backend
# Lệnh sau sẽ thêm dữ liệu vào database trong lần cài đặt đầu tiên
# Và lệnh này chỉ cần chạy 1 lần duy nhấ
npm run only-once
# Khởi động ứng dụng
npm start
Bây giờ, hãy mở trình duyệt lên, gõ vào thanh địa chỉ http://localhost:3000. Nếu ứng dụng chạy, thì nghĩa là mọi thứ đã ngon lành. Còn không, bạn có thể tạo issue trong repo chính thức của fcchn-blog-backend để hỏi.
Khi bạn đã sẵn sàng để chia sẻ code mới thêm vào, bạn cần test lại ứng dụng với:
npm test
và đảm bảo mọi tests phải được pass.
blog-app quy định về cách viết commit log cho rất nhiều mục đích (ví dụ như việc tạo CHANGELOG, xóa lịch sử tìm kiếm, v.v.). Trước khi commit/push, cần đảm bảo tuân theo quy định về định dạng của commit log như sau:
Khung sườn của commit log:
<type>(<module>): <chủ đề>
<Dòng trống>
<Phần thân>
<Dòng trống>
<footer>
-
- feat: Tính năng mới
- fix: Sửa lỗi
- docs: Thay đổi tài liệu
- style: Những thay đổi về style không làm ảnh hưởng đến ý nghĩa của code, ví dụ như khoảng trắng, dấu chấm phẩy .v.v.
- refactor: Đoạn code không phải là thêm tính năng mới, cũng không phải là sửa lỗi.
- test: Thay đổi, thêm, bớt test.
- skip: Đối với những commits được tạo sau lần commit đầu tiên. Thường dùng cho thay đổi khi code review.
Một đoạn mô tả ngắn về nội dung của lần commit. Một tham chiếu đến issue nên được đặt ở phần thân này, ví dụ như: Ref #ISSUE-NO
. Ví dụ: Khi commit được thực hiện liên quan đến issue số 20, thì điền 1 đoạn là:
Ref #20
Ví dụ commit log cho việc sửa lỗ:
Fix(Axis): Correct tick rendering
Update condition of tick to avoide unnecessary tick rendering
Ref #20
Ví dụ commit log cho code review (sau commit thứ 1):
Note: Commit log starting with
skip:
type will be ignored by commit hook constraint.
skip: Applied the review
Một khi đã đóng góp vào blog-app, bạn đồng ý rằng code của bạn sẽ có bản quyền theo nhóm MIT.