Existe-t-il un moyen d'obtenir npm pour déconstruire tous les modules sous node_modules? Quelque chose comme npm rebuild qui supprime tous les artefacts de build mais ne les reconstruit pas?
Je pensais que tu ne demanderais jamais. J'ai vérifié mon répertoire node_modules dans git comme recommandé dans mikealrogers.com/posts/nodemodules-in-git.html . Lorsque j'ajoute un nouveau module ou que j'en mets à jour un module actuel, je me retrouve avec des artefacts de construction dans git qui ne devraient pas être là et je dois les nettoyer. Je pensais que si je pouvais les nettoyer d'abord, le processus se déroulerait un peu plus facilement.
Dave Causey
1
Une note rapide: maintenant que NPM prend en charge shrinkwrap(voir npmjs.org/doc/shrinkwrap.html ), vous pouvez verrouiller les versions de TOUTES vos dépendances (au lieu de seulement celles de niveau supérieur).
Michelle Tilley
2
Ne pas avoir cette fonctionnalité est également nul pour le développement multiplateforme. Nous développons sur Mac et exécutons CI sous Linux, et devons supprimer le répertoire node_modules et le réinstaller complètement à chaque fois que nous faisons une compilation sous Linux, ce qui nous fait perdre beaucoup de temps.
JBCP
4
@JBCP vous vous trompez. Ce que vous devriez faire, c'est installer des modules dans packages.json(using npm --save) et mettre le node_modulesrépertoire .gitignore(si vous utilisez git ). CI ne doit pas extraire vos node_modules, mais s'exécuter npm install. Enfin, si le téléchargement à partir du registre npm prend trop de temps, utilisez quelque chose comme sinopia pour le mettre en cache.
Bojan Markovic
1
@BojanMarkovic - Vous avez raison, c'est ainsi que nos projets sont mis en place maintenant. Mon commentaire ci-dessus remontait à environ un an. Il y a (étaient) quelques projets qui recommandaient de valider node_modules dans Git, mais ce n'est certainement pas correct.
JBCP
Réponses:
160
Vous pouvez simplement supprimer le répertoire node_module
Cela supprimerait la source des node_modules ainsi que la sortie compilée, donc ne répond pas à la question.
theGecko
Si vous avez des dépendances liées au lien npm, il pourrait aussi bien supprimer ces modules source dans son répertoire source, ce qui peut être assez pénible ...
cschuff
12
J'ai ajouté à mon package.json: "clean": "rm -rf node_modules", "reinstall": "npm run clean && npm install", "rebuild": "npm run clean && npm install && npm run build",. Semble bien fonctionner.
Lucas
5
Pour Windows> rd node_modules / s
Ishara Samantha
2
@Lucas, vous devriez poster cette réponse car c'est la plus appropriée
Joseph
57
J'ai ajouté ceci à mon package.json:
"build":"npm build","clean":"rm -rf node_modules","reinstall":"npm run clean && npm install","rebuild":"npm run clean && npm install && npm run build",
Je trouve très étrange qu'une telle fonctionnalité de base, qui est en fait recommandée par npm, nécessite un hack pour atteindre. Que fait tout le monde? Ignorez simplement la recommandation et utilisez npm install?
VitalyB
5
En un mot non .
En deux, pas encore .
Il y a, cependant, un problème ouvert pour qu'un --no-builddrapeau npm installeffectue une installation sans construction, qui pourrait être utilisé pour faire ce que vous demandez.
shrinkwrap
(voir npmjs.org/doc/shrinkwrap.html ), vous pouvez verrouiller les versions de TOUTES vos dépendances (au lieu de seulement celles de niveau supérieur).packages.json
(usingnpm --save
) et mettre lenode_modules
répertoire.gitignore
(si vous utilisez git ). CI ne doit pas extraire vos node_modules, mais s'exécuternpm install
. Enfin, si le téléchargement à partir du registre npm prend trop de temps, utilisez quelque chose comme sinopia pour le mettre en cache.Réponses:
Vous pouvez simplement supprimer le répertoire node_module
la source
package.json
:"clean": "rm -rf node_modules", "reinstall": "npm run clean && npm install", "rebuild": "npm run clean && npm install && npm run build",
. Semble bien fonctionner.J'ai ajouté ceci à mon package.json:
Semble bien fonctionner.
la source
clean
doit être défini dans le package.json!Vous pouvez profiter de la commande 'npm cache' qui télécharge l'archive tar du package et la décompresse dans le répertoire de cache npm.
La source peut ensuite être copiée.
En utilisant des idées glanées sur https://groups.google.com/forum/?fromgroups=#!topic/npm-/mwLuZZkHkfU, j'ai créé le script de nœud suivant. Aucune garantie, YMMV, etc.
la source
npm install
?En un mot non .
En deux, pas encore .
Il y a, cependant, un problème ouvert pour qu'un
--no-build
drapeaunpm install
effectue une installation sans construction, qui pourrait être utilisé pour faire ce que vous demandez.Voir ce problème ouvert .
la source
Essayez https://github.com/voidcosmos/npkill
il trouvera tous les node_modules et vous permettra de les supprimer.
la source
Pour l'environnement Windows:
la source
J'ai ajouté quelques lignes dans package.json:
Si vous le souhaitez,
clean
vous pouvez l'utiliserrimraf node_modules
.la source
Il existe en fait une commande spéciale pour ce travail
Il supprimera le
node_modules
répertoire et installera les packages en respectant votrepackage-lock.json
fichierPlus d'infos: https://docs.npmjs.com/cli/ci.html
la source