Lisensi "All Rights Reserved" di package.json

111

Saya memiliki proyek node.js kecil yang bersifat internal perusahaan dan tidak akan dirilis secara publik atau dibagikan dengan pihak ketiga. Ini pasti tidak akan disumbangkan ke repositori paket publik.

Tetapi ketika saya menjalankan npm installsaya selalu mendapatkan kesalahan berikut:

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

Lisensi yang diinginkan adalah: "hak cipta oleh kami dan semua hak dilindungi undang-undang". Saya tidak dapat menemukan apa pun yang tampak berlaku di daftar lisensi SPDX . Saran dalam jawaban ini juga tidak berhasil. Jika saya hanya menghapus licensebidang dari package.jsonperubahan kesalahan menjadi no license field.

Bagaimana saya bisa npm installmenunjukkan tidak ada kesalahan atau peringatan tanpa meletakkan referensi lisensi di sana yang tidak ingin kita gunakan?

wberry
sumber

Jawaban:

177

Menurut spesifikasi npm baru yang dapat Anda gunakan { "license": "UNLICENSED"} jika Anda tidak ingin memberikan hak kepada orang lain untuk menggunakan paket pribadi atau tidak dipublikasikan berdasarkan persyaratan apa pun.

Silakan lihat detail lengkapnya di sini

Jadi Anda mungkin tidak mendapatkan kesalahan yang Anda sebutkan.

kds
sumber
Ini tentu bagus untuk tanpa lisensi, tetapi tidak membantu jika Anda ingin merujuk lisensi eksternal.
brandonscript
11
Dari halaman npmjs yang sama, "Pertimbangkan juga untuk menyetel" private ": true untuk mencegah publikasi yang tidak disengaja."
bgth
1
daftar SPDX berisi Unlicensetanpa D akhir dan dalam kasus campuran. apakah itu yang kamu maksud? meskipun dalam melihatnya, sepertinya itu bukan hal yang benar. tidak ada UNLICENSEDdalam daftar
ekkis
@ekkis, dokumentasi dari package.jsondideskripsikan UNLICENSEDsebagai nilai yang valid (lihat docs.npmjs.com/files/package.json#license ).
Frederik Krautwald
10
@ekkis The Unlicense adalah kebalikan dari { "license": "UNLICENSED" } spdx.org/licenses/Unlicense . (Saya menyadari Anda telah melihat lisensi dan melihat itu tidak benar, saya hanya berpikir ini perlu dijelaskan di sini untuk berjaga-jaga)
JollyJoker
51

Menurut dokumen terbaru untuk package.json :

Jika Anda menggunakan lisensi yang belum diberi pengenal SPDX, atau jika Anda menggunakan lisensi kustom, gunakan ekspresi SPDX yang valid berikut ini:

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

Kemudian sertakan file dengan nama <filename>di tingkat atas paket.

brandonscript
sumber
5

TR; DL: 'UNLICENSED' berarti tidak berlisensi, sedangkan 'unlicense' (tidak ada 'd' di akhir!) Mengacu pada lisensi bernama 'The Unlicensed' yang merupakan sesuatu yang sangat berbeda. Untuk mencegah kebingungan, dan jika Anda ingin menegaskan hak cipta, Anda harus mengarahkan seseorang ke file lisensi internal Anda sendiri, sesuai di bawah ini.

-

Jelas JANGAN gunakan { "license": "unlicense"}seperti yang disarankan dalam jawaban pilihan teratas jika Anda ingin menyampaikan dengan jelas bahwa Anda ingin memiliki lisensi gaya klaim hak cipta.

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

Sebuah klip dari dua paragraf pertama lisensi UNLICENSE menjelaskan bahwa ini tidak ada hubungannya sama sekali dengan permintaan OP untuk memiliki klaim hak cipta:

Ini adalah perangkat lunak gratis dan tidak terbebani yang dirilis ke domain publik.

Siapa pun bebas menyalin, memodifikasi, menerbitkan, menggunakan, menyusun, menjual, atau mendistribusikan perangkat lunak ini, baik dalam bentuk kode sumber atau sebagai biner yang dikompilasi, untuk tujuan apa pun, komersial atau non-komersial, dan dengan cara apa pun.

Untuk jawaban pilihan teratas, kreditkan halaman dokumentasi Node membuat klaim bahwa penggunaan opsi TIDAK BERLISENSI adalah untuk membuatnya sehingga Anda tidak memberikan hak apa pun kepada orang lain:

jika Anda tidak ingin memberikan hak kepada orang lain untuk menggunakan paket pribadi atau tidak dipublikasikan dengan syarat apa pun:

Tampaknya ini bukan pilihan yang benar-benar aman untuk mempertahankan hak Anda

  • Saya tidak jelas apakah ini akibat ketidaktahuan atau niat buruk. Anda dapat menyimpulkan bahwa kurangnya D tambahan berarti ini adalah dua istilah yang sama sekali berbeda - tetapi Anda tidak dapat berasumsi bahwa orang lain akan mengetahuinya dan ketika mereka mencari lisensi TIDAK BERLISENSI, mereka mungkin mendapatkan tautan yang saya temukan.

    {"license": "LIHAT LISENSI DI"}

Apakah jawaban yang lebih aman saat ini.

CATATAN: Saya merasa penting untuk menjadikan ini sebagai jawaban tingkat atas, daripada balasan, karena jawaban yang dipilih paling banyak saat ini memiliki potensi besar untuk disalahartikan dan ini membutuhkan visibilitas.

Carl Kidwell
sumber
2
Saya rasa ini tidak benar. Daftar lisensi SPDX tidak menyertakan entri untuk "The Unlicense" yang Anda temukan, dan ini berbeda dengan "UNLICENSED" yang tidak memberikan hak. spdx.org/licenses/Unlicense.html Jadi, meskipun kesalahan ejaan akan sangat berpengaruh ("Tidak Berlisensi" adalah lisensi yang tidak dibatasi dan "TIDAK BERLISENSI" memegang semua hak), tidak ada ambiguitas. Spesifikasi package.json dengan jelas menyatakan bahwa "TIDAK BERLISENSI" tidak memberikan hak apa pun "menurut persyaratan apa pun".
wberry
1
Meski begitu, saya pikir jawaban Anda memiliki tujuan yang baik untuk menunjukkan seberapa dekat kedua pilihan ini satu sama lain. Itu adalah sesuatu yang harus diperhatikan. Selamat datang di Stack Overflow!
wberry
1
Terima kasih wberry Saya tidak melihat definisi SPDX untuk "The Unlicense" itu panggilan yang bagus.
Carl Kidwell