J'ai ceci dans mon fichier package.json (version raccourcie):
{
"name": "a-module",
"version": "0.0.1",
"dependencies": {
"coffee-script": ">= 1.1.3"
},
"devDependencies": {
"stylus": ">= 0.17.0"
}
}
J'utilise la version 1.1.1 de NPM sur Mac 10.6.8.
Lorsque j'exécute la commande suivante à partir de la racine du projet, elle installe à la fois le dependencies
et devDependencies
:
npm install
J'avais l'impression que cette commande avait installé devDependencies
:
npm install --dev
Comment puis-je faire en sorte npm install
que seules les installations dependencies
(donc l'environnement de production n'obtient que ces modules), alors que quelque chose comme npm install --dev
installe les deux dependencies
et devDependencies
?
dependencies
etdevDependencies
et quand chacun d'eux est utilisé.Réponses:
La
npm install
commande installera ledevDependencies
long de l'autredependencies
lorsqu'elle est exécutée dans un répertoire de package, dans un environnement de développement (par défaut).Utilisez
npm install --only=prod
(ou--only=production
) pour installer uniquementdependencies
, et nondevDependencies,
quelle que soit la valeur de laNODE_ENV
variable d'environnement.Source: npm docs
Remarque: Avant la v3.3.0 de npm (2015-08-13), l'option était appelée
--production
, c'est-à-direnpm install --production
.la source
npm install yourpackage.tgz
n'obtiennent pas également les devDependencies. Mais c'est déjà le cas. Voir la réponse de Kevin Cox ci-dessous ( stackoverflow.com/a/15826602/825588 ).NODE_ENV=production
de quelque chose d'autre que je faisais et ne pouvais pas comprendre pour la vie de moi pourquoinpm install
ne pas installer de dépendances. Merci pour la réponse complète.npm install --dev
installerait uniquement les dépendances de développement--dev
option est déconseillée. Utilisez--only=dev
plutôt.Je rencontre aussi ce problème! L'installation de npm est quelque peu déroutante et les publications Web continuent d'introduire les indicateurs -d / - dev comme s'il y avait un mode d'installation explicite de «développement».
npm install
va installer les " dépendances " et " devDependencies "npm install --production
n'installera que des " dépendances "npm install --dev
installera uniquement " devDependencies "la source
NODE_ENV
est défini surproduction
et que vous l'exécutez,npm install
il n'installera pas les dépendances de développement. J'ai rencontré ce problème dans mon Dockerfile.npm --production=false install
(mais je ne sais pas si cela fonctionnera avec le drapeau --dev)La nouvelle option est:
Si vous souhaitez installer uniquement devDependencies:
la source
--only=prod
. Vous, monsieur, vous avez partiellement raison. ; PSi vous avez lu ce POST en 2016, veuillez réaliser ce que vous voulez en utilisant
L'argument entraînera soit uniquement les devDependencies, soit uniquement les non-devDependencies à installer, quel que soit le NODE_ENV.
à partir de: https://docs.npmjs.com/cli/install
la source
--production
et--only={prod[uction]|dev[elopment]}
.Si vous avez déjà installé toutes vos dépendances et que vous souhaitez éviter d'avoir à télécharger à nouveau vos packages de production à partir de NPM, vous pouvez simplement taper:
Cela supprimera vos dépendances dev de votre
node_modules
dossier, ce qui est utile si vous essayez d'automatiser un processus en deux étapes commeCourir
npm prune
entre les deux vous évitera de devoir tout réinstaller!la source
Lorsque vous utilisez "npm install", les modules sont chargés et disponibles dans toute votre application, qu'ils soient "devDependencies" ou "dependencies". Somme de cette idée: tout ce que votre package.json définit comme une dépendance (tout type) est installé sur node_modules.
Le but de la différence entre les dépendances / devDependencies / optionalDependencies est ce que les consommateurs de votre code peuvent faire w / npm pour installer ces ressources.
Selon la documentation: https://npmjs.org/doc/json.html ...
Cependant, pour résoudre cette question, si vous souhaitez installer UNIQUEMENT les "dépendances" à l'aide de npm, la commande suivante est:
Cela peut être confirmé en consultant le commit Git qui a ajouté ce filtre (ainsi que d'autres filtres [répertoriés ci-dessous] pour fournir cette fonctionnalité).
Filtres alternatifs utilisables par npm:
@dmarr essayez d'utiliser npm install --production
la source
npm installera les dépendances dev lors de l'installation depuis l'intérieur d'un paquet (s'il y en a un
package.json
dans le répertoire courant). S'il provient d'un autre emplacement (registre npm, git repo, emplacement différent sur le système de fichiers), il installe uniquement les dépendances.la source
npm install some-module
n'installera pas les dépendances de dev desome-module
.J'ai constaté que, lorsque vous essayez d'installer des dépendances dev pour un package qui contient un addon de nœud, vous ne pouvez pas éviter de construire l'addon lors de l'exécution de npm install --dev même si vous voulez simplement installer les devDependencies. J'ai donc dû faire le tour du npm:
Ou, mieux (et plus succinctement) encore,
la source
Utiliser
npm install packageName --save
ceci ajoutera un package dans les dépendances , si vous l'utilisez,npm install packageName --save-dev
il devDependencies .npm install packageName --save-dev
doit être utilisé pour ajouter des packages à des fins de développement. Comme l'ajout de packages TDD (Chai, mocha, etc.). Qui sont utilisés dans le développement et non dans la production.la source
package.json
mais une fois que ces dépendances sont déjà enregistrées , alors comment contraindrenpm
à n'installer qu'un seul type spécifique de dépendance. Lorsque j'ai lu votre réponse ici, je n'ai rien appris qui puisse résoudre le problème posé par le PO.Il convient de mentionner que vous pouvez utiliser la
NODE_ENV
variable d'environnement pour obtenir le même résultat. Particulièrement utile si vous conteneurisez votre application Node (par exemple Docker).Le code ci-dessus installera toutes vos dépendances sauf celles de développement (ie
devDependencies
).si vous avez besoin d'utiliser des variables d'environnement dans votre
Dockerfile
plus d'informations peuvent être trouvées ici .Les variables d'environnement sont faciles à remplacer en cas de besoin (par exemple, si vous souhaitez exécuter votre suite de tests, par exemple sur Travis CI). Si tel était le cas, vous pourriez faire quelque chose comme ceci:
Documentation NPM ici
Conteneurisation heureuse =)
la source
Je suggère d'utiliser
npm ci
. Si vous souhaitez installer uniquement les packages nécessaires à la production (comme vous l'avez écrit - sansdevDependencies
), alors:ou
Si vous préférez oldschool
npm install
alors:ou
Voici une bonne réponse pourquoi vous devriez utiliser
npm ci
.la source
npm ci
aussi, pas seulementnpm install
!Besoin d'ajouter à la réponse choisie: À partir de maintenant,
npm install
dans un répertoire de package (contenantpackage.json
) va installer devDependencies, alors quenpm install -g
ne les installera pas.la source
-g
ne s'installera pasdevDependencies
, mais il installe les packages globalement, ce qui n'est souvent pas le résultat souhaité.npm install --production
est la bonne façon d'installer les modules de nœuds nécessaires à la production. Consultez la documentation pour plus de détailsla source
Maintenant, il y a un problème, si vous avez package-lock.json avec npm 5+. Vous devez le retirer avant utilisation de
npm install --production
.la source
Et, conformément à la question pour installer uniquement les dépendances, la commande suivante vous aidera
la source