Khi tôi tạo gói npm, đôi khi nó sẽ phải đối mặt với nhu cầu phiên bản gói phụ thuộc cũ cũ.Kiểm tra hai phiên bản gói npm khác nhau cùng lúc
Nếu phiên bản mới có api mới, tôi có thể viết mã trong mô hình này:
import pkg from 'some-pkg';
const isNewVersion = pkg.newVersionApi !== 'undefined';
if (isNewversion) {
pkg.newVersionApi();
} else {
pkg.oldVersionApi(); // backward compatible api
}
Và với mô hình này, khi tôi muốn viết bài kiểm tra, tôi chỉ có thể kiểm tra mã installed version
. Không thể kiểm tra mã của phiên bản khác.
Ví dụ thực tế, trong React v15 và v16, React v16 có API Portal mới. Trước khi ra mắt Portal, v15 có unstable_renderSubtreeIntoContainer
api để nhận ra tính năng tương tự.
Vì vậy, các mã cho Phản ứng sẽ như thế nào:
import ReactDOM from 'react-dom';
const isV16 = ReactDOM.createPortal !== 'undefined';
if (isV16) {
ReactDOM.createPortal(...);
} else {
ReactDOM.unstable_renderSubtreeIntoContainer(...);
}
Vì vậy, tôi muốn hỏi là có phương pháp nào để thử nghiệm với different dependency version
?
Hiện tại, một phương pháp mà tôi nghĩ là cài đặt lại phiên bản khác và kiểm tra nó. Nhưng nó chỉ có thể làm trên địa phương. Nó không thể làm việc trên ci và nó không thể đếm trong phạm vi bảo hiểm với nhau.
Tôi nghĩ rằng đó không chỉ là để kiểm tra phản ứng. Nó có thể phải đối mặt với thử nghiệm node.js. Bất kỳ đề xuất có thể được thảo luận.
Cập nhật
Câu hỏi này có lẽ có liên quan đến cài đặt two versions dependency
trong NPM. Nhưng tôi biết hiện đang cài đặt hai phiên bản phụ thuộc là không khả thi.
K.I.S.S. Nguyên tắc: Giải pháp nhanh nhất (và ít kỹ thuật nhất) ở đây là sử dụng hai bản sao riêng biệt của ứng dụng, mỗi bản có các phiên bản gói khác nhau mà bạn muốn thử nghiệm. Điều này là tầm thường để làm với 'git', vì bạn có thể 1) sao chép ứng dụng của bạn hai lần hoặc 2) sử dụng hai nhánh riêng biệt. –
Đúng vậy. Sử dụng nhánh riêng biệt là một cách. Nhưng nếu đây là một nguồn mở hoặc một dự án hợp tác. Thật khó để kiểm soát vấn đề nhánh hợp nhất. Bởi vì chúng tôi cần phải nói với những người đóng góp theo dõi lộ trình thử nghiệm như cập nhật thay đổi của bạn trên cả hai nhánh và thử nghiệm nó. –