¿Cómo instalar un módulo NPM privado sin mi propio registro?


He tomado un código compartido y lo he puesto en un módulo NPM, uno que no quiero cargar en el registro central. La pregunta es, ¿cómo lo instalo desde otros proyectos?

La forma obvia es probablemente configurar mi propio registro NPM, pero de acuerdo con la documentación, eso implica un montón de problemas.

¿Puedo simplemente instalar un módulo NPM que se encuentra en el sistema de archivos local, o tal vez incluso desde git?

npm install --from-git git@server:project
Author: Yves M., 2012-04-30

12 answers

cd somedir
npm install .

O

npm install path/to/somedir

somedir debe contener el package.json dentro de él.

También sabe de git:

npm install git://github.com/visionmedia/express.git
 222
Author: mihai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-30 21:47:13

En sus módulos privados de npm agregue

"private": true 

A su paquete.json

Luego, para hacer referencia al módulo privado en otro módulo, use esto en su paquete.json

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://[email protected]:myaccount/myprivate.git#v1.0.0",
    }
}
 466
Author: 250R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-21 16:27:48

¿Puedo simplemente instalar un paquete NPM que se encuentra en el sistema de archivos local, o tal vez incluso desde git?

¡Sí puedes! De los documentos https://docs.npmjs.com/cli/install

Un paquete es:

  • a) una carpeta que contiene un programa descrito por un paquete.json file
  • b) un tarball comprimido con gzip que contenga (a)
  • c) una url que resuelve (b)
  • d) a <name>@<version> que se publica en el registro con (c)
  • e) a <name>@<tag> que apunta a d)
  • f) a <name> que tiene una etiqueta" última " que satisface (e)
  • g) a <git remote url> que resuelve b)

¿No es npm brillante?

 57
Author: Colonel Panic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-14 16:31:37

Actualización de enero de 2016

Además de otras respuestas , a veces existe el escenario en el que desea tener módulos privados disponibles en un contexto de equipo.

Tanto Github como Bitbucket soportan el concepto de generar un equipo API Key. Esta clave de API se puede usar como la contraseña para realizar solicitudes de API como este equipo.

En sus módulos privados de npm agregue

"private": true 

A su paquete.json

Luego, para hacer referencia al módulo privado en otro módulo, use esto en su paquete.json

    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:[email protected]/myprivate.git",
        }
    }

Donde nombre del equipo = myteamname, y API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

Aquí hago referencia a un repositorio de bitbucket, pero es casi idéntico usando github también.

Finalmente, como alternativa, si realmente no le importa pagar $7 por mes (al momento de escribir), entonces ahora puede tener módulos NPM privados fuera de cuadro.

 37
Author: arcseldon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-13 00:11:07

FWIW: Tuve problemas con todas estas respuestas al tratar con un repositorio de organización privada.

Lo siguiente funcionó para mí:

npm install -S "git+https://[email protected]/orgname/repositoryname.git"

Por ejemplo:

npm install -S "git+https://[email protected]/netflix/private-repository.git"

No estoy del todo seguro de por qué las otras respuestas no funcionaron para mí en este caso, porque son lo que intenté primero antes de golpear Google y encontré esta respuesta. Y las otras respuestas son lo que he hecho en el pasado.

Esperemos que esto ayude a alguien más.

 24
Author: Ben Lesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-20 21:45:11

Tuve este mismo problema, y después de algunas búsquedas, encontré a Reggie ( https://github.com/mbrevoort/node-reggie). Parece bastante sólido. Permite la publicación ligera de módulos NPM a servidores privados. No es perfecto (no hay autenticación en la instalación), y todavía es muy joven, pero lo probé localmente, y parece hacer lo que dice que debe hacer.

Eso es... (y esto solo de sus documentos)

npm install -g reggie
reggie-server -d ~/.reggie

Luego cd en el directorio del módulo y...

reggie -u http://<host:port> publish 
reggie -u http://127.0.0.1:8080 publish 

Finalmente, puede instalar paquetes desde reggie simplemente usando esa url, ya sea en un comando de instalación directa de npm, o desde dentro de un paquete.json... así

npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0

O..

dependencies: {
    "foo": "http://<host:port>/package/foo/1.0.0"
}
 7
Author: bwest87,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-16 23:04:40

Estructure su código de una manera accesible como a continuación. Si esto es posible para usted.

  • NodeProjs\Apps\MainApp \ package.json

  • NodeProjs \ Modules \ DataModule \ package.json

Dentro de MainApp @ NodProjs \ Apps \ MainApp \

npm install --S ../../Modules/DataModule

Es posible que tenga que actualizar el paquete.json as:

 "dependencies": {
       "datamodule": "../../Modules/DataModule"
}

Esto funcionó para mi situación.

 6
Author: wchoward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-14 20:32:47

Comenzando con la respuesta de arcseldon , encontré que el nombre del equipo era necesario en la URL de la siguiente manera:

npm install --save "git+https://myteamname@[email protected]/myteamname/myprivate.git"

Y tenga en cuenta que la clave API solo está disponible para el equipo, no para usuarios individuales.

 3
Author: neonhomer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:31:37

Npm ahora proporciona ilimitados módulos alojados privados por 7 7 / usuario / mes utilizados así

cd private-project
npm login

En su paquete json set "name": " @username/private-project"

npm publish

Luego para requerir tu proyecto:

cd ../new-project
npm install --save @username/private-project
 2
Author: roo2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-03 06:23:20

Config para instalar desde el repositorio público de Github, incluso si la máquina está bajo firewall:

dependencies: {
   "foo": "https://github.com/package/foo/tarball/master"
}
 1
Author: Alex Belozerov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-04 10:59:05

Utilizo lo siguiente con un repositorio github privado:

npm install github:mygithubuser/myproject
 1
Author: Lars,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-14 20:58:22

Muy simple -

npm config set registry https://path-to-your-registry/

En realidad establece registry = "https://path-to-your-registry" esta línea a /Users/<ur-machine-user-name>/.npmrc

Todo el valor que ha establecido explícitamente o que se ha establecido por defecto puede ser visto por - npm config list

 0
Author: sapy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-27 09:05:34