Giấy phép "Mọi quyền được bảo lưu" trong package.json


111

Tôi có một dự án node.js nhỏ mang tính nội bộ công ty và sẽ không được phát hành công khai hoặc chia sẻ với các bên thứ ba. Nó chắc chắn sẽ không được đóng góp vào bất kỳ kho lưu trữ gói công khai nào.

Nhưng khi chạy npm installtôi luôn gặp lỗi sau:

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

Giấy phép mong muốn là: "bản quyền của chúng tôi và mọi quyền được bảo lưu". Tôi không thể tìm thấy bất kỳ thứ gì có thể áp dụng trong danh sách giấy phép SPDX . Gợi ý trong câu trả lời này cũng không hoạt động. Nếu tôi chỉ xóa licensetrường khỏi package.jsonlỗi sẽ chuyển thành no license field.

Làm cách nào npm installđể không hiển thị lỗi hoặc cảnh báo mà không đưa vào đó một tham chiếu giấy phép mà chúng tôi không muốn sử dụng?

Câu trả lời:


176

Theo đặc điểm kỹ thuật npm mới, bạn có thể sử dụng { "license": "UNLICENSED"} nếu không muốn cấp cho người khác quyền sử dụng gói riêng tư hoặc chưa được xuất bản theo bất kỳ điều khoản nào.

Vui lòng tham khảo chi tiết đầy đủ tại đây

Vì vậy, bạn có thể không nhận được lỗi bạn đã đề cập.


Điều này chắc chắn là tuyệt vời khi không có giấy phép, nhưng không hữu ích nếu bạn muốn tham chiếu đến giấy phép bên ngoài.
brandonscript

11
Từ cùng một trang npmjs, "Đồng thời, hãy cân nhắc đặt" riêng tư ": true để ngăn việc xuất bản ngẫu nhiên."
bgth

1
danh sách SPDX Unlicensekhông chứa D cuối cùng và trong trường hợp hỗn hợp. đó có phải là những gì bạn đang đề cập đến? mặc dù nhìn vào nó, có vẻ như đó không phải là điều đúng đắn. không có là UNLICENSEDtrong danh sách
ekkis

@ekkis, tài liệu về package.jsonkhông mô tả UNLICENSEDlà một giá trị hợp lệ (xem docs.npmjs.com/files/package.json#license ).
Frederik Krautwald

10
@ekkis The Unlicense hoàn toàn trái ngược với { "license": "UNLICENSED" } spdx.org/licenses/Unlicense . (Tôi nhận ra rằng mình đã có một cái nhìn tại các giấy phép và nhận ra đó là không đúng, tôi chỉ nghĩ rằng nhu cầu này được nêu ra ở đây chỉ trong trường hợp)
JollyJoker

51

Theo tài liệu mới nhất cho package.json :

Nếu bạn đang sử dụng giấy phép chưa được chỉ định số nhận dạng SPDX hoặc nếu bạn đang sử dụng giấy phép tùy chỉnh, hãy sử dụng biểu thức SPDX hợp lệ sau:

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

Sau đó, bao gồm một tệp có tên <filename>ở cấp cao nhất của gói.


4

TR; DL: 'UNLICENSED' có nghĩa là không được cấp phép, trong khi 'không cấp phép' (không có chữ 'd' ở cuối!) Đề cập đến giấy phép có tên 'The Unlicensed' , một thứ gì đó rất khác. Để tránh nhầm lẫn và nếu bạn muốn xác nhận bản quyền, bạn nên trỏ ai đó đến tệp giấy phép nội bộ của riêng bạn, theo bên dưới.

-

Chắc chắn KHÔNG sử dụng { "license": "unlicense"}câu trả lời như được đề xuất trong câu trả lời được bình chọn nhiều nhất nếu bạn muốn thông báo rõ ràng rằng bạn muốn có giấy phép kiểu khiếu nại bản quyền.

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

Một đoạn clip từ hai đoạn đầu của giấy phép UNLICENSE làm rõ rằng điều này không liên quan gì đến yêu cầu của OP về việc có khiếu nại về bản quyền:

Đây là phần mềm miễn phí và không bị cản trở được phát hành vào miền công cộng.

Bất kỳ ai cũng có thể tự do sao chép, sửa đổi, xuất bản, sử dụng, biên dịch, bán hoặc phân phối phần mềm này, ở dạng mã nguồn hoặc dưới dạng tệp nhị phân đã biên dịch, cho bất kỳ mục đích nào, thương mại hoặc phi thương mại và bằng bất kỳ phương tiện nào.

Đối với các câu trả lời được bình chọn nhiều nhất, trang tài liệu Node đưa ra tuyên bố rằng việc sử dụng tùy chọn UNLICENSED là để làm cho tùy chọn này để bạn không cấp bất kỳ quyền nào cho người khác:

nếu bạn không muốn cấp cho người khác quyền sử dụng gói riêng tư hoặc chưa được xuất bản theo bất kỳ điều khoản nào:

Đây dường như không phải là một lựa chọn an toàn thực sự để giữ các quyền của bạn

  • Tôi không rõ đây là kết quả của sự thiếu hiểu biết hay mục đích xấu. Bạn có thể suy ra rằng việc thiếu thêm chữ D có nghĩa là đây là hai thuật ngữ hoàn toàn khác nhau - nhưng bạn không thể cho rằng người khác sẽ biết điều đó và khi họ tìm kiếm giấy phép KHÔNG ĐƯỢC CẤP PHÉP thì họ có thể nhận được liên kết mà tôi đã tìm thấy.

    {"giấy phép": "XEM PHÉP TRONG"}

Là câu trả lời an toàn hơn vào lúc này.

LƯU Ý: Tôi cảm thấy điều quan trọng là phải đặt đây là câu trả lời cấp cao nhất chứ không phải là một câu trả lời, vì câu trả lời được bình chọn nhiều nhất tại thời điểm này có khả năng bị hiểu sai và điều này cần được hiển thị.


2
Tôi không nghĩ rằng điều này là chính xác. Danh sách giấy phép SPDX bao gồm một mục nhập cho "Người không cấp phép" mà bạn đã tìm thấy và nó khác với mục "KHÔNG CẤP PHÉP" không cấp quyền. spdx.org/licenses/Unlicense.html Vì vậy, mặc dù lỗi chính tả sẽ có hậu quả cao ("Unlicense" là một giấy phép không bị giới hạn và "UNLICENSED" bảo lưu tất cả các quyền), không có sự mơ hồ. Thông số package.json nói rõ rằng "UNLICENSED" không cấp bất kỳ quyền nào "theo bất kỳ điều khoản nào".
wberry

1
Mặc dù vậy, tôi nghĩ câu trả lời của bạn phục vụ một mục đích tốt là chỉ ra mức độ gần gũi của hai lựa chọn này với nhau. Nó là một cái gì đó để xem cho. Chào mừng bạn đến với Stack Overflow!
wberry

1
Cảm ơn wberry Tôi không thấy định nghĩa SPDX cho "Người không cấp phép" là một lời gọi tốt.
Carl Kidwell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.