Eu quero fazer algo como isso, então npm install
também instala o package.json
de ../somelocallib
ou mais importante suas dependências.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Eu quero fazer algo como isso, então npm install
também instala o package.json
de ../somelocallib
ou mais importante suas dependências.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Respostas:
Esse recurso foi implementado na versão 2.0.0 do npm. Exemplo:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Qualquer um dos seguintes caminhos também é válido:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
O pacote local será copiado para o prefixo ( ./node-modules
).
Coloque somelocallib
como dependência no seu package.json
normal:
"dependencies": {
"somelocallib": "0.0.x"
}
Em seguida, execute o npm link ../somelocallib
npm e instalará a versão na qual você está trabalhando como um link simbólico .
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
Referência: link (1)
npm dedup
para corrigir este problema. npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
, instale o pacote no diretório como um link simbólico no projeto atual.
Agora é possível especificar os caminhos de instalação do módulo Nó local package.json
diretamente. Dos documentos:
Caminhos locais
A partir da versão 2.0.0, você pode fornecer um caminho para um diretório local que contém um pacote. Os caminhos locais podem ser salvos usando
npm install -S
ounpm install --save
, usando qualquer um destes formulários:../foo/bar ~/foo/bar ./foo/bar /foo/bar
nesse caso, eles serão normalizados para um caminho relativo e adicionados ao seu
package.json
. Por exemplo:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
Esse recurso é útil para o desenvolvimento offline local e para a criação de testes que requerem a instalação do npm onde você não deseja acessar um servidor externo, mas não deve ser usado ao publicar pacotes no registro público.
"bar": "file:///home/user/src/foo/bar"
node:onbuild
imagens padrão apenas copiam o diretório atual e, portanto, deixam de fora qualquer coisa ../foo
.
npm install
procedem ou outro repositório git na LAN? Quando tento a instalação acima e npm do git + ssh, ele parece procurar no diretório node_modules e não tentar passar por cima do git + ssh, embora seja assim que estou instalando o pacote de nível superior.
Isso funciona para mim.
Coloque o seguinte no arquivo package.json
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
na pasta do módulo, criado .npmignore
e a primeira vez que o executei, apliquei 777 recursivamente em todas as pastas, exceto node_modules
. Mas sim, instalou as dependências. Usando o npm versão 1.4.14.
"dependencies": { "my-own-module": "file:../my-own-module" }
?
npm link
é que você não precisa fazer isso npm install
toda vez para atualizar suas dependências.
Se você deseja automatizar ainda mais isso, porque está verificando seu módulo no controle de versão e não deseja confiar nos devs lembrando-se do link npm, você pode adicioná-lo à seção "scripts" do package.json:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
Isso parece além do hacky, mas parece "funcionar". Obtenha a dica desta edição da NPM: https://github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
e em postupdate
vez de preinstall
e preupdate
?
É assim que você adicionará dependências locais:
npm install file:src/assets/js/FILE_NAME
Adicione-o ao package.json do NPM:
npm install --save file:src/assets/js/FILE_NAME
Adicione diretamente ao package.json assim:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
Aqui está o package.json que você usará para o projeto principal:
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
Aqui ./somelocallib
está a referência à pasta da biblioteca em relação ao projeto mestre package.json .
Referência: https://docs.npmjs.com/files/package.json#local-paths
Manipule as dependências da sua biblioteca.
Além de executar npm install
, você precisará executar (cd node_modules/somelocallib && npm install)
.
Este é um erro conhecido no NPM.
Referência: https://github.com/npm/npm/issues/1341 (buscando uma referência mais atualizada)
Faça check-in no seu mestre package.lock
e somelocallib/package.lock
no seu gerenciador de código-fonte.
Em seguida, no seu uso do Dockerfile:
FROM node:10
WORKDIR /app
# ...
COPY ./package.json ./package-lock.json ./
COPY somelocallib somelocallib
RUN npm ci
RUN (cd node_modules/zkp-utils/ && npm ci)
# ...
Uso parênteses em minhas (cd A && B)
construções para tornar a operação idempotente.
Eu sei que npm install ../somelocallib
funciona.
No entanto, não sei se a sintaxe exibida na pergunta funcionará ou não package.json
...
Infelizmente, o documento parece mencionar apenas o URL como uma dependência.
Tente file:///.../...tar.gz
, apontando para uma biblioteca local compactada ... e diga-nos se funciona.
Isso funcionou para mim: primeiro, verifique se os diretórios npm têm o usuário certo
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
Então, no seu package.json, vincule o diretório
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
.
Na verdade, a partir da NPM 2.0, agora há suporte para caminhos locais (veja aqui ).
Curioso ..... pelo menos no Windows (meu npm é 3. algo) que eu precisava fazer:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
Quando eu fiz um npm install ../module1 --save
resultado, resultou em caminhos absolutos e não em relação à documentação.
Eu brinquei um pouco mais e determinei que ../xxx
era suficiente.
Especificamente, tenho os módulos dos nós locais verificados para dizer d: \ build \ module1, d: \ build \ module2 e meu projeto do nó (aplicativo) em d: \ build \ nodeApp.
Para 'instalar', eu:
d:\build\module1> rmdir "./node_modules" /q /s && npm install
d:\build\module2> rmdir "./node_modules" /q /s && npm install
d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install
O package.json do módulo1 tem uma dependência de "módulo2": "../module2"; module2 não tem dependência local; O nodeApp possui dependências "module1": "../module1" e "module2": "../module2".
Não tenho certeza se isso funciona apenas para mim, pois todas as três pastas (module1, module2 e nodeApp) ficam no mesmo nível .......
Duas etapas para um desenvolvimento local completo: