====== Vývojové prostředí: Instalace Node, Javy a NX Console ======
Tato stránka popisuje postup, jak si vývojář může připravit vývojové prostředí se správnými verzemi **Node.js** a **Javy**, jak používat soubory `.nvmrc` a `.sdkmanrc`, a jak v IDE používat nástroj **Nx Console**.
===== tl;dr =====
  * Aktualni navod: https://git.bcvsolutions.eu/czechidm/IdStory-IdM/-/blob/develop/README.md
  * Formatovani backendu: ''npx nx format-backend''
  * Formatovani frontendu: ''npx nx format-frontend''
  * Build aplikace (war): ''npx nx build aggregator''
  * Build docker image: ''npx nx container app''
  * Instalace git hooku (automaticke formatovani): ''npm i''
===== Instalace a nastavení fnm (Fast Node Manager) =====
==== macOS / Linux ====
curl -fsSL https://fnm.vercel.app/install | bash
# nebo přes Homebrew (macOS):
brew install fnm
Poté přidej do `~/.bashrc`, `~/.zshrc` nebo `~/.config/fish/config.fish`:
eval "$(fnm env --use-on-cd)"
==== Windows ====
winget install Schniz.fnm
# nebo
scoop install fnm
# nebo
choco install fnm
Do PowerShell profilu přidej:
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression
Pokud profil neexistuje:
if (!(Test-Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
Set-ExecutionPolicy Unrestricted
==== Použití fnm ====
fnm install 18
fnm default 18
fnm use          # použije verzi z .nvmrc pokud existuje
===== Instalace SDKMAN! a JDK =====
==== SDKMAN! pro macOS / Linux / WSL ====
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
==== Instalace Javy ====
sdk install java
sdk install java 21.0.2-tem
sdk default java 21.0.2-tem
==== Vlastní JDK ====
sdk install java moje-jdk-18 /cesta/k/jdk-18
sdk use java moje-jdk-18
==== Použití .sdkmanrc ====
Vytvoř soubor `.sdkmanrc` v kořenovém adresáři projektu:
java=21.0.2-tem
Pak spusť:
sdk env
===== Nastavení IDE: Nx Console pro IntelliJ IDEA / WebStorm =====
==== Instalace pluginu ====
  * Otevři **Settings → Plugins**
  * Vyhledej **"Nx Console"**
  * Nainstaluj, restartuj IDE
==== Použití ====
  * Otevři Nx Console přes **View → Tool Windows → Nx Console**
  * Zde můžeš:
    * Spouštět příkazy (build, test, lint…)
    * Generovat nové moduly pomocí GUI
    * Zobrazit závislosti (`nx graph`)
===== Nx v CLI =====
Pokud je Nx již v projektu:
npx nx --help
npx nx list
npx nx graph
npx nx run-many --target=build --all
npx nx affected --target=test
===== Shrnutí kroků pro vývojáře =====
^ Co                                   ^ Příkaz                                                  ^
| Instalace fnm                        | `curl ... | bash` nebo `winget install Schniz.fnm`       |
| Shell setup                         | `eval "$(fnm env --use-on-cd)"`                         |
| Použití verze z .nvmrc              | `fnm use`                                               |
| Instalace SDKMAN!                   | `curl ... | bash` a `source ~/.sdkman/bin/sdkman-init.sh` |
| Instalace konkrétní verze Javy     | `sdk install java 17.0.8-tem`                           |
| Použití .sdkmanrc                   | `sdk env`                                               |
| Instalace Nx Console do IDE        | Přes pluginy v IntelliJ/WebStorm                        |
| Prohlížení/spouštění Nx tasků      | V Nx Console nebo pomocí CLI                            |
===== Doporučení =====
  * Automaticky načítej `.sdkmanrc` pomocí:
    
    source "$HOME/.sdkman/bin/sdkman-init.sh"
    sdk env install
    
  * Automatické použití Node verze:
    
    eval "$(fnm env --use-on-cd)"
    
  * Formatovani backendu:
    
    npx nx format-backend
    
  * Formatovani frontendu:
    
    npx nx format-frontend
    
  * Build aplikace (WAR):
    
    npx nx build aggregator --skip-nx-cache
    
  * Build backendu (WAR):
    
    npx nx dev-build aggregator --skip-nx-cache
    
  * Build docker image pro buildeni aplikace:
    
    docker buildx bake
    
  * V IDE použij **Run Anything** (Ctrl+Ctrl nebo Shift+Shift) → napiš `nx` a použij autocomplete.