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 linkisso 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_modulesantes e npm installdepois 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 linka pasta uma vez (para criar um link simbólico global) e depois executar npm link package-namedentro 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 linkresultou em uma dependência duplicada, que quebra as coisas se a dependência precisar ser usada como um singleton.
npm pack + package.jsonIsto é o que funcionou para mim:
module project, execute npm pack:Isso criará um <package-name>-<version>.tar.gzarquivo.
consumer projectIdealmente, você pode colocar todos esses arquivos em uma tmppasta na sua consumer-projectraiz:
package.json:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Installos pacotes:npm installou npm iouyarn
consumer-project's node_modulespasta.Boa sorte...
Nenhuma dessas abordagens ( npm linkoupackage.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é myprojectde node_modules/como isto:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Quando as cargas de nó mymodulee ele faz require('foo'), nó resolve o mymodulelink simbólico, e apenas olha no /local/mymodule/node_modules/(e seus antepassados) para fooque 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 fooestá 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 mymodulequando a sintaxe de dependência do arquivo é usada package.json. Não encontrei uma maneira de fazer isso, infelizmente :(
NODE_PATHpara apontar para o local node_modules/onde fooestá instalado. Assim, para o caso acima, seria o seguinte: NODE_PATH=/dev/myproject/node_modules/ Isso permite mymoduleencontrar foo.
Como as pessoas anteriores responderam npm --save ../location-of-your-packages-root-directory. O ../location-of-your-packages-root-directoryporém deve ter duas coisas para que funcione.
1) package.jsonnesse diretório apontado para
2) a mainpropriedade no package.jsondeve estar configurada e funcionando ig "main": "src/index.js",se o arquivo de entrada ../location-of-your-packages-root-directoryfor../location-of-your-packages-root-directory/src/index.js