¿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
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
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",
}
}
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?
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.
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.
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"
}
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.
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.
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
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"
}
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
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
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