2015-06-22 21 views
8

Tôi đang cố gắng thực hiện npm chỉ tải xuống một tệp duy nhất trong một thư mục trên npm install của gói.Tôi làm cách nào để đưa một tệp vào một thư mục trong .npmignore?

Thư mục trông giống như:

+- dist/ 
    +- 1.0.0/ 
    +- 1.0.1/ 
    +- ...lots of other dirs... 
    +- file.js 

Tôi muốn NPM để bỏ qua tất cả mọi thứ nhưng file.js vì vậy tôi cố gắng bao gồm những điều sau đây trong .npmignore tôi:

dist/ 
!dist/file.js 

Tuy nhiên, NPM sẽ vẫn tải về tất cả các thư mục trong dist khi tôi cài đặt gói. Tôi nghĩ rằng đây là nghĩa vụ phải làm việc như .gitignore nhưng dường như tôi đang thiếu một cái gì đó ở đây.

Trả lời

7

Có, nó đang làm việc sử dụng các mẫu glob: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

Nhưng tôi sẽ có một cách tiếp cận khác nhau:

dist/* 
dist/.* 
!dist/file.js 

để không bỏ qua toàn bộ thư mục nhưng nội dung của nó (dòng thứ 2 có thể không được yêu cầu).

+0

Tác phẩm này, nhưng thành thật mà nói tôi vẫn không hiểu tại sao. Tại sao '! Dist/file.js'" giết "quy tắc' dist/', nhưng không phải là' dist/* '? Điều này cũng xảy ra trong git? – m90

+0

Tôi nghĩ rằng 'dist /' có nghĩa là bao gồm toàn bộ thư mục như nó (có danh sách trắng ở đây), nhưng khi bạn nói 'dist/*' hoặc 'dist /.*' nó có nghĩa là bao gồm tất cả các tệp trong thư mục 'dist' . Vì vậy, nó cho phép danh sách đen tôi đoán. Ít nhất, đó là cách tôi đã chọn để hiểu nó ;-) – thefourtheye

+0

Câu trả lời hay nhất +1. Tôi thấy dòng thứ hai ('dist /.*') là không cần thiết và bạn có thể kiểm tra nó bằng cách sử dụng [how to debug npmignore] (https://stackoverflow.com/questions/41412694/how-to-debug-npmignore) –

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