Licenza
Gestisci le licenze nell’intero workspace: sincronizza i file LICENSE e le intestazioni del codice sorgente per il tuo codice (license.source), e verifica che ogni dipendenza sia conforme a una lista di licenze consentite (license.dependencies).
Utilizzo
Sezione intitolata “Utilizzo”Esegui il generatore
Sezione intitolata “Esegui il generatore”- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - license - Compila i parametri richiesti
- Clicca su
Generate
pnpm nx g @aws/nx-plugin:licenseyarn nx g @aws/nx-plugin:licensenpx nx g @aws/nx-plugin:licensebunx nx g @aws/nx-plugin:licensePuoi anche eseguire una prova per vedere quali file verrebbero modificati
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-runOpzioni
Sezione intitolata “Opzioni”| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
| license | Apache-2.0 | MIT | ASL | Apache-2.0 | Identificatore di licenza SPDX per la licenza scelta |
| copyrightHolder | string | Amazon.com, Inc. or its affiliates | Il titolare del copyright, incluso nel file LICENSE e nelle intestazioni dei file sorgente per impostazione predefinita. |
| dependencyCheck | boolean | true | Configura un target license-check che fallisce quando le dipendenze dichiarano licenze al di fuori della lista consentita configurata. |
| preferInstallDependencies | boolean | true | Se preferire l'installazione delle dipendenze dopo l'esecuzione del generatore. Impostare su false per rimandare l'installazione quando si eseguono più generatori in batch (l'installazione viene comunque eseguita se necessaria affinché i generatori successivi possano calcolare il grafo dei progetti Nx); installare una volta alla fine. |
Output del generatore
Sezione intitolata “Output del generatore”Il generatore creerà o aggiornerà i seguenti file:
- nx.json Il target lint è configurato per eseguire il generatore di sincronizzazione delle licenze e dipende dal target license-check
- aws-nx-plugin.config.mts Configurazione per la sincronizzazione del codice sorgente delle licenze (
license.source) e il controllo delle dipendenze (license.dependencies)
Intestazioni e file di licenza
Sezione intitolata “Intestazioni e file di licenza”Il generatore registra un generatore di sincronizzazione che viene eseguito come parte dei tuoi target lint per garantire che i file sorgente contengano le intestazioni di licenza corrette, che i progetti contengano i file LICENSE e che i metadati di licenza siano impostati in package.json e pyproject.toml.
Workflow
Sezione intitolata “Workflow”Ogni volta che costruisci i tuoi progetti (e viene eseguito un target lint), il generatore di sincronizzazione delle licenze si assicurerà che le licenze nei tuoi progetti corrispondano alla tua configurazione. Se rileva che qualcosa non è sincronizzato, riceverai un messaggio come:
NX The workspace is out of sync
[@aws/nx-plugin:license#sync]: I file LICENSE del progetto non sono sincronizzati:- LICENSE- packages/<my-project>LICENSE
I file package.json del progetto non sono sincronizzati:- package.json
I file pyproject.toml del progetto non sono sincronizzati:- pyproject.toml- packages/<my-python-project>/pyproject.toml
Le intestazioni di licenza non sono sincronizzate nei seguenti file sorgente:- packages/<my-project>/src/index.ts- packages/<my-python-project>/main.py
Questo causerà un errore in CI.
? Desideri sincronizzare le modifiche identificate per aggiornare il workspace?Sì, sincronizza le modifiche ed esegui i taskNo, esegui i task senza sincronizzare le modificheSeleziona Sì per sincronizzare le modifiche.
Comportamento della sincronizzazione
Sezione intitolata “Comportamento della sincronizzazione”Il generatore di sincronizzazione esegue tre attività principali:
1. Sincronizza le intestazioni di licenza nei file sorgente
Sezione intitolata “1. Sincronizza le intestazioni di licenza nei file sorgente”Quando viene eseguito, il generatore si assicura che tutti i file sorgente nel workspace (in base alla configurazione) contengano l’intestazione di licenza appropriata. L’intestazione viene scritta come primo commento a blocco o serie consecutiva di commenti a linea nel file (escludendo eventuali shebang/hashbang presenti).
2. Sincronizza i file LICENSE
Sezione intitolata “2. Sincronizza i file LICENSE”Il generatore verifica che il file LICENSE principale corrisponda alla licenza configurata, e che tutti i sottoprogetti nel workspace contengano il file LICENSE corretto.
3. Sincronizza le informazioni di licenza nei file di progetto
Sezione intitolata “3. Sincronizza le informazioni di licenza nei file di progetto”Il generatore assicura che i campi license nei file package.json e pyproject.toml siano impostati secondo la licenza configurata.
Configurazione di intestazioni e file
Sezione intitolata “Configurazione di intestazioni e file”La configurazione è definita nel file aws-nx-plugin.config.mts nella root del workspace.
SPDX e titolare del copyright
Sezione intitolata “SPDX e titolare del copyright”La licenza selezionata può essere aggiornata in qualsiasi momento tramite la proprietà spdx:
export default { license: { source: { spdx: 'MIT', }, },} satisfies AwsNxPluginConfig;All’esecuzione del generatore, tutti i file LICENSE, package.json e pyproject.toml verranno aggiornati con la licenza configurata.
Puoi inoltre configurare titolare e anno del copyright, inclusi in alcuni file LICENSE:
export default { license: { source: { spdx: 'MIT', copyrightHolder: 'Amazon.com, Inc. or its affiliates', copyrightYear: 2025, }, },} satisfies AwsNxPluginConfig;Contenuto dell’intestazione di licenza
Sezione intitolata “Contenuto dell’intestazione di licenza”Il contenuto dell’intestazione può essere configurato in due modi:
- Contenuto inline:
export default { license: { source: { header: { content: { lines: [ 'Copyright: My Company, Incorporated.', 'Licensed under the MIT License', 'All rights reserved', ]; } // ... configurazione formato } } }} satisfies AwsNxPluginConfig;- Caricamento da file:
export default { license: { source: { header: { content: { filePath: 'license-header.txt'; // relativo alla root del workspace } // ... configurazione formato } } }} satisfies AwsNxPluginConfig;Formato dell’intestazione
Sezione intitolata “Formato dell’intestazione”Puoi specificare come formattare le intestazioni per diversi tipi di file usando pattern glob. Sono supportati commenti a linea, a blocco o combinazioni:
export default { license: { source: { header: { content: { lines: ['Copyright notice here'], }, format: { // Commenti a linea '**/*.ts': { lineStart: '// ', }, // Commenti a blocco '**/*.css': { blockStart: '/*', blockEnd: '*/', }, // Commenti a blocco con prefissi '**/*.java': { blockStart: '/*', lineStart: ' * ', blockEnd: ' */', }, // Commenti a linea con header/footer '**/*.py': { blockStart: '# ------------', lineStart: '# ', blockEnd: '# ------------', }, }, }, }, },} satisfies AwsNxPluginConfig;Le opzioni di formato supportate:
blockStart: Testo prima del contenuto della licenza (es. per iniziare un blocco)lineStart: Prefisso per ogni riga della licenzalineEnd: Suffisso per ogni riga della licenzablockEnd: Testo dopo il contenuto della licenza (es. per chiudere un blocco)
Sintassi personalizzata per commenti
Sezione intitolata “Sintassi personalizzata per commenti”Per tipi di file non supportati nativamente, puoi definire sintassi personalizzate per identificare le intestazioni esistenti:
export default { license: { source: { header: { content: { lines: ['My license header'], }, format: { '**/*.xyz': { lineStart: '## ', }, }, commentSyntax: { xyz: { line: '##', // Sintassi per commenti a linea }, abc: { block: { // Sintassi per commenti a blocco start: '<!--', end: '-->', }, }, }, }, }, },} satisfies AwsNxPluginConfig;Escludere file dalla sincronizzazione delle intestazioni
Sezione intitolata “Escludere file dalla sincronizzazione delle intestazioni”Per default, in repository git, tutti i file .gitignore vengono rispettati. In repository non git, tutti i file sono considerati a meno di esclusioni esplicite.
Puoi escludere ulteriori file usando pattern glob:
export default { license: { source: { header: { content: { lines: ['My license header'], }, format: { '**/*.ts': { lineStart: '// ', }, }, exclude: ['**/generated/**', '**/dist/**', 'some-specific-file.ts'], }, }, },} satisfies AwsNxPluginConfig;Escludere progetti dalla sincronizzazione dei file
Sezione intitolata “Escludere progetti dalla sincronizzazione dei file”Tutti i file LICENSE, package.json e pyproject.toml vengono sincronizzati per default.
Puoi escludere progetti o file specifici usando pattern glob:
export default { license: { source: { files: { exclude: [ // non sincronizzare LICENSE, package.json o pyproject.toml 'packages/excluded-project', // non sincronizzare LICENSE, ma sincronizza package.json/pyproject.toml 'apps/internal/LICENSE', ]; } } }} satisfies AwsNxPluginConfig;Disabilitare la sincronizzazione delle licenze
Sezione intitolata “Disabilitare la sincronizzazione delle licenze”La sincronizzazione del codice sorgente delle licenze è abilitata dalla presenza della chiave license.source nella tua configurazione. Per disabilitarla:
- Rimuovi la sezione
license.sourcedalla tua configurazione inaws-nx-plugin.config.mts(puoi mantenerelicense.dependenciesse vuoi ancora il controllo delle licenze delle dipendenze) - Se vuoi anche rimuovere completamente il generatore di sincronizzazione, rimuovi il generatore
@aws/nx-plugin:license#syncdatargetDefaults.lint.syncGenerators
Per riattivare, esegui nuovamente il generatore license.
Controllo delle licenze delle dipendenze
Sezione intitolata “Controllo delle licenze delle dipendenze”Il generatore license configura anche un target license-check che fallisce quando una delle dipendenze del progetto (o qualsiasi dipendenza transitiva) dichiara una licenza che non è nella tua lista consentita.
Come funziona
Sezione intitolata “Come funziona”Il generatore scrive un target license-check nel tuo project.json principale:
{ "targets": { "license-check": { "executor": "@aws/nx-plugin:license-check", "cache": true, "inputs": [ "{workspaceRoot}/pnpm-lock.yaml", "{workspaceRoot}/aws-nx-plugin.config.mts" ], "options": {} } }}Gli inputs sono calcolati per il tuo workspace: vengono inclusi solo i lockfile effettivamente presenti, insieme a aws-nx-plugin.config.mts, più un glob {workspaceRoot}/**/uv.lock quando il controllo delle dipendenze Python è abilitato (cioè quando è configurato un collector Python).
Puoi eseguire il controllo direttamente:
pnpm nx license-checkyarn nx license-checknpx nx license-checkbunx nx license-checkI risultati sono memorizzati in cache rispetto ai tuoi lockfile e aws-nx-plugin.config.mts — le riesecuzioni sono istantanee quando nulla è cambiato.
I collector determinano cosa viene scansionato. L’npmCollector usa license-checker-rseidelsohn, e il pythonCollector usa pip-licenses. Se non vengono trovate dipendenze installate, il controllo passa senza nulla da ispezionare.
Esecuzione come parte di lint/build
Sezione intitolata “Esecuzione come parte di lint/build”Il controllo delle licenze delle dipendenze viene eseguito automaticamente ogni volta che esegui lint o build su qualsiasi progetto nel tuo workspace. Il generatore license collega il target lint di ogni progetto per dipendere dal target license-check principale, e i generatori di progetto (ts#* e py#*) fanno lo stesso quando vengono eseguiti — quindi il controllo è collegato indipendentemente dall’ordine in cui vengono eseguiti i generatori.
Questo significa che non è necessario eseguire il controllo esplicitamente, anche se puoi ancora farlo con il target license-check:
pnpm nx license-checkyarn nx license-checknpx nx license-checkbunx nx license-checkIl collegamento è un dependsOn cross-progetto sul target lint di ogni progetto che punta al target license-check principale. Per saltare il controllo durante un lint o build, imposta la variabile d’ambiente 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 lintConfigurazione
Sezione intitolata “Configurazione”Per impostazione predefinita, il controllo utilizza un set integrato di licenze permissive comuni (MIT, Apache-2.0, BSD, ISC, ecc.) esportato come DEFAULT_LICENSE_ALLOWLIST. Puoi estenderlo o sovrascriverlo nella tua configurazione:
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 |
Personalizzare la lista consentita
Sezione intitolata “Personalizzare la lista consentita”Per restringere la lista, sostituisci DEFAULT_LICENSE_ALLOWLIST con il tuo array. Per estenderla, espandi il default e aggiungi voci. Le voci vengono confrontate per ID SPDX, nome completo della licenza o uno qualsiasi degli alias elencati (senza distinzione tra maiuscole e minuscole).
Eccezioni per singoli pacchetti
Sezione intitolata “Eccezioni per singoli pacchetti”Usa exceptions per i pacchetti che non superano il controllo — sia perché la loro licenza non è nella lista consentita, sia perché vengono forniti senza metadati di licenza rilevabili. Il campo reason è obbligatorio in modo che i revisori possano vedere perché l’eccezione è stata concessa.
exceptions: [ { package: 'union', version: '0.5.0', reason: 'Package ships verbatim MIT text without declaring license', },];I generatori che introducono dipendenze con metadati problematici (ad es. il generatore di server MCP) aggiungono automaticamente le eccezioni necessarie alla tua configurazione quando vengono eseguiti.
Collector
Sezione intitolata “Collector”I collector scoprono le dipendenze ed estraggono i metadati di licenza. I collector integrati sono npmCollector() (scansiona node_modules) e pythonCollector() (scansiona gli ambienti virtuali Python). Il generatore di licenze configura npmCollector() per impostazione predefinita e aggiunge pythonCollector() quando sono presenti progetti Python.
Per implementare un collector personalizzato, conformati all’interfaccia 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' }, ]; },});L’hook onDependency
Sezione intitolata “L’hook onDependency”license.dependencies accetta un callback opzionale onDependency che viene invocato una volta per ogni dipendenza scoperta, indipendentemente dal fatto che superi o meno il controllo. Riceve { package, spdx }, dove package è il nome del pacchetto e spdx è l’espressione di licenza SPDX risolta. L’spdx di un’eccezione ha la precedenza sulla licenza dichiarata grezza, e spdx può essere una stringa vuota se non è stata dichiarata alcuna licenza.
Questo è un modo pratico per stampare tutte le licenze nel tuo progetto. Esegui il target license-check per vedere l’output:
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;Disabilitare i controlli delle dipendenze
Sezione intitolata “Disabilitare i controlli delle dipendenze”Il controllo delle licenze delle dipendenze è abilitato dalla presenza della chiave license.dependencies nella tua configurazione.
Per disabilitare i controlli per una singola esecuzione, imposta la variabile d’ambiente 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 lintPer disabilitare permanentemente, rimuovi la chiave license.dependencies dalla tua configurazione in aws-nx-plugin.config.mts. Puoi anche rieseguire il generatore license con --dependencyCheck=false per generare lo scaffold senza di essa.