2013-04-08 22 views
8

có cách nào để tự động cập nhật số phiên bản của package.json (https://npmjs.org/doc/json.html) bằng hàm băm HEAD của git không? Tôi muốn có một cái gì đó như version: 1.0.0+rev82e4b91cfe42cd86e9453b4987b9cc446566de6 bên trong tệp package.json của dự án. Eveything trước khi cộng được thiết lập bằng tay và băm được cập nhật mỗi khi tôi cam kết một cái gì đó.Làm thế nào để viết Git hash (package's) package.json?

Điều này có khả thi không? Tôi không thể tìm thấy bất kỳ nội dung nào về chủ đề này: -/

Trả lời

-2

Tự động vào thời điểm nào? Khả năng là:

  1. Cập nhật phiên bản lĩnh vực mỗi khi bạn chạy một xây dựng từ một môi trường máy
  2. Cập nhật phiên bản lĩnh vực mỗi khi bạn chạy bất kỳ xây dựng.
  3. Cập nhật trường phiên bản bằng móc git để đồng bộ hóa. Cá nhân, tôi sẽ lo lắng về một cái móc thực hiện một sự thay đổi khi một cái gì đó thay đổi. Chiến lược này là rủi ro cao nhất, phần thưởng cao nhất.

Nếu bạn đi theo phương pháp thứ nhất hoặc thứ hai, tùy thuộc vào công cụ xây dựng bạn sử dụng. Nếu bạn sử dụng grunt, hãy xem về một plugin grunt. Tôi không thể tìm thấy bất kỳ plugin grunt nào làm những gì bạn đang yêu cầu, nhưng bạn có thể tạo một plugin khá dễ dàng.

http://gruntjs.com/plugins

Nếu bạn kết thúc việc tạo một, cho tôi biết là tôi cũng cần một quá trình tương tự :)

Trong trường hợp của tôi, tôi đang sử dụng SVN, nhưng muốn cùng một khuôn mẫu . Tôi muốn đặt số sửa đổi SVN làm số bản dựng của mình.

Đề xuất của tôi là để trống số bản dựng trong tệp được đăng ký và môi trường xây dựng của bạn thực hiện một bản sao git cho bản dựng mới và cập nhật số bản dựng. Sau đó, các gói được xây dựng luôn luôn có một cái gì đó về họ cho thấy cam kết git họ đến từ.

Tôi nghĩ rằng để phát triển, bạn không thực sự cần nó bởi vì bạn luôn có thể hỏi git phiên bản bạn đã kiểm tra. Có một plugin grunt-git mà bạn có thể sử dụng để tìm ra phiên bản trong dev. (có thể git show?)

+0

Tôi vừa phát hiện ra mô tả git. Nó cũng hữu ích. Nó mang đến cho bạn cả sha1 viết tắt cam kết id và một số các cam kết kể từ khi thẻ gần đây nhất. https://www.kernel.org/pub/software/scm/git/docs/git-describe.html – Brandon

+0

Tại sao downvote? – Brandon

1

Một phần có thể được giải quyết bằng git-describe và thực sự có một trình cắm thêm grunt kết thúc tốt đẹp cho bạn (https://github.com/mikaelkaron/grunt-git-describe/).

Phần thứ hai bạn phải làm thủ công (ngay bây giờ), nhưng tôi thực sự có vấn đề tương tự tại thời điểm này, vì vậy tôi có thể cố gắng để hack một plug-in grunt cho bạn (và bản thân mình).

Tiết lộ đầy đủ, tôi là tác giả của grunt-git-describe ở trên.

+2

này cảm giác giống như một quảng cáo cho plugin của bạn thay vì một câu trả lời; để làm cho nó một câu trả lời, bạn nên hiển thị (trong câu trả lời của bạn) cách bạn muốn thực hiện các plugin của bạn để giải quyết vấn đề thực tế người dùng có. –

1

git rev-parse HEAD sẽ ghi lại cam kết cuối cùng cho nhánh đầu hiện tại mà bạn có thể thêm vào số phiên bản trong gói của mình bất cứ khi nào bạn chạy bản dựng.

Có một số lệnh git rev-xxx có thể hữu ích cho bất kỳ nội dung bổ sung nào bạn có thể muốn ghi.

1

Có vẻ như điều này có thể được thực hiện trực tiếp mà không cần plugin. npm version $(git describe) sẽ lấy giá trị từ git describe và cập nhật giá trị của phiên bản trong package.json.

(Tôi hiện đang sử dụng phiên bản npm 3.10.)

Các vấn đề liên quan