9 ekosistemde üçüncü parti bağımlılıklarını tara, her lisansı sınıflandır (permissive / weak copyleft / strong copyleft / unknown), ticari kullanım riskini puanla, sonuçları hızlı ve renkli bir terminal arayüzünde gez.
npm install -g @lunanoir/dep-lens
| Package | Versiyon | Lisans | Kategori | Risk |
|---|---|---|---|---|
| react | 18.3.1 | MIT | Permissive | 0 |
| express | 4.19.2 | MIT | Permissive | 0 |
| tokio | 1.38.0 | MIT | Permissive | 0 |
| axios | 1.7.2 | MIT | Permissive | 0 |
| MPL-kit | 2.4.1 | MPL-2.0 | Weak | 40 |
| lgpl-lib | 3.0.0 | LGPL-3.0 | Weak | 50 |
| gpl-engine | 3.0.1 | GPL-3.0 | Strong | 90 |
| agpl-svc | 1.4.0 | AGPL-3.0 | Strong | 100 |
| ???-legacy | 0.9.3 | — | Unknown | 60 |
dep-lens; Rust hızında tarama, akıllı lisans sınıflandırma, renkli terminal arayüzü ve CI gate'lerini tek bir İkili dosyada birleştirir.
npm, Cargo, Go, Python, Ruby, PHP, Java, Dart ve C/C++ manifestlerini otomatik keşfeder ve her biri için doğru lisans kaynağını kullanır.
node_modules · cargo metadata · lockfilesSPDX ifadeleri otomatik katlanır: MIT OR Apache-2.0 en az kısıtlayıcı seçim, MIT AND GPL-2.0 en fazla kısıtlayıcı seçim olarak değerlendirilir.
Her lisans kategorisine 0-100 arası risk puanı verir. AGPL ve SSPL 100, GPL ailesi 90, MPL/EPL/LGPL 40-55, permissive 0, unknown 60. Karar vermek için saniyeler.
0 · 40-55 · 90-100 · 60Ink tabanlı arayüz; sağlık skoruyla reaksiyon gösteren "doktor yüzü", sayım animasyonları, oran çubuğu, satır satır açılan tablo, filtre/sırala/dışa aktarma — hepsi saf ASCII, hiç emoji yok.
Ink · truecolor ANSI · ease-out animasyon--fail-on gpl ile strong copyleft lisansları tespit edildiğinde exit code 1 döner. --fail-on agpl sadece AGPL için tetiklenir. Pipeline'ınız otomatik kilitlenir.
Tarama motoru Rust'ta yazılı; Linux x64, macOS x64/arm64 ve Windows x64 için ön derlenmiş binary'ler npm üzerinden otomatik seçilir. TUI TypeScript + Ink ile terminalde çalışır.
cargo build --release + tscPython'da sadece pyproject.toml varsa her bağımlılığı versiyon spec'i ile listeler. Java'da build.gradle üzerinden group:artifact:version koordinatlarını doğrudan ayrıştırır.
--json stdout'a ham JSON, --html report.html bağımsız bir HTML rapor üretir. licenseSource alanı lisansın nereden geldiğini kaydeder: declared / licenseFile / none.
Tüm etiketler, tavsiye metinleri ve durum mesajları Türkçe'ye çevrilmiştir. --tr bayrağıyla arayüz anında dil değiştirir. Kurulum sihirbazı terminal dilini de algılar.
Her ekosistem için doğru manifest, doğru lockfile ve doğru lisans önbelleği kullanılır. Hiçbir konfigürasyon gerekmez.
package.json + node_modules
license alanı → LICENSE dosyasıCargo.toml via cargo metadata
crate metadata → LICENSEgo.mod
$GOPATH/pkg/mod LICENSEpoetry.lock · uv.lock · Pipfile.lock · requirements.txt · pyproject.toml
.venv/venv *.dist-info/METADATAGemfile.lock
gemspec license → LICENSEcomposer.lock
composer.json license alanıpom.xml · gradle.lockfile · build.gradle(.kts)
~/.m2/repository POMpubspec.lock
~/.pub-cache/hosted LICENSEvcpkg.json · conanfile.txt
vcpkg_installed copyrightSPDX ifadeleri otomatik katlanır, -only / -or-later sonekleri ve WITH istisna maddeleri normalize edilir. Araç otomatik rapor üretir; hukuki tavsiye değildir.
MITApache-2.0BSD-2/3-ClauseISC · 0BSDUnlicense · CC0Zlib · BSL-1.0Artistic-2.0 ...LGPL-2.0/2.1/3.0 → 50MPL-1.1/2.0 → 40EPL-1.0/2.0 → 45CDDL-1.0/1.1 → 55GPL-1.0/2.0/3.0 → 90AGPL-1.0/3.0 → 100SSPL-1.0 → 100EUPL-1.1/1.2 · OSL-3.0SEE LICENSE IN ... yer tutucuİlk çalıştırmada kurulum sihirbazı proje ekosistemlerini listeler, dil seçimi yaptırır ve PATH kontrolü yapar. Tekrar çalıştırmak için dep-lens --setup.
# Mevcut dizin için etkileşimli TUI dep-lens # Başka bir projeyi tara dep-lens --path ../my-app # Hariç tutulacak paketler dep-lens --ignore left-pad --ignore internal-pkg-a,internal-pkg-b
# stdout'a ham JSON (TTY değilse varsayılan) dep-lens --json | jq '.packages[] | select(.category=="strong")' # örnek çıktı { "name": "gpl-engine", "version": "3.0.1", "license": "GPL-3.0-only", "category": "strong", "risk": 90, "licenseSource": "declared", "ecosystem": "npm" }
# Bağımsız HTML rapor üret dep-lens --html report.html # Tüm paketler, renk kodlu kategoriler, # kaynak lisans meta-data, JSON'a göre # daha gözden geçirilebilir bir çıktı. # CI artifact olarak yayınla: dep-lens --html ./artifacts/licenses.html
# Tüm etiketler, tavsiyeler ve durum mesajları dep-lens --tr # İlk çalıştırmada kurulum sihirbazı dili sorar, # seçim ~/.config/dep-lens/config.json'a kaydedilir. # Sihirbazı tekrar çalıştır: dep-lens --setup
# Strong copyleft varsa exit 1 dep-lens --fail-on gpl # GPL-2.0, GPL-3.0, AGPL-3.0 # Sadece AGPL dep-lens --fail-on agpl # AGPL-3.0 only # CI'da JSON + gate birlikte dep-lens --json --fail-on gpl > report.json
dep-lens --test /path/to/project PASS native scanner binary dep-lens-core 0.1.0 PASS scan 31 package(s) found PASS npm / yarn / pnpm 19 package(s) PASS Cargo 3 package(s) WARN license coverage 3 package(s) with unknown license all checks passed
Tek satırlık bir GitHub Actions adımı, projenize GPL/AGPL/SSPL kaçmasını engeller. JSON çıktısını artifact olarak yayınla, HTML raporu ekiplere paylaş.
CI ajanında npm install -g yapmak yerine npx dep-lens çağrısı yeterli. Platform binary'si otomatik çekilir.
--fail-on gpl strong copyleft tetikler, --fail-on agpl sadece AGPL. Exit code 1 → adım kırmızı → PR engellenir.
JSON'u JQ ile sorgula, HTML raporu tarayıcıda paylaş. licenseSource alanı lisansın declared mı, LICENSE dosyasından mı yoksa hiç yok mu olduğunu kaydeder.
İç paketler, araştırılmış özel paketler veya metrik dışı bırakılması gereken bağımlılıklar --ignore ile filtrelenir. Virgülle ayrılmış liste veya tekrarlayan bayrak kabul eder.
# .github/workflows/license-gate.yml name: License gate on: [pull_request] jobs: licenses: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' - name: License scan run: npx dep-lens \ --json \ --fail-on gpl \ > licenses.json - name: HTML report if: always() run: npx dep-lens --html report.html - uses: actions/upload-artifact@v4 with: name: license-report path: | licenses.json report.html
Tüm etkileşim saf ASCII ve truecolor ANSI üzerinden. Hiç emoji yok, hiç fare gerekmez. Pager-up/down ile 10'er satır atla, g/G ile başa/sona uç.