Lizenz "Alle Rechte vorbehalten" in package.json

111

Ich habe ein kleines node.js-Projekt, das unternehmensintern ist und nicht öffentlich veröffentlicht oder an Dritte weitergegeben wird. Es wird sicherlich nicht zu öffentlichen Paket-Repositories beigetragen.

Aber wenn ich renne, npm installbekomme ich immer den folgenden Fehler:

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

Die gewünschte Lizenz lautet: "Copyright von uns und alle Rechte vorbehalten". Ich konnte in der SPDX-Lizenzliste nichts finden, was zutreffend aussah . Der Vorschlag in dieser Antwort funktioniert auch nicht. Wenn ich einfach das licenseFeld aus package.jsondem Fehler entferne, ändert sich zu no license field.

Wie kann ich npm installkeine Fehler oder Warnungen anzeigen, ohne dort eine Lizenzreferenz einzugeben, die wir nicht verwenden möchten?

wberry
quelle

Antworten:

176

Gemäß der neuen npm-Spezifikation können Sie verwenden, { "license": "UNLICENSED"} wenn Sie anderen nicht das Recht einräumen möchten, ein privates oder unveröffentlichtes Paket unter irgendwelchen Bedingungen zu verwenden.

Die vollständigen Details finden Sie hier

Daher wird der von Ihnen erwähnte Fehler möglicherweise nicht angezeigt.

kds
quelle
Dies ist sicherlich großartig für keine Lizenz, hilft aber nicht, wenn Sie auf eine externe Lizenz verweisen möchten.
Brandonscript
11
Auf derselben npmjs-Seite wird "Erwägen Sie auch," privat ": true festzulegen, um eine versehentliche Veröffentlichung zu verhindern."
21.
1
Die SPDX-Liste enthält Unlicenseohne das letzte D und im gemischten Fall. beziehen Sie sich darauf? obwohl es nicht so aussieht, als wäre es das Richtige. es gibt keine UNLICENSEDin der Liste
ekkis
@ekkis, die Dokumentation von package.jsonbeschreibt UNLICENSEDals gültigen Wert (vgl. docs.npmjs.com/files/package.json#license ).
Frederik Krautwald
10
@ekkis Die Unlicense ist das { "license": "UNLICENSED" } genaue Gegenteil von spdx.org/licenses/Unlicense . (Mir ist klar, dass Sie sich die Lizenz angesehen haben und festgestellt haben, dass sie nicht richtig ist. Ich dachte nur, dass dies hier für alle Fälle dargelegt werden muss.)
JollyJoker
51

Laut den neuesten Dokumenten für package.json :

Wenn Sie eine Lizenz verwenden, der keine SPDX-ID zugewiesen wurde, oder wenn Sie eine benutzerdefinierte Lizenz verwenden, verwenden Sie den folgenden gültigen SPDX-Ausdruck:

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

Fügen Sie dann eine Datei hinzu, die <filename>auf der obersten Ebene des Pakets benannt ist.

Brandonscript
quelle
4

TR; DL: "NICHT LIZENZIERT" bedeutet nicht lizenziert, während "unlizenziert" (kein "d" am Ende!) Sich auf eine Lizenz mit dem Namen "The Unlicensed" bezieht , was etwas ganz anderes ist. Um Verwirrung zu vermeiden und wenn Sie ein Urheberrecht geltend machen möchten, sollten Sie jemanden auf Ihre eigene interne Lizenzdatei verweisen (siehe unten).

- -

Verwenden { "license": "unlicense"}Sie auf keinen Fall die in der Antwort mit der höchsten Bewertung vorgeschlagene, wenn Sie klar kommunizieren möchten, dass Sie eine Lizenz im Stil eines Urheberrechtsanspruchs haben möchten.

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

Ein Ausschnitt aus den ersten beiden Absätzen der UNLICENSE-Lizenz macht deutlich, dass dies überhaupt nichts mit der Forderung des OP nach einem Urheberrechtsanspruch zu tun hat:

Dies ist kostenlose und unbelastete Software, die gemeinfrei veröffentlicht wird.

Es steht jedem frei, diese Software zu kopieren, zu modifizieren, zu veröffentlichen, zu verwenden, zu kompilieren, zu verkaufen oder zu vertreiben, entweder in Quellcodeform oder als kompilierte Binärdatei, für jeden kommerziellen oder nichtkommerziellen Zweck und auf irgendeine Weise.

Auf der Node-Dokumentationsseite wird behauptet, dass die Option UNLICENSED verwendet wird, um sicherzustellen, dass Sie anderen keine Rechte gewähren:

Wenn Sie anderen nicht das Recht einräumen möchten, ein privates oder unveröffentlichtes Paket unter irgendwelchen Bedingungen zu verwenden:

Dies scheint keine wirklich sichere Wahl zu sein, um Ihre Rechte zu behalten

  • Mir ist nicht klar, ob dies auf Unwissenheit oder schlechte Absichten zurückzuführen ist. Sie könnten daraus schließen, dass das Fehlen des zusätzlichen D bedeutet, dass dies zwei völlig unterschiedliche Begriffe sind - aber Sie können nicht davon ausgehen, dass andere das wissen und wenn sie nach der UNLIZENZIERTEN Lizenz suchen, erhalten sie möglicherweise den Link, den ich gefunden habe.

    {"Lizenz": "SIEHE LIZENZ IN"}

Ist die sicherere Antwort zu diesem Zeitpunkt.

HINWEIS: Ich hielt es für wichtig, dass dies eine Antwort auf höchster Ebene und keine Antwort ist, da die Antwort mit der höchsten Abstimmung zu diesem Zeitpunkt ein großes Potenzial für Fehlinterpretationen aufweist und dies Sichtbarkeit erfordert.

Carl Kidwell
quelle
2
Ich denke nicht, dass das richtig ist. Die SPDX-Lizenzliste enthält einen Eintrag für "The Unlicense", den Sie gefunden haben, und unterscheidet sich von "UNLICENSED", der keine Rechte gewährt. spdx.org/licenses/Unlicense.html Obwohl ein Rechtschreibfehler sehr folgenreich wäre ("Unlicense" ist eine uneingeschränkte Lizenz und "UNLICENSED" behält sich alle Rechte vor), gibt es keine Unklarheiten. Die package.json-Spezifikation besagt eindeutig, dass "UNLICENSED" keine Rechte "unter irgendwelchen Bedingungen" gewährt.
Wberry
1
Trotzdem denke ich, dass Ihre Antwort einen guten Zweck hat, darauf hinzuweisen, wie nahe diese beiden Entscheidungen beieinander liegen. Es ist etwas, auf das man achten muss. Willkommen bei Stack Overflow!
Wberry
1
Danke wberry, ich habe die SPDX-Definition für "The Unlicense" nicht gesehen, das ist ein guter Aufruf.
Carl Kidwell