Hoppa till innehåll

Proto

För att hantera verktyg och beroenden i våra projekt använder vi proto.
Proto gör det enkelt att installera och hantera olika verktyg som Node.js, npm, yarn, pnpm och många fler.
Vi använder den främst för att hantera Node.js och dess pakethanterare, men man kan använda det för att hantera andra verktyg också.

https://moonrepo.dev/docs/proto

Valet av proto är baserat på denna genomgång där man jämfört olika alternativ för att hantera verktyg och beroenden i JavaScript-projekt. https://github.com/TheJaredWilcurt/blog/discussions/40

Vi har även lagt in de tillägg till protos inställningar som förespråkas, detta för att slå av telemetri och för att automatiskt installera verktyg:
https://github.com/TheJaredWilcurt/blog/discussions/41

Finns stöd för Windows, Linux, macOS och WSL, följ instruktionerna nedan.

  1. Öppna PowerShell som admin

    Starta Terminal appen som admin och öppna en ny PowerShell instans, eller öppna PowerShell direkt.

  2. Säkerställ att en PowerShell profil finns

    Kör följande kommando i PowerShell för att kontrollera om profilen finns, annars skapas den:

    Terminal window
    if (Test-Path $profile) { "Profile exists at $profile" } else { New-Item -ItemType Directory -Path (Split-Path -Parent $profile) -Force | Out-Null; New-Item -ItemType File -Path $profile -Force | Out-Null }
  3. Skapa konfigurationsfil för proto

    Skapa filen C:\Users\{användarnamn}\.proto\.prototools och lägg i följande innehåll.

    [settings]
    telemetry = false
    auto-install = true

    Du kan skapa filen manuellt eller köra följande kommando i PowerShell:

    Terminal window
    New-Item -Path "~/.proto" -ItemType Directory -Force | Out-Null; @'
    [settings]
    telemetry = false
    auto-install = true
    '@ | Set-Content -Path "~/.proto/.prototools"
  4. Installera proto

    Installera proto enligt instruktionerna här:
    https://moonrepo.dev/docs/proto/install#windows

    Terminal window
    irm https://moonrepo.dev/install/proto.ps1 | iex
  5. Installera Node.js, npm och yarn

    Sätt globalt vilka verktyg du vill använda och installera sedan dessa.
    Kan behöva starta en ny PowerShell eller ladda om din profil med & $profile för att få tillgång till proto kommandot.

    Terminal window
    proto pin node lts && proto pin npm latest && proto pin yarn 1 && proto install
  6. Lägg till anpassning av proto anrop i din PowerShell profil

    Vi har en anpassning av proto anropet, denna ser till att när du kör proto pin eller proto unpin i en katalog med en package.json så kommer den att lägga till --resolve --tool-native eller --tool-native flaggorna automatiskt, vilket gör att proto kommer att använda devEngines fältet i package.json.

    Lägg till följande funktion längst ner i din PowerShell profil:

    Terminal window
    function proto {
    param(
    [Parameter(ValueFromRemainingArguments = $true)]
    [string[]]$Args
    )
    $protoCmd = (Get-Command proto -CommandType Application).Source
    if ($Args.Count -gt 0 -and $Args[0] -eq "pin" -and (Test-Path "package.json")) {
    & $protoCmd @Args --resolve --tool-native
    }
    elseif ($Args.Count -gt 0 -and $Args[0] -eq "unpin" -and (Test-Path "package.json")) {
    & $protoCmd @Args --tool-native
    }
    else {
    & $protoCmd @Args
    }
    }

    Du kan öppna din PowerShell profil i Notepad med:

    Terminal window
    notepad.exe $profile

    Alternativt kan du köra följande kommando i PowerShell för att automatiskt lägga till funktionen i din profil:

    Terminal window
    @'
    function proto {
    param(
    [Parameter(ValueFromRemainingArguments = $true)]
    [string[]]$Args
    )
    $protoCmd = (Get-Command proto -CommandType Application).Source
    if ($Args.Count -gt 0 -and $Args[0] -eq "pin" -and (Test-Path "package.json")) {
    & $protoCmd @Args --resolve --tool-native
    }
    elseif ($Args.Count -gt 0 -and $Args[0] -eq "unpin" -and (Test-Path "package.json")) {
    & $protoCmd @Args --tool-native
    }
    else {
    & $protoCmd @Args
    }
    }
    '@ | Add-Content -Path $profile

    Ladda om profilen för att aktivera funktionen:

    Terminal window
    & $profile