npm install non installa devDependencies


256

Su Windows per qualche motivo quando eseguonpm install non installerà devDependencies . AFAIK dovrebbe. Se corro npm install --dev devDependencies sono installati. Non capisco perché npm installnon installi anche devDependencies , ma installa solo dipendenze. Quale potrebbe essere la ragione? Come posso ripararlo?

Forse qualcosa non va nel mio package.json ? È elencato di seguito se può essere utile:

{
  "name": "try-brunch",
  "version": "0.1.0",
  "private": "true",
  "devDependencies": {
    "brunch": "^2.0.4",
    "cssnano-brunch": "^1.1.5",
    "javascript-brunch": "^1.8.0",
    "sass-brunch": "^1.9.2",
    "uglify-js-brunch": "^1.7.8"
  },
  "dependencies": {
    "jquery": "^2.1.4"
  }
}

5
Perché abbiamo persino bisogno di una correzione per questo? Dovrebbe essere l'impostazione predefinita! devDependenciessono letteralmente dipendenze per gli sviluppatori del modulo . Scommetto che la maggior parte di noi è npm installun modulo per usarlo, piuttosto che svilupparlo.
Константин Ван

Supponi di scrivere un'app e di disporre di un plug-in logger o webpack. quelli sono devdeps. quelli devono essere installati. npm non li installa in alcuni casi.
Tristan Tzara,

1
Voglio dire, l'installazione devDependenciesè necessaria solo quando si scrive il pacchetto (applicazione). Usarlo non richiede il devDependencies. Quindi è ragionevole devDependenciesrichiedere l'installazione di flag aggiuntivi. Se npm installinstallato devDependencies per impostazione predefinita , gli utenti otterrebbero anche pacchetti ridondanti.
Константин Ван

il comportamento documentato è che quando lo faccio npm inella mia cartella prende PY package.jsone installa sia Deps che Devdeps. Questo è il modo in cui è destinato a funzionare ed ha senso (ad esempio quando lo faccio npm idopo git clonemi aspetto di avere tutto ciò di cui ho bisogno, inclusi ad esempio i plug-in Webpack). Questa domanda risolve un bug, quando il comportamento effettivo è diverso da quello previsto. per favore, dai un'occhiata a docs - docs.npmjs.com/cli/install . C'è una bandiera per non installare devdeps, ma il comportamento predefinito è installarli, il che ha perfettamente senso ed è quello che tutti si aspettano
Tristan Tzara

Non vedo alcun motivo ragionevole per farmi ricordare di eseguire un altro comando per installare ad esempio plugin Webpack o def di tipo dattiloscritto o qualsiasi altro Devdeps ogni volta che tiro. npm i dovrebbe avviare entrambi, che è il comportamento previsto, sano e documentato, quindi sinceramente non capisco perché dici che questo problema dovrebbe essere uno standard
Tristan Tzara

Risposte:


306

Controlla i documenti NPM per l' installazione

Con il --productionflag (o quando la variabile di ambiente NODE_ENV è impostata su produzione), npm non installerà i moduli elencati in devDependencies. "

L' --only={prod[uction]|dev[elopment]}argomento causerà l'installazione solo di devDependencies o solo di non devDependencies indipendentemente da NODE_ENV. "

Hai provato

npm install --only=dev

Se temi che il tuo package.json sia errato, la cosa migliore da fare è questa. Crea una nuova cartella ed esegui:

npm init --yes

Poi:

npm install --save-dev brunch@^2.0.4
npm install --save-dev cssnano-brunch@^1.1.5
npm install --save-dev javascript-brunch@^1.8.0
npm install --save-dev sass-brunch@^1.9.2
npm install --save-dev uglify-js-brunch@^1.7.8
npm install jquery@^2.1.4 --save

E dovresti essere bravo ad andare! Altrimenti, continueremo a pubblicare altre opzioni.

Controlla la tua configurazione npm:

npm config list

npm ottiene le sue impostazioni di configurazione dalla riga di comando, dalle variabili di ambiente e dai file npmrc. Quindi controlla le variabili d'ambiente e il file npmrc .

Ancora fallendo?

Ok, crea una nuova cartella, idealmente da qualche altra parte sul tuo filesystem. vale a dire. non nella stessa gerarchia di cartelle. Ad esempio, C: \ myNewFolder - più vicino alla base C: guida meglio.

Quindi eseguire:

npm init --yes

Ora esegui:

npm install underscore --save

e infine:

