Co dokładnie powinienem włożyć .npmignore?
Testy? Rzeczy lubią .travis.yml, .jshintrc? Coś, co nie jest potrzebne podczas uruchamiania modułu (z wyjątkiem pliku readme)?
Nie mogę znaleźć żadnych wskazówek na ten temat.
Co dokładnie powinienem włożyć .npmignore?
Testy? Rzeczy lubią .travis.yml, .jshintrc? Coś, co nie jest potrzebne podczas uruchamiania modułu (z wyjątkiem pliku readme)?
Nie mogę znaleźć żadnych wskazówek na ten temat.
.npmignorelub "files"( docs.npmjs.com/files/package.json#files ).
Odpowiedzi:
Jak zapewne zauważyłeś, NPM tak naprawdę nie określa dokładnie, co powinno tam być, raczej ma listę ignorowanych domyślnie plików . Wiele osób nawet go nie używa, ponieważ wszystko w twoim .gitignorejest npmdomyślnie ignorowane, jeśli .npmignorenie istnieje. Ponadto wiele plików jest już domyślnie ignorowanych, niezależnie od ustawień, a niektóre pliki są zawsze wykluczane z ignorowania, jak opisano w powyższym łączu.
Nie ma zbyt wiele oficjalnych informacji na temat tego, co zawsze powinno tam być, ponieważ jest to w zasadzie podzbiór .gitignore, ale z tego, co wyciągam z używania node przez 5 lat, oto, co wymyśliłem.
Uwaga: Przez produkcję rozumiem każdą chwilę, w której twój moduł jest używany przez kogoś i nie rozwija się na samym module.
.coffeeplików do pakietu, ale śledzić je w repozytorium git.node-gypmogą mieć pliki obiektów, które są generowane podczas kompilacji, które nigdy nie powinny trafiać do pakietu..gitignoregrę. Musisz umieścić te rzeczy w tym miejscu, jeśli używasz .npmignorejuż pliku, ponieważ zastępuje on .gitignorez punktu widzenia npm..travis.ymlktóre nie są wymagane do używania, testowania lub przeglądania kodu.CNAMEplikami lub symbolami zastępczymi, index.htmljeśli używasz modułu, który służy gh-pagesrównież jako repozytorium.npm install, powinienem polegać tylko na npm i żadnych innych zewnętrznych źródłach.Zasadniczo powinieneś go używać, jeśli jest coś, co chcesz trzymać z dala od pakietu npm, ale nie z repozytorium npm. Nie jest to długa lista elementów, ale npm wolałby raczej wbudować funkcjonalność niż trzymać ludzi w swoich pakietach z nieistotnymi obiektami.
Zgadzam się z odpowiedzią krótkim i syntetic lante za i dużym odpowiedź Samt za :
Mój wkład w te odpowiedzi:
.npmignore to czarna lista umożliwiająca wybór pliku pakietu. Ale w bardziej praktyczny sposób możesz umieścić na białej liście pliki, które musisz uwzględnić w swoim pakiecie, używając pola plików w pliku package.json:
{
"files": [
"lib/",
"index.js"
]
}
Myślę, że to prostsze, przyszłościowe i ma lepszą semantykę;)
npm testwe wszystkich modułach node_modules może dać ci wskazówkę, jeśli coś działa inaczej w określonym środowisku.
.npmignore. files: ["lib", "!lib/**/*.test.js"]. :)
Dla wyjaśnienia, za każdym razem, gdy ktoś to zrobi npm install your-library, npm pobierze wszystkie pliki źródłowe zawarte w repozytorium, z wyjątkiem plików, które umieścisz w swoim .npmignore.
Wiedz, że osoby instalujące Twoją bibliotekę będą potrzebowały tylko Twojej biblioteki, nic innego nie będzie konieczne.
Na przykład, gdy ktoś instaluje bibliotekę, prawdopodobnie nie dba o twoje .travis.ymllub twoje .jshintrcpliki, a nawet niektóre obrazy, pliki Grunt, dokumentację itp.
.npmignore może pozwolić, aby Twój pakiet npm miał mniej plików i był szybszy do pobrania
.npmignorenie wpływa bezpośrednio na to, co jest pobierane , wpływa na to, co trafia do twojego pakietu, gdy publikujesz i przesyłasz npm . To pośrednio tworzy mniejsze pliki do pobrania.
Nie dołączaj swoich testów. Często testy są około 5 razy większe niż rzeczywista baza kodu. Dopóki twoje testy są na Githubie itp., To wystarczy.
Ale to, co absolutnie powinieneś zrobić, to przetestować swój pakiet NPM w opublikowanym formacie . Utwórz kilka testów dymnych, które znajdują się w rzeczywistej bazie kodu, ale nie są częścią zestawu testów.
Możesz przeczytać o testowaniu swojego pakietu po jego utworzeniu w archiwum, tutaj: https://github.com/ORESoftware/r2g
Jak przetestować wynik „npm opublikuj” bez faktycznego publikowania go w NPM?
npm install yourlibrary, na przykład.travis.ymli.jshintrc