Cosa dovrei inserire esattamente .npmignore
?
Test? Roba come .travis.yml
, .jshintrc
? Qualcosa che non è necessario durante l'esecuzione del modulo (eccetto il readme)?
Non riesco a trovare alcuna guida su questo.
Cosa dovrei inserire esattamente .npmignore
?
Test? Roba come .travis.yml
, .jshintrc
? Qualcosa che non è necessario durante l'esecuzione del modulo (eccetto il readme)?
Non riesco a trovare alcuna guida su questo.
.npmignore
o "files"
( docs.npmjs.com/files/package.json#files ).
Risposte:
Come probabilmente hai scoperto, NPM non specifica esattamente cosa dovrebbe essere inserito, piuttosto ha un elenco di file ignorati per impostazione predefinita . Molte persone non lo usano nemmeno perché tutto nel tuo .gitignore
viene ignorato npm
per impostazione predefinita se .npmignore
non esiste. Inoltre, molti file sono già ignorati per impostazione predefinita indipendentemente dalle impostazioni e alcuni file sono sempre esclusi dall'essere ignorati, come indicato nel collegamento sopra.
Non c'è molto ufficiale su ciò che dovrebbe essere sempre lì perché è fondamentalmente un sottoinsieme di .gitignore
, ma da quello che ho raccolto dall'uso di node per 5 anni, ecco cosa ho trovato.
Nota: per produzione intendo qualsiasi momento in cui il tuo modulo viene utilizzato da qualcuno e non per svilupparsi sul modulo stesso.
.coffee
file nel pacchetto, ma continuare a tracciarli nel repository git.node-gyp
potrebbero avere file oggetto che vengono generati durante una build che non dovrebbero mai essere inseriti nel pacchetto..gitignore
ogni caso. Devi mettere queste cose qui dentro se stai .npmignore
già usando un file in quanto sovrascrive .gitignore
dal punto di vista di npm..travis.yml
non sono necessarie per usare, testare o visualizzare il codice.CNAME
file o segnaposto index.html
se usi il tuo modulo che serve comegh-pages
repository.npm install
eseguo un , dovrei fare affidamento solo su npm e non altre fonti esterne.Fondamentalmente, dovresti mai usarlo se c'è qualcosa che desideri tenere fuori dal tuo pacchetto npm ma non dal tuo repository npm. Non è un lungo elenco di elementi, ma npm preferirebbe integrare la funzionalità piuttosto che avere persone bloccate con oggetti irrilevanti nel loro pacchetto.
Sono d'accordo con la risposta breve e sintetica di lante e la grande risposta di SamT :
Il mio contributo a quelle risposte:
.npmignore è il modo nella lista nera per ottenere la selezione del file del pacchetto. Ma in un modo più pratico, puoi inserire nella whitelist i file che devi includere nel tuo pacchetto usando il campo files nel tuo package.json:
{
"files": [
"lib/",
"index.js"
]
}
Penso che sia più semplice, a prova di futuro e abbia una semantica migliore;)
npm test
su tutti i node_modules può darti un suggerimento se qualcosa funziona in modo diverso in un determinato ambiente.
.npmignore
. files: ["lib", "!lib/**/*.test.js"]
. :)
Giusto per chiarire, ogni volta che qualcuno lo fa npm install your-library
, npm scaricherà tutti i file sorgente inclusi nel repository, ad eccezione dei file che includi nel tuo.npmignore
.
Sappi che le persone che installano la tua libreria avranno bisogno solo della tua libreria in esecuzione, qualsiasi altra cosa non sarà necessaria.
Ad esempio, quando qualcuno installa una libreria, è probabile che non gli importi dei tuoi .travis.yml
o dei tuoi .jshintrc
file, o anche di alcune immagini, file Grunt, documentazione, ecc.
.npmignore
potrebbe lasciare che il tuo pacchetto npm abbia meno file e più veloce da scaricare
.npmignore
non influisce direttamente su ciò che viene scaricato , influisce su ciò che entra nel tuo pacchetto quando npm pubblichi e carichi. Questo indirettamente crea file più piccoli da scaricare.
Non includere i tuoi test. Spesso i test sono circa 5 volte la dimensione della base di codice effettiva. Finché i tuoi test sono su Github, ecc., È abbastanza buono.
Ma quello che dovresti assolutamente fare è testare il tuo pacchetto NPM nel formato pubblicato . Creare alcuni test del fumo che risiedono nella base di codice effettiva, ma non fanno parte della suite di test.
Puoi leggere informazioni sul test del tuo pacchetto dopo averlo tarballato, qui: https://github.com/ORESoftware/r2g
Come testare un risultato di "pubblicazione npm", senza effettivamente pubblicare su NPM?
npm install yourlibrary
, ad esempio.travis.yml
e.jshintrc