Respostas:
Na documentação do npm-link :
No diretório do módulo local:
$ cd ./package-dir
$ npm link
No diretório do projeto para usar o módulo:
$ cd ./project-dir
$ npm link package-name
Ou de uma só vez, usando caminhos relativos:
$ cd ./project-dir
$ npm link ../package-dir
Isso é equivalente a usar dois comandos acima, sob o capô.
npm link
isso criará uma segunda instância de dependências externas. Então, se você tem um pacote A necessidade B e C, B necessidade C. ligando B fará com que a aplicação A ter duas instâncias do C.
você apenas fornece um <folder>
argumento para npm install
, o argumento deve apontar para a pasta local em vez do nome do pacote:
npm install /path
rm -rf node_modules
antes e npm install
depois de executar o script da resposta.
Como solicitado e respondido pela mesma pessoa, adicionarei um link npm como alternativa.
dos documentos:
Isso é útil para instalar seu próprio material, para que você possa trabalhar nele e testá-lo iterativamente sem precisar reconstruir 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 do NPM 2.0, você pode declarar dependências locais no pacote.json
"dependencies": {
"bar": "file:../foo/bar"
}
npm link
a pasta uma vez (para criar um link simbólico global) e depois executar npm link package-name
dentro da pasta do projeto (para usar o link simbólico global no seu projeto). A resposta abaixo é a resposta certa.
file:
abordagem) permitiu que meu aplicativo e o módulo local compartilhassem uma dependência. Meu teste npm link
resultou em uma dependência duplicada, que quebra as coisas se a dependência precisar ser usada como um singleton.
npm pack
+ package.json
Isto é o que funcionou para mim:
module project
, execute npm pack
:Isso criará um <package-name>-<version>.tar.gz
arquivo.
consumer project
Idealmente, você pode colocar todos esses arquivos em uma tmp
pasta na sua consumer-project
raiz:
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
os pacotes:npm install
ou npm i
ouyarn
consumer-project's node_modules
pasta.Boa sorte...
Nenhuma dessas abordagens ( npm link
oupackage.json
dependência de arquivos) funciona se o módulo local tiver dependências de pares que você deseja instalar apenas no escopo do seu projeto.
Por exemplo:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
Neste cenário, conjuntos NPM até myproject
de node_modules/
como isto:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Quando as cargas de nó mymodule
e ele faz require('foo')
, nó resolve o mymodule
link simbólico, e apenas olha no /local/mymodule/node_modules/
(e seus antepassados) para foo
que ele doe não encontrar. Em vez disso, queremos que o nó procure /local/myproject/node_modules/
, pois é para onde o nosso projeto está sendo executado e onde foo
está instalado.
Portanto, precisamos de uma maneira de informar o nó para não resolver esse link simbólico ao procurar foo
, ou de que o npm instale uma cópia de mymodule
quando a sintaxe de dependência do arquivo é usada package.json
. Não encontrei uma maneira de fazer isso, infelizmente :(
NODE_PATH
para apontar para o local node_modules/
onde foo
está instalado. Assim, para o caso acima, seria o seguinte: NODE_PATH=/dev/myproject/node_modules/
Isso permite mymodule
encontrar foo
.
Como as pessoas anteriores responderam npm --save ../location-of-your-packages-root-directory
. O ../location-of-your-packages-root-directory
porém deve ter duas coisas para que funcione.
1) package.json
nesse diretório apontado para
2) a main
propriedade no package.json
deve estar configurada e funcionando ig "main": "src/index.js",
se o arquivo de entrada ../location-of-your-packages-root-directory
for../location-of-your-packages-root-directory/src/index.js