Respuestas:
De la documentación de npm-link :
En el directorio del módulo local:
$ cd ./package-dir
$ npm link
En el directorio del proyecto para usar el módulo:
$ cd ./project-dir
$ npm link package-name
O de una vez usando rutas relativas:
$ cd ./project-dir
$ npm link ../package-dir
Esto es equivalente a usar dos comandos anteriores debajo del capó.
npm linkcreará una segunda instancia de dependencias externas. Entonces, si tiene un paquete A necesita B y C, B necesita C. vincular B hará que la aplicación A tenga dos instancias de C.
solo debe proporcionar un <folder>argumento npm install, el argumento debe apuntar hacia la carpeta local en lugar del nombre del paquete:
npm install /path
rm -rf node_modulesantes y npm installdespués de ejecutar el script de respuesta.
Dado que la misma persona me preguntó y respondió, agregaré un enlace npm como alternativa.
de documentos:
Esto es útil para instalar sus propias cosas, para que pueda trabajar en ellas y probarlas de forma iterativa sin tener que reconstruirlas continuamente.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[Editar] A partir de NPM 2.0, puede declarar dependencias locales en package.json
"dependencies": {
"bar": "file:../foo/bar"
}
npm linkcontra la carpeta una vez (para crear un enlace simbólico global) y luego ejecutarla npm link package-namedentro de la carpeta del proyecto (para usar el enlace simbólico global en su proyecto). La respuesta a continuación es la respuesta correcta.
file:enfoque) permitió que mi aplicación y el módulo local compartieran una dependencia. Mi prueba de npm linkresultó en una dependencia duplicada, que rompe cosas si la dependencia necesita ser utilizada como un singleton.
npm pack + package.jsonEsto es lo que funcionó para mí:
module project, ejecute npm pack:Esto construirá un <package-name>-<version>.tar.gz archivo.
consumer projectIdealmente, puede colocar todos esos archivos en una tmpcarpeta en su consumer-projectraíz:
package.json :"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Installlos paquetes:npm install o npm i oyarn
consumer-project's node_modules carpeta.Buena suerte...
Ninguno de estos enfoques ( npm linkopackage.json dependencia de archivos) funciona si el módulo local tiene dependencias pares que solo desea instalar en el alcance de su proyecto.
Por ejemplo:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
En este escenario, npm configura myproject's node_modules/así:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Cuando el nodo se carga mymoduley lo hace require('foo'), el nodo resuelve el mymoduleenlace simbólico, y luego solo busca /local/mymodule/node_modules/(y sus antepasados) foo, lo que no encuentra. En cambio, queremos que el nodo mire /local/myproject/node_modules/, ya que desde allí ejecutamos nuestro proyecto y dónde fooestá instalado.
Por lo tanto, necesitamos una forma de decirle al nodo que no resuelva este enlace simbólico cuando lo busque foo, o necesitamos una forma de decirle a npm que instale una copia de mymodulecuándo se usa la sintaxis de dependencia de archivos package.json. Tampoco he encontrado una manera de hacerlo, desafortunadamente :(
NODE_PATHpara apuntar al lugar node_modules/donde fooestá instalado. Entonces, para el caso anterior, sería este: NODE_PATH=/dev/myproject/node_modules/ eso permite mymoduleencontrar foo.
Como han respondido las personas anteriores npm --save ../location-of-your-packages-root-directory. Sin ../location-of-your-packages-root-directoryembargo, debe tener dos cosas para que funcione.
1) package.jsonen ese directorio apuntado hacia
2) la mainpropiedad en el package.jsondebe establecerse y trabajar ig "main": "src/index.js",si el archivo de entrada ../location-of-your-packages-root-directoryes../location-of-your-packages-root-directory/src/index.js