License
Quản lý giấy phép trong toàn bộ workspace của bạn: đồng bộ hóa các tệp LICENSE và tiêu đề mã nguồn cho mã của riêng bạn (license.source), và kiểm tra rằng mọi dependency tuân thủ danh sách giấy phép được phép (license.dependencies).
Cách sử dụng
Phần tiêu đề “Cách sử dụng”Chạy Trình tạo
Phần tiêu đề “Chạy Trình tạo”pnpm nx g @aws/nx-plugin:licenseyarn nx g @aws/nx-plugin:licensenpx nx g @aws/nx-plugin:licensebunx nx g @aws/nx-plugin:licenseBạn cũng có thể thực hiện chạy thử để xem những tệp nào sẽ bị thay đổi
pnpm nx g @aws/nx-plugin:license --dry-runyarn nx g @aws/nx-plugin:license --dry-runnpx nx g @aws/nx-plugin:license --dry-runbunx nx g @aws/nx-plugin:license --dry-run- Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
- Mở Nx Console trong VSCode
- Nhấp
Generate (UI)trong phần "Common Nx Commands" - Tìm kiếm
@aws/nx-plugin - license - Điền các tham số bắt buộc
- Nhấp
Generate
Tùy chọn
Phần tiêu đề “Tùy chọn”| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
| license | Apache-2.0 | MIT | ASL | Apache-2.0 | Mã định danh giấy phép SPDX cho giấy phép bạn đã chọn |
| copyrightHolder | string | Amazon.com, Inc. or its affiliates | Người giữ bản quyền, được bao gồm trong tệp LICENSE và phần đầu của các tệp mã nguồn theo mặc định. |
| dependencyCheck | boolean | true | Cấu hình một target license-check sẽ thất bại khi các dependency khai báo giấy phép nằm ngoài danh sách cho phép đã cấu hình. |
| preferInstallDependencies | boolean | true | Có nên cài đặt các dependencies sau khi generator chạy hay không. Đặt thành false để hoãn việc cài đặt khi chạy nhiều generator cùng lúc (việc cài đặt vẫn sẽ chạy nếu cần thiết để các generator tiếp theo có thể tính toán Nx project graph); cài đặt một lần vào cuối. |
Kết quả của Trình tạo
Phần tiêu đề “Kết quả của Trình tạo”Trình tạo sẽ tạo hoặc cập nhật các tệp sau:
- nx.json Target lint được cấu hình để chạy trình tạo đồng bộ license và phụ thuộc vào target license-check
- aws-nx-plugin.config.mts Cấu hình cho đồng bộ nguồn license (
license.source) và kiểm tra dependency (license.dependencies)
Tiêu đề & Tệp License
Phần tiêu đề “Tiêu đề & Tệp License”Trình tạo đăng ký một sync generator để thực thi như một phần của các target lint của bạn, đảm bảo rằng các tệp nguồn của bạn chứa tiêu đề license chính xác, các dự án của bạn chứa tệp LICENSE, và metadata giấy phép được thiết lập trong package.json và pyproject.toml.
Quy trình làm việc
Phần tiêu đề “Quy trình làm việc”Bất cứ khi nào bạn build các dự án của mình (và target lint chạy), trình tạo đồng bộ license sẽ đảm bảo rằng giấy phép trong dự án của bạn khớp với cấu hình của bạn. Nếu nó phát hiện bất kỳ điều gì không đồng bộ, bạn sẽ nhận được thông báo như sau:
NX The workspace is out of sync
[@aws/nx-plugin:license#sync]: Project LICENSE files are out of sync:- LICENSE- packages/<my-project>LICENSE
Project package.json files are out of sync:- package.json
Project pyproject.toml files are out of sync:- pyproject.toml- packages/<my-python-project>/pyproject.toml
License headers are out of sync in the following source files:- packages/<my-project>/src/index.ts- packages/<my-python-project>/main.py
This will result in an error in CI.
? Would you like to sync the identified changes to get your workspace up to date?Yes, sync the changes and run the tasksNo, run the tasks without syncing the changesChọn Yes để đồng bộ các thay đổi.
Hành vi Đồng bộ
Phần tiêu đề “Hành vi Đồng bộ”Trình tạo đồng bộ license thực hiện ba tác vụ chính:
1. Đồng bộ hóa Tiêu đề License của Tệp Nguồn
Phần tiêu đề “1. Đồng bộ hóa Tiêu đề License của Tệp Nguồn”Khi trình tạo đồng bộ được chạy, nó sẽ đảm bảo rằng tất cả các tệp mã nguồn trong workspace của bạn (dựa trên cấu hình của bạn) chứa tiêu đề license phù hợp. Tiêu đề được viết dưới dạng khối comment đầu tiên hoặc chuỗi liên tiếp các comment dòng trong tệp (ngoài shebang/hashbang nếu có trong tệp).
2. Đồng bộ hóa Tệp LICENSE
Phần tiêu đề “2. Đồng bộ hóa Tệp LICENSE”Khi trình tạo đồng bộ được chạy, nó sẽ đảm bảo rằng tệp LICENSE gốc tương ứng với giấy phép đã cấu hình của bạn, cũng như đảm bảo rằng tất cả các dự án con trong workspace của bạn cũng chứa tệp LICENSE chính xác.
3. Đồng bộ hóa thông tin giấy phép trong các tệp dự án
Phần tiêu đề “3. Đồng bộ hóa thông tin giấy phép trong các tệp dự án”Khi trình tạo đồng bộ được chạy, nó sẽ đảm bảo các trường license trong các tệp package.json và pyproject.toml được đặt thành giấy phép đã cấu hình của bạn.
Cấu hình Tiêu đề & Tệp
Phần tiêu đề “Cấu hình Tiêu đề & Tệp”Cấu hình được định nghĩa trong tệp aws-nx-plugin.config.mts ở thư mục gốc của workspace của bạn.
SPDX và Chủ sở hữu Bản quyền
Phần tiêu đề “SPDX và Chủ sở hữu Bản quyền”Giấy phép bạn chọn có thể được cập nhật bất cứ lúc nào thông qua thuộc tính cấu hình spdx:
export default { license: { source: { spdx: 'MIT', }, },} satisfies AwsNxPluginConfig;Khi trình tạo đồng bộ chạy, tất cả các tệp LICENSE, package.json và pyproject.toml sẽ được cập nhật để phản ánh giấy phép đã cấu hình.
Bạn có thể cấu hình thêm chủ sở hữu bản quyền và năm bản quyền, được bao gồm trong một số tệp LICENSE:
export default { license: { source: { spdx: 'MIT', copyrightHolder: 'Amazon.com, Inc. or its affiliates', copyrightYear: 2025, }, },} satisfies AwsNxPluginConfig;Nội dung Tiêu đề License
Phần tiêu đề “Nội dung Tiêu đề License”Nội dung tiêu đề license có thể được cấu hình theo hai cách:
- Sử dụng nội dung inline:
export default { license: { source: { header: { content: { lines: [ 'Copyright: My Company, Incorporated.', 'Licensed under the MIT License', 'All rights reserved', ]; } // ... format configuration } } }} satisfies AwsNxPluginConfig;- Tải từ một tệp:
export default { license: { source: { header: { content: { filePath: 'license-header.txt'; // relative to workspace root } // ... format configuration } } }} satisfies AwsNxPluginConfig;Định dạng Tiêu đề
Phần tiêu đề “Định dạng Tiêu đề”Bạn có thể chỉ định cách tiêu đề license nên được định dạng cho các loại tệp khác nhau bằng cách sử dụng các mẫu glob. Cấu hình định dạng hỗ trợ comment dòng, comment khối, hoặc kết hợp cả hai:
export default { license: { source: { header: { content: { lines: ['Copyright notice here'], }, format: { // Line comments '**/*.ts': { lineStart: '// ', }, // Block comments '**/*.css': { blockStart: '/*', blockEnd: '*/', }, // Block comments with line prefixes '**/*.java': { blockStart: '/*', lineStart: ' * ', blockEnd: ' */', }, // Line comments with header/footer '**/*.py': { blockStart: '# ------------', lineStart: '# ', blockEnd: '# ------------', }, }, }, }, },} satisfies AwsNxPluginConfig;Cấu hình định dạng hỗ trợ:
blockStart: Văn bản được viết trước nội dung license (ví dụ: để bắt đầu một comment khối)lineStart: Văn bản được thêm vào đầu mỗi dòng của nội dung licenselineEnd: Văn bản được thêm vào cuối mỗi dòng của nội dung licenseblockEnd: Văn bản được viết sau nội dung license (ví dụ: để kết thúc một comment khối)
Cú pháp Comment Tùy chỉnh
Phần tiêu đề “Cú pháp Comment Tùy chỉnh”Đối với các loại tệp không được hỗ trợ sẵn, bạn có thể chỉ định cú pháp comment tùy chỉnh để cho trình tạo đồng bộ biết cách xác định các tiêu đề license hiện có trong các loại tệp này.
export default { license: { source: { header: { content: { lines: ['My license header'], }, format: { '**/*.xyz': { lineStart: '## ', }, }, commentSyntax: { xyz: { line: '##', // Define line comment syntax }, abc: { block: { // Define block comment syntax start: '<!--', end: '-->', }, }, }, }, }, },} satisfies AwsNxPluginConfig;Loại trừ Tệp khỏi Đồng bộ Tiêu đề
Phần tiêu đề “Loại trừ Tệp khỏi Đồng bộ Tiêu đề”Theo mặc định, trong một kho git, tất cả các tệp .gitignore được tôn trọng để đảm bảo rằng chỉ các tệp được quản lý bởi version control mới được đồng bộ hóa. Trong các kho không phải git, tất cả các tệp được xem xét trừ khi được loại trừ rõ ràng trong cấu hình.
Bạn có thể loại trừ các tệp bổ sung khỏi đồng bộ hóa tiêu đề license bằng cách sử dụng các mẫu glob:
export default { license: { source: { header: { content: { lines: ['My license header'], }, format: { '**/*.ts': { lineStart: '// ', }, }, exclude: ['**/generated/**', '**/dist/**', 'some-specific-file.ts'], }, }, },} satisfies AwsNxPluginConfig;Loại trừ Dự án khỏi Đồng bộ Tệp
Phần tiêu đề “Loại trừ Dự án khỏi Đồng bộ Tệp”Tất cả các tệp LICENSE, tệp package.json và tệp pyproject.toml được đồng bộ hóa với giấy phép đã cấu hình theo mặc định.
Bạn có thể loại trừ các dự án hoặc tệp cụ thể khỏi đồng bộ hóa bằng cách sử dụng các mẫu glob:
export default { license: { source: { files: { exclude: [ // do not sync LICENSE file, package.json or pyproject.toml 'packages/excluded-project', // do not sync LICENSE file, but sync package.json and/or pyproject.toml 'apps/internal/LICENSE', ]; } } }} satisfies AwsNxPluginConfig;Vô hiệu hóa Đồng bộ License
Phần tiêu đề “Vô hiệu hóa Đồng bộ License”Đồng bộ nguồn license được kích hoạt bởi sự hiện diện của khóa license.source trong cấu hình của bạn. Để vô hiệu hóa nó:
- Xóa phần
license.sourcekhỏi cấu hình của bạn trongaws-nx-plugin.config.mts(bạn có thể giữlicense.dependenciesnếu bạn vẫn muốn kiểm tra giấy phép dependency) - Nếu bạn cũng muốn xóa hoàn toàn trình tạo đồng bộ, hãy xóa trình tạo
@aws/nx-plugin:license#synckhỏitargetDefaults.lint.syncGenerators
Để kích hoạt lại đồng bộ license, chỉ cần chạy lại trình tạo license.
Kiểm tra License Dependency
Phần tiêu đề “Kiểm tra License Dependency”Trình tạo license cũng cấu hình một target license-check sẽ thất bại khi một trong các dependency của dự án của bạn (hoặc bất kỳ dependency bắc cầu nào) khai báo một giấy phép không có trong danh sách cho phép của bạn.
Cách nó chạy
Phần tiêu đề “Cách nó chạy”Trình tạo viết một target license-check vào project.json gốc của bạn:
{ "targets": { "license-check": { "executor": "@aws/nx-plugin:license-check", "cache": true, "inputs": [ "{workspaceRoot}/pnpm-lock.yaml", "{workspaceRoot}/aws-nx-plugin.config.mts" ], "options": {} } }}Các inputs được tính toán cho workspace của bạn: chỉ các tệp lockfile thực sự có mặt mới được bao gồm, cùng với aws-nx-plugin.config.mts, cộng với một glob {workspaceRoot}/**/uv.lock khi kiểm tra dependency Python được bật (tức là một collector Python được cấu hình).
Bạn có thể chạy kiểm tra trực tiếp:
pnpm nx license-checkyarn nx license-checknpx nx license-checkbunx nx license-checkKết quả được lưu vào bộ nhớ cache dựa trên các tệp lockfile và aws-nx-plugin.config.mts của bạn — các lần chạy lại là tức thì khi không có gì thay đổi.
Các collector xác định những gì được quét. npmCollector sử dụng license-checker-rseidelsohn, và pythonCollector sử dụng pip-licenses. Nếu không tìm thấy dependency đã cài đặt nào, kiểm tra sẽ vượt qua mà không có gì để kiểm tra.
Chạy như một phần của lint/build
Phần tiêu đề “Chạy như một phần của lint/build”Kiểm tra license dependency chạy tự động bất cứ khi nào bạn lint hoặc build bất kỳ dự án nào trong workspace của bạn. Trình tạo license kết nối target lint của mỗi dự án để phụ thuộc vào target license-check gốc, và các trình tạo dự án (ts#* và py#*) làm tương tự khi chúng chạy — vì vậy kiểm tra được kết nối bất kể thứ tự các trình tạo được chạy.
Điều này có nghĩa là bạn không cần chạy kiểm tra một cách rõ ràng, mặc dù bạn vẫn có thể làm như vậy với target license-check:
pnpm nx license-checkyarn nx license-checknpx nx license-checkbunx nx license-checkKết nối là một dependsOn xuyên dự án trên target lint của mỗi dự án trỏ đến target license-check gốc. Để bỏ qua kiểm tra trong quá trình lint hoặc build, hãy đặt biến môi trường LICENSE_DEPENDENCY_CHECK=skip:
pnpm LICENSE_DEPENDENCY_CHECK=skip lintyarn LICENSE_DEPENDENCY_CHECK=skip lintnpm run LICENSE_DEPENDENCY_CHECK=skip lintbun LICENSE_DEPENDENCY_CHECK=skip lintCấu hình
Phần tiêu đề “Cấu hình”Theo mặc định, kiểm tra sử dụng một tập hợp các giấy phép cho phép phổ biến được tích hợp sẵn (MIT, Apache-2.0, BSD, ISC, v.v.) được xuất dưới dạng DEFAULT_LICENSE_ALLOWLIST. Bạn có thể mở rộng hoặc ghi đè điều này trong cấu hình của bạn:
import { AwsNxPluginConfig } from '@aws/nx-plugin';import { DEFAULT_LICENSE_ALLOWLIST } from '@aws/nx-plugin/sdk/license';
export default { license: { // ... dependencies: { allow: [...DEFAULT_LICENSE_ALLOWLIST, { spdxId: 'LGPL-2.1-or-later', fullName: 'GNU Lesser General Public License v2.1 or later', aliases: [] }], exceptions: [ { package: 'some-package', reason: 'Audited manually — ships MIT text without SPDX field' }, ], }, },} satisfies AwsNxPluginConfig;Default License Allowlist
| SPDX ID | Full Name |
|---|---|
0BSD | BSD Zero Clause License |
AFL-2.1 | Academic Free License v2.1 |
AFL-3.0 | Academic Free License v3.0 |
AMD-newlib | AMD newlib License |
AML | Apple MIT License |
AML-glslang | AML glslang variant License |
ANTLR-PD | ANTLR Software Rights Notice |
ANTLR-PD-fallback | ANTLR Software Rights Notice with license fallback |
APAFML | Adobe Postscript AFM License |
AdaCore-doc | AdaCore Doc License |
Adobe-Display-PostScript | Adobe Display PostScript License |
Adobe-Glyph | Adobe Glyph List License |
Adobe-Utopia | Adobe Utopia Font License |
Apache-1.1 | Apache License 1.1 |
Apache-2.0 | Apache License 2.0 |
Apache-2.0 WITH LLVM-exception | Apache License 2.0 with LLVM Exception |
Artistic-1.0 | Artistic License 1.0 |
Artistic-1.0-Perl | Artistic License 1.0(Perl) |
Artistic-2.0 | Artistic License 2.0 |
Artistic-dist | Artistic License 1.0 (dist) |
BSD-1-Clause | BSD 1-Clause License |
BSD-2-Clause | BSD 2-clause "Simplified" License |
BSD-2-Clause-Darwin | BSD 2-Clause - Ian Darwin variant |
BSD-2-Clause-FreeBSD | BSD 2-clause FreeBSD License |
BSD-2-Clause-NetBSD | BSD 2-clause NetBSD License |
BSD-2-Clause-Views | BSD 2-Clause with views sentence |
BSD-2-Clause-first-lines | BSD 2-Clause - first lines requirement |
BSD-2-Clause-pkgconf-disclaimer | BSD 2-Clause pkgconf disclaimer variant |
BSD-3-Clause | BSD 3-clause "New" or "Revised" License |
BSD-3-Clause-Attribution | BSD with attribution |
BSD-3-Clause-HP | Hewlett-Packard BSD variant license |
BSD-3-Clause-LBNL | Lawrence Berkeley National Labs BSD variant license |
BSD-3-Clause-Modification | BSD 3-Clause Modification |
BSD-3-Clause-Open-MPI | BSD 3-Clause Open MPI variant |
BSD-3-Clause-Sun | BSD 3-Clause Sun Microsystems |
BSD-3-Clause-acpica | BSD 3-Clause acpica variant |
BSD-3-Clause-flex | BSD 3-Clause Flex variant |
BSD-4.3RENO | BSD 4.3 RENO License |
BSD-Source-Code | BSD Source Code Attribution |
BSD-Source-beginning-file | BSD Source Code Attribution - beginning of file variant |
BSL-1.0 | Boost Software License 1.0 |
Baekmuk | Baekmuk License |
Beerware | Beerware License |
Bitstream-Charter | Bitstream Charter Font License |
Bitstream-Vera | Bitstream Vera Font License |
BlueOak-1.0.0 | Blue Oak Model License 1.0.0 |
Boehm-GC | Boehm-Demers-Weiser GC License |
Boehm-GC-without-fee | Boehm-Demers-Weiser GC License (without fee) |
Brian-Gladman-2-Clause | Brian Gladman 2-Clause License |
Brian-Gladman-3-Clause | Brian Gladman 3-Clause License |
CC-BY-2.0 | Creative Commons Attribution 2.0 |
CC-BY-2.5 | Creative Commons Attribution 2.5 |
CC-BY-2.5-AU | Creative Commons Attribution 2.5 Australia |
CC-BY-3.0 | Creative Commons Attribution 3.0 |
CC-BY-3.0-AU | Creative Commons Attribution 3.0 Australia |
CC-BY-3.0-IGO | Creative Commons Attribution 3.0 IGO |
CC-BY-3.0-US | Creative Commons Attribution 3.0 United States |
CC-BY-4.0 | Creative Commons Attribution 4.0 |
CC-PDDC | Creative Commons Public Domain Dedication and Certification |
CC0-1.0 | Creative Commons Zero v1.0 Universal |
CDDL-1.0 | Common Development and Distribution License 1.0 |
CDDL-1.1 | Common Development and Distribution License 1.1 |
CFITSIO | CFITSIO License |
CMU-Mach-nodoc | CMU Mach - no notices-in-documentation variant |
CNRI-Jython | CNRI Jython License |
CNRI-Python | CNRI Python License |
CPOL-1.02 | Code Project Open License 1.02 |
Clips | Clips License |
Cornell-Lossless-JPEG | Cornell Lossless JPEG License |
Cronyx | Cronyx License |
CryptoSwift | CryptoSwift License |
DEC-3-Clause | DEC 3-Clause License |
DocBook-DTD | DocBook DTD License |
DocBook-Schema | DocBook Schema License |
DocBook-Stylesheet | DocBook Stylesheet License |
DocBook-XML | DocBook XML License |
EFL-2.0 | Eiffel Forum License v2.0 |
EPL-1.0 | Eclipse Public License 1.0 |
EPL-2.0 | Eclipse Public License 2.0 |
Entessa | Entessa Public License v1.0 |
FBM | Fuzzy Bitmap License |
FSFAP | FSF All Permissive License |
FSFAP-no-warranty-disclaimer | FSF All Permissive License (without Warranty) |
FSFULLR | FSF Unlimited License (with License Retention) |
FSFULLRSD | FSF Unlimited License (with License Retention and Short Disclaimer) |
FSFULLRWD | FSF Unlimited License (With License Retention and Warranty Disclaimer) |
FTL | Freetype Project License |
Fair | Fair License |
Ferguson-Twofish | Ferguson Twofish License |
FreeBSD-DOC | FreeBSD Documentation License |
Furuseth | Furuseth License |
GD | GD License |
Graphics-Gems | Graphics Gems License |
Gutmann | Gutmann License |
HDF5 | HDF5 License |
HIDAPI | HIDAPI License |
HP-1986 | Hewlett-Packard 1986 License |
HP-1989 | Hewlett-Packard 1989 License |
HPND | Historical Permission Notice and Disclaimer |
HPND-DEC | Historical Permission Notice and Disclaimer - DEC variant |
HPND-Fenneberg-Livingston | Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant |
HPND-INRIA-IMAG | Historical Permission Notice and Disclaimer - INRIA-IMAG variant |
HPND-Intel | Historical Permission Notice and Disclaimer - Intel variant |
HPND-Kevlin-Henney | Historical Permission Notice and Disclaimer - Kevlin Henney variant |
HPND-MIT-disclaimer | Historical Permission Notice and Disclaimer with MIT disclaimer |
HPND-Markus-Kuhn | Historical Permission Notice and Disclaimer - Markus Kuhn variant |
HPND-Netrek | Historical Permission Notice and Disclaimer - Netrek variant |
HPND-Pbmplus | Historical Permission Notice and Disclaimer - Pbmplus variant |
HPND-UC | Historical Permission Notice and Disclaimer - University of California variant |
HPND-doc | Historical Permission Notice and Disclaimer - documentation variant |
HPND-doc-sell | Historical Permission Notice and Disclaimer - documentation sell variant |
HPND-merchantability-variant | Historical Permission Notice and Disclaimer - merchantability variant |
HPND-sell-MIT-disclaimer-xserver | Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer |
HPND-sell-regexpr | Historical Permission Notice and Disclaimer - sell regexpr variant |
HPND-sell-variant | Historical Permission Notice and Disclaimer - sell variant |
HPND-sell-variant-MIT-disclaimer | HPND sell variant with MIT disclaimer |
HPND-sell-variant-MIT-disclaimer-rev | HPND sell variant with MIT disclaimer - reverse |
HTMLTIDY | HTML Tidy License |
ICU | ICU License |
IJG | Independent JPEG Group License |
IJG-short | Independent JPEG Group License - short |
ISC | ISC License |
ISC-Veillard | ISC Veillard variant |
ImageMagick | ImageMagick License |
Inner-Net-2.0 | Inner Net License v2.0 |
JPNIC | Japan Network Information Center License |
JSON | JSON License |
Jam | Jam License |
Kastrup | Kastrup License |
Knuth-CTAN | Knuth CTAN License |
LOOP | Common Lisp LOOP License |
LZMA-SDK-9.11-to-9.20 | LZMA SDK License (versions 9.11 to 9.20) |
LZMA-SDK-9.22 | LZMA SDK License (versions 9.22 and beyond) |
Leptonica | Leptonica License |
Libpng | libpng License |
LicenseRef-NoVersion-Apache | Apache Software License |
LicenseRef-NoVersion-BSD | BSD License |
LicenseRef-Proprietary-NVIDIA-CUDA-Python-2021 | NVIDIA Software License for CUDA Python (2021) |
LicenseRef-Proprietary-NVIDIA-Math-Libraries-SDK-2022 | License Agreement for NVIDIA Math Libraries SDKs (2022) |
LicenseRef-Proprietary-NVIDIA-Nsight-Systems-2024 | Software License Agreement for NVIDIA Nsight Systems (2024) |
LicenseRef-Proprietary-NVIDIA-SDK-nvTIFF-2022 | License Agreement for NVIDIA SDKs with nvTIFF Supplement (2022) |
LicenseRef-Proprietary-NVIDIA-TensorRT-2021 | Software License Agreement for NVIDIA TensorRT (2021) |
LicenseRef-Proprietary-NVIDIA-Warp | Software License Agreement for NVIDIA Warp |
LicenseRef-com.oracle-BCL | Oracle Binary Code License |
LicenseRef-scancode-amazon-sl | Amazon Software License |
LicenseRef-scancode-apple-excl | Apple Java Extensions |
LicenseRef-scancode-indiana-extreme | Indiana University Extreme! Lab Software 1.1.1 |
LicenseRef-scancode-wordnet | WordNet 3.0 license |
Linux-OpenIB | Linux Kernel Variant of OpenIB.org license |
Linux-man-pages-1-para | Linux man-pages - 1 paragraph |
MIPS | MIPS License |
MIT | MIT License |
MIT-0 | MIT No Attribution License |
MIT-CMU | CMU License |
MIT-Click | MIT Click License |
MIT-Festival | MIT Festival Variant |
MIT-Khronos-old | MIT Khronos - old variant |
MIT-Modern-Variant | MIT License Modern Variant |
MIT-Wu | MIT Tom Wu Variant |
MIT-open-group | MIT Open Group variant |
MIT-testregex | MIT testregex Variant |
MITNFA | MIT +no-false-attribs license |
MMIXware | MMIXware License |
MPL-1.1 | Mozilla Public License 1.1 |
MPL-2.0 | Mozilla Public License 2.0 |
MPL-2.0-no-copyleft-exception | Mozilla Public License 2.0 (no copyleft exception) |
MS-PL | Microsoft Public License |
Mackerras-3-Clause | Mackerras 3-Clause License |
Mackerras-3-Clause-acknowledgment | Mackerras 3-Clause - acknowledgment variant |
Martin-Birgmeier | Martin Birgmeier License |
Minpack | Minpack License |
MirOS | MirOS Licence |
MulanPSL-2.0 | Mulan Permissive Software License, Version 2 |
NCBI-PD | NCBI Public Domain Notice |
NCL | NCL Source Code License |
NCSA | University of Illinois/NCSA Open Source License |
NICTA-1.0 | NICTA Public Software License, Version 1.0 |
NIST-PD | NIST Public Domain Notice |
NIST-Software | NIST Software License |
NLPL | No Limit Public License |
NTIA-PD | NTIA Public Domain Notice |
NTP | NTP License |
NTP-0 | NTP No Attribution |
Net-SNMP | Net-SNMP License |
OAR | OAR License |
OFFIS | OFFIS License |
OFL-1.0 | SIL Open Font License 1.0 |
OFL-1.0-RFN | SIL Open Font License 1.0 with Reserved Font Name |
OFL-1.0-no-RFN | SIL Open Font License 1.0 with no Reserved Font Name |
OFL-1.1 | SIL Open Font License 1.1 |
OFL-1.1-RFN | SIL Open Font License 1.1 with Reserved Font Name |
OFL-1.1-no-RFN | SIL Open Font License 1.1 with no Reserved Font Name |
OGC-1.0 | OGC Software License, Version 1.0 |
OLDAP-2.0 | Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B) |
OLDAP-2.0.1 | Open LDAP Public License v2.0.1 |
OLDAP-2.1 | Open LDAP Public License v2.1 |
OLDAP-2.2 | Open LDAP Public License v2.2 |
OLDAP-2.2.1 | Open LDAP Public License v2.2.1 |
OLDAP-2.2.2 | Open LDAP Public License 2.2.2 |
OLDAP-2.3 | Open LDAP Public License v2.3 |
OLDAP-2.4 | Open LDAP Public License v2.4 |
OLDAP-2.5 | Open LDAP Public License v2.5 |
OLDAP-2.6 | Open LDAP Public License v2.6 |
OLDAP-2.7 | Open LDAP Public License v2.7 |
OLDAP-2.8 | Open LDAP Public License v2.8 |
OpenSSL | OpenSSL License |
OpenSSL-standalone | OpenSSL License - standalone |
PADL | PADL License |
PDDL-1.0 | ODC Public Domain Dedication & License 1.0 |
PHP-3.0 | PHP License v3.0 |
PHP-3.01 | PHP LIcense v3.01 |
PSF-2.0 | Python Software Foundation License 2.0 |
Pixar | Pixar License |
PostgreSQL | PostgreSQL License |
Python-2.0 | Python License 2.0 |
Python-2.0.1 | Python License 2.0.1 |
Ruby | Ruby License |
Ruby-pty | Ruby pty extension license |
SAX-PD-2.0 | Sax Public Domain Notice 2.0 |
SGI-B-2.0 | SGI Free Software License B v2.0 |
SL | SL License |
SMLNJ | Standard ML of New Jersey License |
SMPPL | Secure Messaging Protocol Public License |
SSH-OpenSSH | SSH OpenSSH license |
SSH-short | SSH short notice |
SSLeay-standalone | SSLeay License - standalone |
Soundex | Soundex License |
Spencer-86 | Spencer License 86 |
Spencer-94 | Spencer License 94 |
Spencer-99 | Spencer License 99 |
StandardML-NJ | Standard ML of New Jersey License |
Sun-PPP | Sun PPP License |
Sun-PPP-2000 | Sun PPP License (2000) |
SunPro | SunPro License |
Symlinks | Symlinks License |
TCL | Tcl/Tk |
TCP-wrappers | TCP Wrappers License |
TPDL | Time::ParseDate License |
TPL-1.0 | THOR Public License 1.0 |
TTWL | Text-Tabs+Wrap License |
TTYP0 | TTYP0 License |
TU-Berlin-1.0 | Technische Universitaet Berlin License 1.0 |
TU-Berlin-2.0 | Technische Universitaet Berlin License 2.0 |
TermReadKey | TermReadKey License |
ThirdEye | ThirdEye License |
TrustedQSL | TrustedQSL License |
UCAR | UCAR License |
UMich-Merit | Michigan/Merit Networks License |
UPL-1.0 | Universal Permissive License v1.0 |
Ubuntu-font-1.0 | Ubuntu Font Licence v1.0 |
Unicode-3.0 | Unicode License v3 |
Unicode-DFS-2015 | Unicode License Agreement - Data Files and Software (2015) |
Unicode-DFS-2016 | Unicode License Agreement - Data Files and Software (2016) |
UnixCrypt | UnixCrypt License |
Unlicense | Unlicense |
Unlicense-libtelnet | Unlicense - libtelnet variant |
Unlicense-libwhirlpool | Unlicense - libwhirlpool variant |
Vim | Vim License |
W3C | W3C Software and Notice License |
W3C-19980720 | W3C Software Notice and License (1998-07-20) |
W3C-20150513 | W3C Software Notice and Document License (2015-05-13) |
WTFPL | Do What The F*ck You Want To Public License |
Widget-Workshop | Widget Workshop License |
X11 | X11 License |
X11-distribute-modifications-variant | X11 License Distribution Modification Variant |
X11-swapped | X11 swapped final paragraphs |
XFree86-1.1 | XFree86 License 1.1 |
Xdebug-1.03 | Xdebug License v 1.03 |
Xfig | Xfig License |
Xnet | X.Net License |
ZPL-2.1 | Zope Public License 2.1 |
Zed | Zed License |
Zeeff | Zeeff License |
Zlib | zlib License |
any-OSI-perl-modules | Any OSI License - Perl Modules |
bcrypt-Solar-Designer | bcrypt Solar Designer License |
blessing | SQLite Blessing |
bzip2-1.0.6 | bzip2 and libbzip2 License v1.0.6 |
check-cvs | check-cvs License |
checkmk | Checkmk License |
curl | curl License |
cve-tou | Common Vulnerability Enumeration ToU License |
dtoa | David M. Gay dtoa License |
fwlw | fwlw License |
generic-xts | Generic XTS License |
gtkbook | gtkbook License |
hdparm | hdparm License |
jove | Jove License |
libpng-1.6.35 | PNG Reference Library License v1 (for libpng 0.5 through 1.6.35) |
libpng-2.0 | PNG Reference Library version 2 |
libselinux-1.0 | libselinux public domain notice |
libtiff | libtiff License |
libutil-David-Nugent | libutil David Nugent License |
lsof | lsof License |
magaz | magaz License |
mailprio | mailprio License |
man2html | man2html License |
metamail | metamail License |
mpi-permissive | mpi Permissive License |
mplus | mplus Font License |
pkgconf | pkgconf License |
snprintf | snprintf License |
softSurfer | softSurfer License |
ssh-keyscan | ssh-keyscan License |
swrule | swrule License |
threeparttable | threeparttable License |
ulem | ulem License |
w3m | w3m License |
xkeyboard-config-Zinoviev | xkeyboard-config Zinoviev License |
xlock | xlock License |
xpp | XPP License |
zlib-acknowledgement | zlib/libpng License with Acknowledgement |
Tùy chỉnh danh sách cho phép
Phần tiêu đề “Tùy chỉnh danh sách cho phép”Để hạn chế danh sách cho phép, hãy thay thế DEFAULT_LICENSE_ALLOWLIST bằng mảng của riêng bạn. Để mở rộng nó, hãy spread mặc định và thêm các mục. Các mục được khớp theo id SPDX, tên giấy phép đầy đủ, hoặc bất kỳ bí danh nào được liệt kê (không phân biệt chữ hoa chữ thường).
Ngoại lệ cho từng package
Phần tiêu đề “Ngoại lệ cho từng package”Sử dụng exceptions cho các package không vượt qua kiểm tra — hoặc vì giấy phép của chúng không có trong danh sách cho phép, hoặc vì chúng được giao mà không có metadata giấy phép có thể phát hiện được. Trường reason là bắt buộc để người đánh giá có thể thấy lý do tại sao ngoại lệ được cấp.
exceptions: [ { package: 'union', version: '0.5.0', reason: 'Package ships verbatim MIT text without declaring license', },];Các trình tạo giới thiệu các dependency với metadata có vấn đề (ví dụ: trình tạo máy chủ MCP) tự động thêm các ngoại lệ cần thiết vào cấu hình của bạn khi chúng chạy.
Collectors
Phần tiêu đề “Collectors”Các collector khám phá các dependency và trích xuất metadata giấy phép. Các collector tích hợp sẵn là npmCollector() (quét node_modules) và pythonCollector() (quét các môi trường ảo Python). Trình tạo license cấu hình npmCollector() theo mặc định và thêm pythonCollector() khi có các dự án Python.
Để triển khai một collector tùy chỉnh, hãy tuân thủ giao diện LicenseCollector:
import type { LicenseCollector } from '@aws/nx-plugin/sdk/license';
const myCollector = (): LicenseCollector => ({ name: 'my-ecosystem', traceCommand: 'my-tool why <package>', async collect({ workspaceRoot }) { return [ { name: 'some-dep', version: '1.0.0', rawLicense: 'MIT', ecosystem: 'my-ecosystem' }, ]; },});Hook onDependency
Phần tiêu đề “Hook onDependency”license.dependencies chấp nhận một callback onDependency tùy chọn được gọi một lần cho mỗi dependency được phát hiện, bất kể nó vượt qua hay thất bại kiểm tra. Nó nhận { package, spdx }, trong đó package là tên package và spdx là biểu thức giấy phép SPDX đã được giải quyết. spdx của một ngoại lệ được ưu tiên hơn giấy phép được khai báo thô, và spdx có thể là một chuỗi rỗng nếu không có giấy phép nào được khai báo.
Đây là một cách tiện lợi để in ra tất cả các giấy phép trong dự án của bạn. Chạy target license-check để xem đầu ra:
import { AwsNxPluginConfig } from '@aws/nx-plugin';import { DEFAULT_LICENSE_ALLOWLIST } from '@aws/nx-plugin/sdk/license';
export default { license: { dependencies: { allow: DEFAULT_LICENSE_ALLOWLIST, onDependency: ({ package: pkg, spdx }) => { console.log(`${pkg} - ${spdx}`); }, }, },} satisfies AwsNxPluginConfig;Vô hiệu hóa Kiểm tra Dependency
Phần tiêu đề “Vô hiệu hóa Kiểm tra Dependency”Kiểm tra license dependency được kích hoạt bởi sự hiện diện của khóa license.dependencies trong cấu hình của bạn.
Để vô hiệu hóa kiểm tra cho một lần chạy duy nhất, hãy đặt biến môi trường LICENSE_DEPENDENCY_CHECK=skip:
pnpm LICENSE_DEPENDENCY_CHECK=skip lintyarn LICENSE_DEPENDENCY_CHECK=skip lintnpm run LICENSE_DEPENDENCY_CHECK=skip lintbun LICENSE_DEPENDENCY_CHECK=skip lintĐể vô hiệu hóa vĩnh viễn, hãy xóa khóa license.dependencies khỏi cấu hình của bạn trong aws-nx-plugin.config.mts. Bạn cũng có thể chạy lại trình tạo license với --dependencyCheck=false để tạo scaffold mà không có nó.