Chính xác thì tôi nên đưa vào cái gì .npmignore
cái gì?
Các bài kiểm tra? Stuff thích .travis.yml
, .jshintrc
? Bất kỳ thứ gì không cần thiết khi chạy mô-đun (ngoại trừ readme)?
Tôi không thể tìm thấy bất kỳ hướng dẫn nào về điều này.
Chính xác thì tôi nên đưa vào cái gì .npmignore
cái gì?
Các bài kiểm tra? Stuff thích .travis.yml
, .jshintrc
? Bất kỳ thứ gì không cần thiết khi chạy mô-đun (ngoại trừ readme)?
Tôi không thể tìm thấy bất kỳ hướng dẫn nào về điều này.
.npmignore
hoặc "files"
( docs.npmjs.com/files/package.json#files ).
Câu trả lời:
Như bạn có thể thấy, NPM không thực sự chỉ ra cụ thể những gì nên đi vào đó, thay vào đó họ có một danh sách các tệp bị bỏ qua theo mặc định . Nhiều người thậm chí không sử dụng nó vì mọi thứ trong của bạn .gitignore
bị bỏ qua npm
theo mặc định nếu.npmignore
không tồn tại. Ngoài ra, nhiều tệp đã bị bỏ qua theo mặc định bất kể cài đặt nào và một số tệp luôn bị loại trừ khỏi việc bị bỏ qua, như được nêu trong liên kết ở trên.
Không có nhiều thông tin chính thức về những gì luôn nên có vì về cơ bản nó là một tập hợp con của .gitignore
, nhưng từ những gì tôi thu thập được từ việc sử dụng nút trong 5 năm, đây là những gì tôi đã đưa ra.
Lưu ý: Theo sản xuất, tôi có nghĩa là bất kỳ lúc nào mà mô-đun của bạn được ai đó sử dụng và không phát triển trên chính mô-đun đó.
.coffee
các tệp trong gói của mình nhưng tiếp tục theo dõi chúng trong kho lưu trữ git của bạn.node-gyp
có thể có các tệp đối tượng được tạo trong quá trình xây dựng mà không bao giờ nên đi vào gói..gitignore
Dù sao thì điều này cũng nên đi vào . Bạn phải đặt những thứ này bên trong đây nếu bạn đang sử dụng một .npmignore
tệp vì nó ghi đè .gitignore
theo quan điểm của npm..travis.yml
không bắt buộc để sử dụng, thử nghiệm hoặc xem mã.CNAME
các tệp hoặc trình giữ chỗ index.html
nếu bạn sử dụng mô-đun của mình cũng phục vụ hai nhiệm vụ như một gh-pages
kho lưu trữ.npm install
, tôi chỉ nên dựa vào npm và không có nguồn bên ngoài nào khác.Về cơ bản, bạn nên sử dụng nó nếu có thứ gì đó bạn muốn giữ ngoài gói npm của mình nhưng không nằm ngoài kho lưu trữ npm của bạn. Đó không phải là một danh sách dài các mục, nhưng npm thà xây dựng trong chức năng hơn là để mọi người mắc kẹt với các đối tượng không liên quan trong gói của họ.
Tôi đồng ý với câu trả lời ngắn gọn và tổng hợp của lante và câu trả lời lớn của SamT :
Đóng góp của tôi cho những câu trả lời đó:
.npmignore là cách danh sách đen để đạt được lựa chọn tệp gói. Nhưng theo một cách thực tế hơn, bạn có thể lập danh sách trắng các tệp bạn cần đưa vào gói của mình bằng cách sử dụng trường tệp trong package.json của bạn:
{
"files": [
"lib/",
"index.js"
]
}
Tôi nghĩ điều đó đơn giản hơn, bằng chứng trong tương lai và có ngữ nghĩa tốt hơn;)
npm test
trên tất cả các node_modules có thể cung cấp cho bạn một gợi ý nếu có thứ gì đó hoạt động khác trong một môi trường nhất định.
.npmignore
. files: ["lib", "!lib/**/*.test.js"]
. :)
Chỉ cần làm rõ, bất cứ khi nào ai đó làm npm install your-library
, npm sẽ tải xuống tất cả các tệp nguồn mà kho lưu trữ bao gồm, ngoại trừ các tệp mà bạn đưa vào.npmignore
.
Biết rằng những người cài đặt thư viện của bạn sẽ chỉ cần thư viện của bạn chạy, mọi thứ khác sẽ không cần thiết.
Ví dụ: khi ai đó cài đặt một thư viện, có thể họ không quan tâm đến tệp .travis.yml
của bạn hoặc của bạn .jshintrc
, hoặc thậm chí một số hình ảnh, tệp Grunt, tài liệu, v.v.
.npmignore
có thể cho phép gói npm của bạn có ít tệp hơn và tải xuống nhanh hơn
.npmignore
không ảnh hưởng trực tiếp đến những gì đã tải xuống , nó ảnh hưởng đến những gì đi vào gói của bạn khi bạn npm xuất bản và tải lên. Điều này gián tiếp tạo ra các tệp nhỏ hơn để tải xuống.
Không bao gồm các bài kiểm tra của bạn. Thông thường, các bài kiểm tra có kích thước gấp 5 lần kích thước của cơ sở mã thực tế. Miễn là các bài kiểm tra của bạn trên Github, v.v., vậy là đủ tốt.
Nhưng điều bạn hoàn toàn nên làm là kiểm tra gói NPM của mình ở định dạng đã xuất bản . Tạo một số thử nghiệm khói nằm trong cơ sở mã thực, nhưng không phải là một phần của bộ thử nghiệm.
Bạn có thể đọc về cách kiểm tra gói của mình sau khi tarball nó, tại đây: https://github.com/ORESoftware/r2g
Làm thế nào để kiểm tra kết quả `npm xuất bản` mà không thực sự xuất bản lên NPM?
npm install yourlibrary
, ví dụ.travis.yml
và.jshintrc