pnpm-lock.yaml. Các gói npm OpenClaw đã phát hành sử dụng npm-shrinkwrap.json, tệp khóa phụ thuộc có thể phát hành của npm, để quá trình cài đặt gói sử dụng đồ thị phụ thuộc đã được xem xét trong quá trình phát hành.
Tại sao điều này quan trọng
Shrinkwrap là biên nhận cho cây phụ thuộc đi kèm với một gói npm: nó cho npm biết chính xác những phiên bản phụ thuộc bắc cầu nào cần cài đặt.
Đối với các bản phát hành OpenClaw, điều này có nghĩa là:
- gói đã phát hành không yêu cầu npm tạo ra một đồ thị phụ thuộc mới tại thời điểm cài đặt;
- các thay đổi phụ thuộc có thể được xem xét vì chúng xuất hiện trong phần chênh lệch của tệp khóa;
- quá trình xác thực bản phát hành kiểm thử đúng đồ thị mà người dùng sẽ cài đặt;
- những bất ngờ về kích thước gói hoặc phụ thuộc gốc được phát hiện trước khi phát hành.
openclaw security audit, nguồn gốc gói hoặc các kiểm thử nhanh quá trình cài đặt.
OpenClaw là một Gateway, máy chủ Plugin, bộ định tuyến mô hình và môi trường chạy tác tử, vì vậy một bản cài đặt mặc định ảnh hưởng đến thời gian khởi động, mức sử dụng ổ đĩa, việc tải xuống gói gốc và mức độ phơi nhiễm với chuỗi cung ứng. Shrinkwrap cung cấp cho quá trình xem xét bản phát hành một ranh giới ổn định: người đánh giá thấy được sự dịch chuyển của các phụ thuộc bắc cầu, trình xác thực từ chối những thay đổi ngoài dự kiến trong tệp khóa và các gói Plugin mang theo đồ thị phụ thuộc đã khóa riêng thay vì dựa vào gói gốc.
Tạo và kiểm tra
Gói npmopenclaw gốc, các gói Plugin npm do OpenClaw sở hữu (ví dụ @openclaw/discord) và các gói không gian làm việc có thể phát hành như @openclaw/ai bao gồm npm-shrinkwrap.json khi được phát hành. Các phụ thuộc không gian làm việc được loại khỏi shrinkwrap gốc vì chúng được phát hành cùng với gói gốc; thay vào đó, mỗi gói không gian làm việc có thể phát hành sẽ ghim cây phụ thuộc bắc cầu riêng. Các gói Plugin phù hợp cũng có thể được phát hành với bundledDependencies được chỉ định rõ ràng, mang các tệp phụ thuộc khi chạy trong tệp tarball của Plugin thay vì chỉ dựa vào việc phân giải tại thời điểm cài đặt.
pnpm-lock.yaml. Điều này giữ nguyên ranh giới xem xét về tuổi của phụ thuộc pnpm, phần ghi đè và bản vá.
Hãy xem xét những nội dung sau như các thành phần nhạy cảm về bảo mật:
pnpm-lock.yamlnpm-shrinkwrap.json- tải trọng phụ thuộc được đóng gói kèm của Plugin
- mọi phần chênh lệch của
package-lock.json
package-lock.json đối với các gói đã phát hành. Quy trình phát hành Plugin lên npm kiểm tra shrinkwrap cục bộ của Plugin, cài đặt các phụ thuộc được đóng gói kèm ở cấp gói, sau đó đóng gói hoặc phát hành.