Eu quero fazer algo como isso, então npm installtambém instala o package.jsonde ../somelocallibou mais importante suas dependências.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Eu quero fazer algo como isso, então npm installtambém instala o package.jsonde ../somelocallibou 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 somelocallibcomo dependência no seu package.jsonnormal:
"dependencies": {
"somelocallib": "0.0.x"
}
Em seguida, execute o npm link ../somelocallibnpm 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 deduppara 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.jsondiretamente. 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 -Sounpm install --save, usando qualquer um destes formulários:../foo/bar ~/foo/bar ./foo/bar /foo/barnesse 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:onbuildimagens padrão apenas copiam o diretório atual e, portanto, deixam de fora qualquer coisa ../foo.
npm installprocedem 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/"
}
.gitignorena pasta do módulo, criado .npmignoree 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 installtoda 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
postinstalle em postupdatevez de preinstalle 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 ./somelocallibestá 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.locke somelocallib/package.lockno 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 ../somelocallibfunciona.
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 --saveresultado, resultou em caminhos absolutos e não em relação à documentação.
Eu brinquei um pouco mais e determinei que ../xxxera 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: