Licenza "Tutti i diritti riservati" in package.json


111

Ho un piccolo progetto node.js che è interno all'azienda e non verrà rilasciato pubblicamente o condiviso con terze parti. Certamente non verrà aggiunto a nessun archivio pubblico di pacchetti.

Ma quando corro npm installottengo sempre il seguente errore:

npm WARN package.json <<myproject>>@0.1.0 license should be a valid SPDX license expression

La licenza desiderata è: "copyright da noi e tutti i diritti riservati". Non sono riuscito a trovare nulla che sembrasse applicabile nell'elenco delle licenze SPDX . Anche il suggerimento in questa risposta non funziona. Se rimuovo semplicemente il licensecampo package.jsondall'errore cambia in no license field.

Come faccio npm installa non mostrare errori o avvisi senza inserire un riferimento di licenza che non vogliamo utilizzare?

Risposte:


177

Secondo la nuova specifica npm è possibile utilizzare { "license": "UNLICENSED"} se non si desidera concedere ad altri il diritto di utilizzare un pacchetto privato o non pubblicato in qualsiasi condizione.

Si prega di fare riferimento ai dettagli completi qui

Quindi potresti non ricevere l'errore che hai menzionato.


Questo è certamente ottimo per nessuna licenza, ma non aiuta se si desidera fare riferimento a una licenza esterna.
brandonscript

11
Dalla stessa pagina npmjs, "Considera anche l'impostazione" private ": true per evitare la pubblicazione accidentale."
BGTH

1
l'elenco SPDX contiene Unlicensesenza la D finale e in caso misto. è questo ciò a cui ti riferisci? anche se a guardarlo, non sembra che sarebbe la cosa giusta. non ce n'è UNLICENSEDnell'elenco
ekkis

@ekkis, la documentazione di package.jsonviene descritta UNLICENSEDcome un valore valido (cfr. docs.npmjs.com/files/package.json#license ).
Frederik Krautwald

10
@ekkis The Unlicense è l'esatto opposto di { "license": "UNLICENSED" } spdx.org/licenses/Unlicense . (Mi rendo conto che hai dato un'occhiata alla licenza e hai visto che non era corretta, ho solo pensato che questo dovesse essere spiegato qui per ogni evenienza)
JollyJoker

51

Secondo gli ultimi documenti per package.json :

Se si utilizza una licenza a cui non è stato assegnato un identificatore SPDX o se si utilizza una licenza personalizzata, utilizzare la seguente espressione SPDX valida:

{ "license" : "SEE LICENSE IN <filename>" }

Quindi includere un file denominato <filename>nel livello superiore del pacchetto.


5

TR; DL: "UNLICENSED" significa non concesso in licenza, mentre "unlicense" (nessuna "d" alla fine!) Si riferisce a una licenza denominata "The Unlicensed" che è qualcosa di molto diverso. Per evitare confusione e se vuoi far valere un copyright, dovresti indirizzare qualcuno al tuo file di licenza interno, come di seguito.

-

Sicuramente NON usare { "license": "unlicense"}come suggerito nella risposta più votata se desideri comunicare chiaramente che desideri avere una licenza in stile reclamo per copyright.

https://choosealicense.com/licenses/unlicense/

Una clip dai primi due paragrafi della licenza UNLICENSE chiarisce che questo non ha alcuna relazione con la richiesta dell'OP di avere una rivendicazione di copyright:

Questo è un software gratuito e senza limitazioni rilasciato nel pubblico dominio.

Chiunque è libero di copiare, modificare, pubblicare, utilizzare, compilare, vendere o distribuire questo software, sotto forma di codice sorgente o come binario compilato, per qualsiasi scopo, commerciale o non commerciale e con qualsiasi mezzo.

Nella parte superiore delle risposte votate, la pagina della documentazione del nodo afferma che l'uso dell'opzione UNLICENSED è per farlo in modo da non concedere alcun diritto ad altri:

se non desideri concedere ad altri il diritto di utilizzare un pacchetto privato o non pubblicato in qualsiasi condizione:

Questa non sembra essere una scelta sicura per mantenere i tuoi diritti

  • Non è chiaro se questo sia stato il risultato di ignoranza o cattive intenzioni. Si potrebbe dedurre che la mancanza della D extra significa che si tratta di due termini completamente diversi, ma non si può presumere che altri lo sappiano e quando cercheranno qual è la licenza UNLICENSED potrebbero ottenere il collegamento che ho trovato.

    {"license": "SEE LICENSE IN"}

È la risposta più sicura in questo momento.

NOTA: ho ritenuto che fosse importante rendere questa una risposta di primo livello, piuttosto che una risposta, poiché la risposta più votata in questo momento ha un grande potenziale di essere interpretata male e questo richiede visibilità.


2
Non credo che sia corretto. L'elenco delle licenze SPDX include una voce per "The Unlicense" che hai trovato ed è diverso da "UNLICENSED" che non concede diritti. spdx.org/licenses/Unlicense.html Quindi, anche se un errore di ortografia sarebbe altamente consequenziale ("Unlicense" è una licenza senza restrizioni e "UNLICENSED" che riserva tutti i diritti), non c'è ambiguità. La specifica package.json afferma chiaramente che "UNLICENSED" non concede alcun diritto "sotto nessun termine".
wberry

1
Anche così, penso che la tua risposta abbia un buon scopo per sottolineare quanto siano vicine queste due scelte l'una all'altra. È qualcosa a cui prestare attenzione. Benvenuto in Stack Overflow!
wberry

1
Grazie wberry non ho visto la definizione SPDX per "The Unlicense", questo è un buon richiamo.
Carl Kidwell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.