2015-06-22 17 views
8

Sto cercando di rendere npm scaricare solo un singolo file in una directory su npm install del pacchetto.Come posso autorizzare un singolo file in una directory in .npmignore?

La directory si presenta come:

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

voglio NPM di ignorare tutto ma file.js così ho provato tra cui le seguenti nel mio .npmignore:

dist/ 
!dist/file.js 

Eppure, NPM sarà ancora scaricare tutte le directory in dist quando installo il pacchetto. Pensavo che questo avrebbe dovuto funzionare come .gitignore ma a quanto pare mi manca qualcosa qui.

risposta

7

Sì, si sta lavorando con pattern di tipo glob: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

Ma vorrei avere un approccio diverso:

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

al fine di non ignorare l'intera cartella, ma il suo contenuto (2 ° linea non può essere richiesto).

+0

Questo funziona, ma sinceramente non capisco perché. Perché '! Dist/file.js'" uccide "la regola' dist/', ma non quella' dist/* '? Accadrà anche in git? – m90

+0

Penso che "dist /" significhi includere l'intera directory così com'è (c'è una whitelist qui), ma quando si dice 'dist/*' o 'dist /.*' significa includere tutti i file nella directory 'dist' . Quindi, consente la lista nera credo. Almeno, è così che ho scelto di capirlo ;-) – thefourtheye

+0

Bella risposta +1. Ho trovato che la seconda riga ('dist /.*') non era necessaria e puoi testarla usando [come eseguire il debug di npmignore] (https://stackoverflow.com/questions/41412694/how-to-debug-npmignore) –