2015-06-22 20 views
8

Próbuję zrobić npm pobrać tylko jeden plik w katalogu na npm install pakietu.Jak mogę dodać do białej listy pojedynczy plik w katalogu w pliku .npmignore?

Katalog wygląda następująco:

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

Chcę npm ignorować wszystko, ale file.js więc próbowałem tym następujące w moim .npmignore:

dist/ 
!dist/file.js 

Jednak npm nadal będzie pobrać wszystkie katalogi w dist po zainstalowaniu pakietu. Myślałem, że to ma działać jak .gitignore, ale najwyraźniej brakuje mi tutaj.

Odpowiedz

7

Tak, to działa przy użyciu wzorców glob: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

Ale mam inne podejście:

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

aby nie ignorować cały folder, ale jego zawartość (2. linia nie może być potrzebnym).

+0

To działa, ale szczerze mówiąc nadal nie rozumiem, dlaczego. Dlaczego '! Dist/file.js'" zabija "regułę' dist/', ale nie" dist/* "? Czy stanie się to również w git? – m90

+0

Myślę, że 'dist /' oznacza cały katalog w obecnej postaci (jest tutaj biała lista), ale kiedy mówisz 'dist/*' lub 'dist /.*' oznacza to, że zawierają wszystkie pliki w katalogu 'dist' . Pozwala to na czarną listę. Przynajmniej tak postanowiłem to zrozumieć ;-) – thefourtheye

+0

Dobra odpowiedź +1. Zauważyłem, że druga linia ('dist /.*') nie była konieczna i możesz ją przetestować używając [jak debugować npmignore] (https://stackoverflow.com/questions/41412694/how-to-debug-npmignore) –