Tenho um repositório de módulo baixado, quero instalá-lo localmente, não globalmente em outro diretório?
Qual é uma maneira fácil de fazer isso?
javascript
node.js
npm
packages
npm-install
chique
fonte
fonte
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 paranpm install
, o argumento deve apontar para a pasta local em vez do nome do pacote:fonte
rm -rf node_modules
antes enpm install
depois de executar o script da resposta.Como solicitado e respondido pela mesma pessoa, adicionarei um link npm como alternativa.
dos documentos:
[Editar] A partir do NPM 2.0, você pode declarar dependências locais no pacote.json
fonte
npm link
a pasta uma vez (para criar um link simbólico global) e depois executarnpm 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 testenpm 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:
PASSO 1: Em
module project
, executenpm pack
:Isso criará um
<package-name>-<version>.tar.gz
arquivo.PASSO 2: Mova o arquivo para o
consumer project
Idealmente, você pode colocar todos esses arquivos em uma
tmp
pasta na suaconsumer-project
raiz:PASSO 3: Consulte-o em
package.json
:PASSO 4:
Install
os pacotes:npm install
ounpm i
ouyarn
Agora, seu pacote estará disponível em sua
consumer-project's node_modules
pasta.Boa sorte...
fonte
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:
Neste cenário, conjuntos NPM até
myproject
denode_modules/
como isto:Quando as cargas de nó
mymodule
e ele fazrequire('foo')
, nó resolve omymodule
link simbólico, e apenas olha no/local/mymodule/node_modules/
(e seus antepassados) parafoo
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 ondefoo
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 demymodule
quando a sintaxe de dependência do arquivo é usadapackage.json
. Não encontrei uma maneira de fazer isso, infelizmente :(fonte
NODE_PATH
para apontar para o localnode_modules/
ondefoo
está instalado. Assim, para o caso acima, seria o seguinte:NODE_PATH=/dev/myproject/node_modules/
Isso permitemymodule
encontrarfoo
.Faltando a propriedade principal?
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 para2) a
main
propriedade nopackage.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
fonte