npm install mocha --save-dev

Funziona tutto come previsto?

Quello che sto cercando di fare è capire se il tuo problema è globale o qualcosa di locale nella cartella e nelle dipendenze precedenti.


Tristan - questo aiuta la tua situazione? Per favore, puoi contrassegnare la risposta come corretta, oppure fammi sapere il risultato del provare quanto sopra?
arcseldon,

2
npm install --only = dev installa devdeps, ma vorrei installare sia deps che devdeps contemporaneamente. package.json sembra essere ok, in quanto ricrearlo non cambia nulla. Ho ragione che NODE_ENV esiste sia a livello globale, come valore predefinito e localmente, come valore per il progetto? Dove posso controllare e modificare questi valori su Windows (ho cercato e non ho nessuna variabile di sistema NODE_ENV)
Tristan Tzara,

@TristanTzara - attualmente lavoro quasi esclusivamente su MAC. Tuttavia, dai ricordi dei giorni passati (anni fa su NT e XP) - puoi digitare qualcosa come "imposta" nella finestra del prompt dei comandi .. Altrimenti vai a qualcosa come Proprietà di sistema -> Avanzate -> Variabili d'ambiente e controlla le tue voci lì . Stai cercando una "chiave" con NODE_ENV. Ora cercherò Google per un'opzione di Windows, ma questa verrà pubblicata nel caso in cui sia di aiuto.
arcseldon,


@TristanTzara - è buono a sapersi. Un pensiero, controlla tutte le directory principali sopra la tua directory che non funzionano. Cerca una cartella node_modules esistente ... npm cercherà verso l'alto quando cerca di risolvere una dipendenza e potrebbe essere qualcosa di strano come se stesse raccogliendo un modulo installato esistente più in alto nella struttura delle directory e quindi rifiutando di installare il tuo nella cartella figlio . Il solito posto è proprio sotto la tua home directory .. Buona fortuna e grazie per aver riconosciuto la mia risposta: D
arcseldon,

85

Controllare se il valore di produzione di npm config è impostato su true. Se questo valore è vero, salterà le dipendenze degli sviluppatori.

Correre npm config get production

Per impostarlo: npm config set -g production false


Mi chiedo se, da qualche parte tra npm 5.xe npm 6.x, se non è stato impostato alcun valore, l'impostazione predefinita diventa trueanziché false?
James Perih,

38

assicurati di non avere la variabile env NODE_ENVimpostata su 'produzione'.

In tal caso, le dipendenze degli sviluppatori non verranno installate senza il --devflag


Ho dato un'occhiata alle mie variabili di sistema e non ho nemmeno questo qui. Forse guardo nel posto sbagliato?
Tristan Tzara,

13
Nota che npm install --devinstalla devDependencies in modo ricorsivo . Questo non è quasi mai quello che vuoi ed è in effetti deprecato .
Wonko,

Grazie. Non sapevo che questo avrebbe avuto un impatto sulle normali installazioni di npm, ma è logico. :)
Lothre1,

6
L'uso --devdell'opzione è deprecato. Usa --only=devinvece
Sarath Ak,

16

Avevo un package-lock.jsonfile da una vecchia versione del mio package.json, l'ho cancellato e quindi tutto installato correttamente.


Bingo! Ciò ha risolto il mio problema. Sembra che avremmo dovuto impegnarlo nel repository.
randomor,

9

Ho avuto un problema simile. npm install --only=devnon ha funzionato e neanche npm rebuild. In ultima analisi, ho dovuto cancellare node_modulese package-lock.jsoned eseguire npm installdi nuovo. Ciò ha risolto il problema per me.


7

È possibile utilizzare il modo breve per le dipendenze di installazione solo per lo sviluppo come segue:

npm i -D <dependencies-names>

migliore risposta. Potrebbe essere in cima
wwwwwwwwwwww

6

Assicurati che il tuo package.jsonsia valido ...

Ho avuto il seguente errore ...

npm WARN Invalid name: "blah blah blah"

e che, allo stesso modo, devDependenciesnon ha causato l' installazione.

Cordiali saluti, cambiando il package.json"nome" per blah-blah-blahrisolverlo.


0

Ho lo stesso problema perché ho impostato NODE_ENV=productionmentre costruivo Docker. Quindi ne aggiungo uno in più npm install --only=dev. Tutto funziona bene. Ho bisogno delle devDependencies per creare moduli TypeSciprt

RUN npm install
RUN npm install --only=dev
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.