Verificar licenças das dependências de um projeto
Cole o package-lock.json ou uma lista de pacotes e veja, numa tabela, a licença que cada dependência declara, o que ela exige e se pede atenção.
Resposta curtaO package.json só lista nomes e versões. A licença de cada pacote instalado está no package-lock.json: cole-o aqui e a tabela agrupa as dependências por licença, separa as permissivas das de copyleft e aponta as que ficaram sem licença ou fora das 14.
Informação, não aconselhamento jurídico. Os resumos são nossos e simplificam; o texto oficial da licença é o que vale. Para decisões com consequência legal ou financeira, consulte um advogado.
Aceita o package-lock.json (versão 2 ou 3, do npm 7 em diante), a saída JSON do license-checker (npm) ou do pip-licenses (Python), ou uma linha por pacote: nome, dois-pontos e a licença. Nada é enviado: a leitura acontece neste navegador.
Com GPL-2.0 ou GPL-3.0, a tabela mostra o que a lista do GNU diz de cada dependência.
O resultado aparece aqui assim que houver texto para ler.
De onde tirar o que colar
Três formas de obter a licença de cada dependência, uma por ecossistema.
- npm: abra o
package-lock.jsondo projeto e cole o conteúdo inteiro. Ele registra o campolicenseque o autor de cada pacote declarou. Se o arquivo não existir, gere-o a partir dopackage.jsoncomnpm install --package-lock-only. - npm, com outra ferramenta: o
license-checkerimprime as licenças do projeto instalado; use a opção--jsone cole a saída. - Python: o
pip-licenseslista as licenças dos pacotes instalados; use--format=jsone cole a saída. - Qualquer outro ecossistema: escreva uma linha por pacote, no formato
nome: licença, com o id SPDX que o pacote declara (veja o exemplo abaixo).
lib-exemplo-a: MIT
lib-exemplo-b: Apache-2.0
lib-exemplo-c: (MIT OR GPL-3.0-only)Como a tabela lê cada licença
Cada licença das 14 do site é classificada pelas condições que o choosealicense.com registra para ela, as mesmas que você vê na página de cada licença:
- Permissiva: sem condição de manter a mesma licença nas modificações (MIT, Apache-2.0, BSD, ISC, BSL, Unlicense, CC0). Em geral, só há avisos a manter.
- Copyleft de biblioteca ou por arquivo: a condição de manter a mesma licença vale para a biblioteca modificada (LGPL-3.0) ou para os arquivos modificados (MPL-2.0).
- Copyleft forte: as modificações distribuídas saem sob a mesma licença (GPL-2.0, GPL-3.0, EPL-2.0). De rede: a AGPL-3.0 acrescenta o código-fonte para quem usa o programa pela rede.
- Fora das 14, sem licença declarada ou expressão composta: o site não classifica; a tabela manda ler o texto original.
O id com sufixo -only, -or-later ou + é lido como a licença-base. A coluna sobre a GPL, quando você informa a licença do projeto, copia a situação da lista de licenças do GNU; combinações que a lista não cobre ficam como não confirmadas.
O que a tabela não faz. Ela lê a licença que o pacote declara, não confere o código nem os arquivos de licença dentro dele, e não analisa como você usa a dependência (linkar, distribuir, oferecer pela rede). Se um pacote traz código de terceiros sob outra licença, isso não aparece. Informação, não aconselhamento jurídico.
Exemplo resolvido: um projeto GPL-3.0 com oito dependências
- Clique em “Usar um exemplo” e escolha GPL-3.0 como licença do projeto.
lib-exemplo-a(MIT) elib-exemplo-b(Apache-2.0) aparecem como permissivas; na coluna da GPL, a lista do GNU as dá como compatíveis com a versão 3.lib-exemplo-cdeclaraMIT OR GPL-3.0-only: a tabela lê a alternativa mais branda, a MIT, e avisa que a escolha é de quem usa.lib-exemplo-d(LGPL-3.0) elib-exemplo-e(GPL-3.0) aparecem como copyleft, com a condição de manter a mesma licença nas modificações distribuídas.lib-exemplo-f(AGPL-3.0) aparece como copyleft de rede; a lista do GNU a trata como “depende” com a GPLv3.lib-exemplo-g(0BSD) está fora das 14: vai para “para conferir à mão”, com o link da lista SPDX.lib-exemplo-h(UNLICENSED) fica como sem licença declarada.
Continue por aqui
Cada página resolve uma parte da escolha.
- Escolher licençaTrês perguntas e a licença indicada, com o porquê.
- Todas as licençasAs 14 licenças: o que pode, o que deve e o que não pode.
- Comparar licençasTabela lado a lado com patentes, avisos e copyleft.
- Como licenciar um projetoArquivo LICENSE, package.json e cabeçalho SPDX.
- CompatibilidadeO que o projeto GNU diz sobre a GPL, com a fonte.
Perguntas frequentes
Onde está a licença de cada dependência do meu projeto?
No npm, no package-lock.json, que registra o campo license declarado por cada pacote instalado; o package.json só traz nomes e versões. No Python, o pip-licenses lista as licenças dos pacotes instalados. Cole o resultado na ferramenta desta página.
Minhas dependências são enviadas a algum servidor?
Não. A leitura e a tabela acontecem no seu navegador; o texto colado não sai da página.
A tabela garante que posso usar todas as dependências?
Não. Ela lê a licença que cada pacote declara e mostra as condições dessa licença segundo o choosealicense. Não confere o código do pacote nem o modo como você o usa. Para decidir algo com consequência legal ou financeira, consulte um advogado.
O que fazer com um pacote sem licença declarada?
Sem licença, o trabalho fica sob direito autoral exclusivo por padrão, segundo o choosealicense, e ninguém mais pode copiar, distribuir ou modificar. Procure a licença no repositório do pacote ou fale com quem o mantém antes de depender dele.
Como a tabela trata uma licença com OR, como MIT OR GPL-3.0?
O OR deixa a escolha com quem usa o pacote. A tabela lê a alternativa de menos exigências e avisa que a escolha é sua. Com AND, as duas licenças valem ao mesmo tempo e a tabela usa a mais exigente.