Ich verwende TypeScript 2 in meinem Projekt. Ich möchte einige js-Bibliotheken verwenden, aber auch Eingaben für diese Bibliothek. Ich kann Typen mit einfachen installieren npm install @types/some-library
. Ich bin mir nicht sicher, ob ich --save
oder --save-dev
sie sollte. Es scheint mir, dass sogar DefinetelyTyped GitHub Readme beide Versionen erwähnt, sie aber nie erklärt. Ich würde denken, dass @types in sein sollte devDependencies
, da Typen für die Entwicklung benötigt werden und nicht zur Laufzeit verwendet werden, aber ich habe @types oft in just gesehen dependencies
. Ich bin verwirrt.
Wie soll ich entscheiden, ob @ types / * in dependencies
oder geht devDependencies
? Gibt es tatsächlich mehr oder weniger offizielle Anweisungen?
dependencies
unddevDependencies
im letzteren Fall unterscheiden.devDependencies
unddependencies
irrelevant ist , wenn ein Bündel Gebäude, es ist etwas , dascreate-react-app
erzwingt auch , aber letztlich ist es an Sie zu wählenAntworten:
Angenommen, Sie entwickeln ein Paket "A" mit dem Paket @ types / some-module in devDependencies. Aus irgendeinem Grund exportieren Sie den Typ aus @ types / some-module
Derzeit können Typescript-Konsumenten des Pakets "A" nicht erraten, was SomeType ist, da devDependencies des Pakets "A" NICHT installiert sind.
In diesem speziellen Fall MÜSSEN Sie das Paket @ types / * mit regulären "Abhängigkeiten" platzieren. Für andere Fälle sind "devDependencies" gut genug.
quelle
devDependencies
?dependencies
. AnsonstendevDependencies
istdependencies
wird der Abhängigkeitsbaum aufgebläht.Wenn Sie nur ein Bundle generieren, müssen Sie möglicherweise nicht zwischen
dependencies
und unterscheidendevDependencies
. Diese Funktion vonnpm
ist im Allgemeinen nützlich, wenn Sie ein Paket veröffentlichen, das von anderen verwendet werden kann, und Sie möchten sie nicht mit redundanten Abhängigkeiten spammen.Es kann andere Anwendungsfälle geben, in denen das Aufteilen von Abhängigkeiten hilfreich sein kann. Wenn Sie dies jedoch nicht ausdrücklich benötigen, ist es mein Rat, einfach einen auszuwählen und alles dort zu platzieren. Es ist nicht schwierig, sie später aufzuteilen, wenn es nötig sein sollte.
Ein bekanntes Beispiel für diese Vorgehensweise ist
create-react-app
, dass IRL standardmäßig die nicht ausgeworfene Boilerplate, in der es erstellt wird, alles platziertdependencies
, siehe diesen Thread und diese Antwortquelle
devDependencies
werden nicht installiert, wenn Sie dies tunnpm install --production
(odernpm ci --production
), und sind daher beim Ausführen von Produktionscode nicht verfügbar. Dies ist ein sehr bedeutender Unterschied für einen Dienst, nicht nur für eine Bibliothek.Im speziellen Fall der Bereitstellung einer Node.js-Anwendung für die Produktion möchten nur die Abhängigkeiten installiert werden, die zum Ausführen der Anwendung erforderlich sind.
npm install --production
odernpm ci --production
oderyarn --production
In diesem Fall sollten sich die Typen in der befinden
devDependencies
, damit sie die Installation nicht aufblähen.Bemerkung: Mir ist bekannt, dass dies in einem Kommentar von Brad Wilson zu einer anderen Antwort erwähnt wurde. Dieser Punkt scheint jedoch eine Antwort wert zu sein.
quelle