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
Installation
Section titled “Installation”Finns stöd för Windows, Linux, macOS och WSL, följ instruktionerna nedan.
- Öppna PowerShell som admin
Starta Terminal appen som admin och öppna en ny PowerShell instans, eller öppna PowerShell direkt.
- 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 } - Skapa konfigurationsfil för proto
Skapa filen
C:\Users\{användarnamn}\.proto\.prototoolsoch lägg i följande innehåll.[settings]telemetry = falseauto-install = trueDu 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 = falseauto-install = true'@ | Set-Content -Path "~/.proto/.prototools" - 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 - 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
& $profileför att få tillgång till proto kommandot.Terminal window proto pin node lts --to=global && proto pin npm latest --to=global && proto pin yarn 1 --to=global && proto install --config-mode=global - 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 pinellerproto unpini en katalog med enpackage.jsonså kommer den att lägga till--resolve --tool-nativeeller--tool-nativeflaggorna automatiskt, vilket gör att proto kommer att använda devEngines fältet ipackage.json.Vi sätter även miljövariabeln
PROTO_CONFIG_MODEtillupwards-globalvilket gör att proto kommer att leta efter en.prototoolsfil i projektets katalog och dess föräldrakataloger, om ingen konfigurationsfil hittas används den globala konfigurationen.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).Sourceif ($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}}$env:PROTO_CONFIG_MODE = "upwards-global"Du kan öppna din PowerShell profil i Notepad med:
Terminal window notepad.exe $profileAlternativt 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).Sourceif ($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}}$env:PROTO_CONFIG_MODE = "upwards-global"'@ | Add-Content -Path $profileLadda om profilen för att aktivera funktionen:
Terminal window & $profile
- Öppna en terminal
Starta en terminal (Bash, Zsh, etc).
- Skapa konfigurationsfil för proto
Terminal window mkdir -p ~/.protocat > ~/.proto/.prototools <<'EOF'[settings]telemetry = falseauto-install = trueEOF - Installera Node.js, npm och yarn
Starta en ny terminal eller ladda om din bash konfiguration med
source ~/.bashrc(eller motsvarande för ditt shell) sätt globalt vilka verktyg du vill använda och installera sedan dessa.Terminal window proto pin node lts --to=global && proto pin npm latest --to=global && proto pin yarn 1 --to=global && proto install --config-mode=globalDetta funkar möjligtvis inte för mac, använd då istället:
Terminal window proto pin node lts --to=global && proto pin npm bundled --to=global && proto pin yarn 1 --to=global && proto install --config-mode=global - Installera proto
Installera proto enligt instruktionerna här: https://moonrepo.dev/docs/proto/install#linux-macos-wsl
Terminal window bash <(curl -fsSL https://moonrepo.dev/install/proto.sh) - Lägg till anpassning av proto anrop i din shell-profil
Lägg till följande längst ner i din profil, denna funktion ser till att när du kör
proto pinellerproto unpini en katalog med enpackage.jsonså kommer den att lägga till--resolve --tool-nativeeller--tool-nativeflaggorna automatiskt, vilket gör att proto kommer att använda devEngines.Vi sätter även miljövariabeln
PROTO_CONFIG_MODEtillupwards-globalvilket gör att proto kommer att leta efter en.prototoolsfil i projektets katalog och dess föräldrakataloger, om ingen konfigurationsfil hittas används den globala konfigurationen.Terminal window proto() {if [[ "$1" == "pin" ]] && [[ -f "package.json" ]]; thencommand proto "$@" --resolve --tool-nativeelif [[ "$1" == "unpin" ]] && [[ -f "package.json" ]]; thencommand proto "$@" --tool-nativeelsecommand proto "$@"fi}export PROTO_CONFIG_MODE="upwards-global";För att automatiskt lägga till detta i din profil, kör följande kommando i terminalen:
Terminal window cat <<'EOF' >> ~/.bashrcproto() {if [[ "$1" == "pin" ]] && [[ -f "package.json" ]]; thencommand proto "$@" --resolve --tool-nativeelif [[ "$1" == "unpin" ]] && [[ -f "package.json" ]]; thencommand proto "$@" --tool-nativeelsecommand proto "$@"fi}export PROTO_CONFIG_MODE="upwards-global";EOFLadda om profilen för att aktivera funktionen:
Terminal window source ~/.bashrc # eller source ~/.zshrc