135 votes

Comment installer un module node.js sans utiliser npm ?

Il existe un certain nombre de modules qui sont énumérés sur la page github de node mais ne sont pas publiés avec le npm-registry. Ces modules ne peuvent pas être installés en utilisant npm.

Quelle est la bonne façon d'installer ces modules nodejs après les avoir clonés depuis Git ?

82voto

nEEbz Points 7030

Vous devez télécharger leur source depuis le github. Trouvez le fichier principal et incluez-le dans votre fichier principal.

Vous en trouverez un exemple ici > Comment installer manuellement un module node.js ?

En général, vous devez trouver la source et parcourir le fichier package.json. Là, vous pouvez trouver quel est le fichier principal. Ainsi, vous pouvez l'inclure dans votre application.

Pour inclure example.js dans votre application. Copiez-le dans votre dossier d'application et ajoutez-le en haut de votre fichier js principal.

var moduleName = require("path/to/example.js")

1 votes

Est-il possible d'importer un script à partir d'une URL externe (comme var myscript = require("http://www.mywebsite.com/myscript.js") ) ? Il semble que le require ne fonctionne pas pour les URLs externes.

2 votes

Require est en fait synchrone, donc non, il ne fonctionne pas pour les URL externes.

0 votes

Remarque : vous devez retirer le -master ajouté aux bibliothèques github ; comme dans le changement xxx-master à xxx .

75voto

curieux Points 461

Ces modules ne peuvent pas être installés à l'aide de npm.

En fait, vous pouvez installer un module en spécifiant un chemin local au lieu d'un nom. Tant que le dépôt a un nom de module valide, le module est installé. package.json cela devrait fonctionner.


Type npm -l et une jolie aide apparaîtra comme ça :

CLI :

...
install     npm install <tarball file>
                npm install <tarball url>
                npm install <folder>
                npm install <pkg>
                npm install <pkg>@<tag>
                npm install <pkg>@<version>
                npm install <pkg>@<version range>

                Can specify one or more: npm install ./foo.tgz bar@stable /some/folder
                If no argument is supplied and ./npm-shrinkwrap.json is 
                present, installs dependencies specified in the shrinkwrap.
                Otherwise, installs dependencies from ./package.json.

Ce qui a attiré mon attention, c'est : npm install <folder>

Dans mon cas, j'ai eu des problèmes avec mrt donc j'ai fait ceci (dans un répertoire temporaire)

  • Clonez le dépôt

       git clone https://github.com/oortcloud/meteorite.git
  • Et je l'installe globalement avec :

       npm install -g ./meteorite

Conseil :

On peut aussi installer de la même manière le repo vers un projet npm local avec :

     npm install ../meteorite

On peut également créer un lien vers le dépôt, au cas où un patch en cours de développement serait nécessaire :

     npm link ../meteorite

Edit :

Aujourd'hui, npm supporte également les dépôts github et git (voir https://docs.npmjs.com/cli/v6/commands/npm-install ), comme raccourci, vous pouvez exécuter :

npm i github.com:some-user/some-repo

1 votes

Excellent. J'avais également des problèmes avec un module, j'ai donc créé une fourche et l'ai cloné dans un répertoire frère de mon projet web, mis à jour toutes ses dépendances avec les dernières versions, puis l'ai installé dans mon projet web avec 'npm install ../broken_module_name Cela a fonctionné comme un charme. Merci !

0 votes

+1 mais cela ne fonctionne pas si nous n'avons pas d'accès réseau pour npm et le module que nous installons avec npm install <folder> a d'innombrables autres dépendances npm.

0 votes

Si npm trouve le paquet dans les node_modules, soit à partir de la portée globale (pas sûr ici) ou locale, il ne tentera pas de le télécharger à nouveau. Cela signifie que si toutes les dépendances directes d'un repo peuvent être pré-téléchargées et copiées dans le dossier node_module, alors cela fonctionnera.

11voto

iancrowther Points 1313

Téléchargez le code de github dans le répertoire node_modules.

var moduleName = require("<name of directory>")

qui devrait le faire.

si le module a des dépendances et possède un package.json, ouvrez le module et entrez npm install.

J'espère que cela vous aidera

0 votes

Je pense que ce code fonctionne si le fichier principal est nommé index.js

8voto

Molnfront Points 395

Vous pouvez cloner le module directement dans votre projet local.

Démarrez le terminal. Connectez-vous à votre projet et ensuite :

npm install https://github.com/repo/npm_module.git --save

1 votes

La réponse que je cherchais.

0 votes

Que se passe-t-il lorsque le paquet a été modifié, comment mettre à jour vers la dernière version ? ATM, la seule "solution" que j'ai trouvée est de supprimer le fodler de node_modules, de supprimer l'entrée package.json et de le réinsérer, ce qui est pénible...

1voto

Vikram Points 1363

Pas à pas :

  • disons que vous travaillez sur un projet use-gulp qui utilise( require s) node_modules comme gulp et gulp-util .
  • Maintenant vous voulez faire quelques modifications à gulp-util et testez-la localement avec votre use-gulp projet...
  • Fourche gulp-util projet sur github \bitbucket etc.
  • Passez à votre projet : cd use-gulp/node_modules
  • Clone gulp-util comme gulp-util-dev : git clone https://.../gulp-util.git gulp-util-dev
  • Exécuter npm install pour garantir les dépendances de gulp-util-dev sont disponibles.
  • Maintenant vous avez un miroir de gulp-util comme gulp-util-dev . Dans votre use-gulp vous pouvez maintenant remplacer : require('gulp-util')...; appeler avec : require('gulp-util-dev') pour tester les modifications que vous avez apportées à gulp-util-dev

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X