Skip to content

Instantly share code, notes, and snippets.

@JeffeVargasP
Last active May 31, 2023 13:44
Show Gist options
  • Save JeffeVargasP/87695e3a8ab98569a23785c6c98caa8d to your computer and use it in GitHub Desktop.
Save JeffeVargasP/87695e3a8ab98569a23785c6c98caa8d to your computer and use it in GitHub Desktop.

Tutorial de Instalação e Configuração do NHipster

Este tutorial irá guiá-lo através do processo de instalação e configuração do ambiente necessário para utilizar a ferramenta NHipster em máquinas como Windows, Linux e MacOS.

Nota do criado: Não é necessário instalar o NVM ou SDKMan, por isso no sumário estão como opcional, porém é obrigatório ter instalado o Java na versão 11.0.12-open e o Node na versão 14.16.x!

Sumário

Automático

Executando o Shell Script

  • Para executar o Shell script, você DEVE ter um arquivo .jdl base na pasta raiz onde fica o start.sh, caso contrário não irá funcionar!

Linux && MacOS

  • Para executar-lo, primeiro de ao arquivo as devidas permissões e em seguida sim iniciar o script:
    • chmod +x ./script.sh
    • ./start.sh

Windows

  • Para executar-lo, execute o arquivo:
    • script.bat
      

Configurando o ambiente dev no backend

  • Você deve acessar o arquivo server/src/orm.config.ts e onde há a linha:
if (process.env.BACKEND_ENV === 'dev')

Manual

Instalando o SDKMan

O SDKMan é uma ferramenta de gerenciamento de software para Java e outras linguagens de programação. Siga os passos abaixo para instalá-lo:

Windows

  1. Baixe o SDKMan para Windows a partir do seguinte link: SDKMan para Windows.
  2. Extraia o conteúdo do arquivo zip para uma pasta de sua escolha.
  3. Abra o Prompt de Comando do Windows e navegue até a pasta onde o SDKMan foi extraído.
  4. Execute o seguinte comando para permitir que o script de instalação seja executado:
    Set-ExecutionPolicy Unrestricted -Scope CurrentUser
  5. Execute o seguinte comando para instalar o SDKMan:
    .\\install.ps1
  6. Para verificar se o SDKMan foi instalado corretamente, execute o seguinte comando:
    sdk version
    O resultado deve ser a versão atual do SDKMan instalada na sua máquina.

Linux e MacOS

  1. Abra o terminal ou prompt de comando.
  2. Digite o seguinte comando para baixar o SDKMan:
    curl -s "https://get.sdkman.io" | bash
  3. Após a conclusão do download, digite o seguinte comando para ativar o SDKMan:
    source "$HOME/.sdkman/bin/sdkman-init.sh"
  4. Para verificar se o SDKMan foi instalado corretamente, digite o seguinte comando:
    sdk version
    O resultado deve ser a versão atual do SDKMan instalada na sua máquina.

Instalando o NVM

O NVM é uma ferramenta de gerenciamento de versões do Node.js. Siga os passos abaixo para instalá-lo:

Windows

  1. Baixe o instalador do NVM para Windows a partir do seguinte link: NVM para Windows.
  2. Extraia o conteúdo do arquivo zip para uma pasta de sua escolha.
  3. Execute o instalador e siga as instruções na tela.
  4. Após a conclusão da instalação, abra o Prompt de Comando do Windows e digite o seguinte comando para verificar se o NVM foi instalado corretamente:
    nvm --version
    O resultado deve ser a versão atual do NVM instalada na sua máquina.

Linux e MacOS

  1. Abra o terminal ou prompt de comando.
  2. Digite o seguinte comando para baixar e instalar o NVM:
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
  3. Após a conclusão da instalação, digite o seguinte comando para carregar o NVM:
    source ~/.nvm/nvm.sh
  4. Para verificar se o NVM foi instalado corretamente, digite o seguinte comando:
    nvm --version
    O resultado deve ser a versão atual do NVM instalada na sua máquina.

Instalando o Docker

O Docker é uma plataforma de containerização que permite empacotar e distribuir aplicativos com suas dependências. Siga os passos abaixo para instalar o Docker:

Windows

  1. Baixe o instalador do Docker para Windows a partir do seguinte link: Docker para Windows.
  2. Execute o instalador e siga as instruções na tela.
  3. Após a conclusão da instalação, verifique se o Docker foi instalado corretamente executando o seguinte comando no Prompt de Comando do Windows:
    docker --version
    O resultado deve ser a versão atual do Docker iBanco de Dados MySQL em Ambiente de Desenvolvimentonstalada na sua máquina.

Linux

  1. Abra o terminal.
  2. Execute os seguintes comandos para instalar o Docker:
    sudo apt-get update
    sudo apt-get install docker.io
  3. Após a conclusão da instalação, verifique se o Docker foi instalado corretamente executando o seguinte comando:
    docker --version
    O resultado deve ser a versão atual do Docker instalada na sua máquina.

MacOS

  1. Baixe o instalador do Docker para MacOS a partir do seguinte link: Docker para MacOS.
  2. Execute o instalador e siga as instruções na tela.
  3. Após a conclusão da instalação, verifique se o Docker foi instalado corretamente executando o seguinte comando no terminal:
    docker --version
    O resultado deve ser a versão atual do Docker instalada na sua máquina.

Para sistemas baseados em UNIX:

  • Aviso: Antes de executar os comandos a seguir, verifique se você tem privilégios administrativos ou está usando uma conta de usuário com permissões para executar comandos sudo.

  • Aviso de Segurança: A adição do usuário ao grupo "docker" concede privilégios para executar comandos Docker sem a necessidade de inserir uma senha. Isso pode representar um risco de segurança, pois qualquer comando Docker executado pelo usuário terá acesso privilegiado ao sistema. Portanto, é importante considerar os seguintes pontos:

Adicionar seu usuário ao grupo "docker" permite que você execute comandos Docker sem a necessidade de usar sudo em cada comando. Isso pode facilitar o trabalho diário com o Docker.

No entanto, isso também significa que qualquer comando Docker executado pelo seu usuário terá acesso privilegiado ao sistema, o que pode ser arriscado se você executar comandos desconhecidos ou baixar imagens Docker não confiáveis.

Antes de adicionar seu usuário ao grupo "docker", avalie os riscos e certifique-se de confiar nos comandos Docker que você executará e nas imagens que você baixará.

Agora, você pode prosseguir com os seguintes comandos:

  1. Crie um grupo chamado "docker" executando o seguinte comando:
sudo groupadd docker
  1. Adicione seu usuário atual ao grupo "docker" executando o seguinte comando:
sudo usermod -aG docker ${USER}
  • Observação: Após adicionar seu usuário ao grupo "docker", será necessário fazer logout e fazer login novamente para que as alterações entrem em vigor.

Certifique-se de seguir esses avisos para evitar problemas durante a instalação e configuração do Docker, considerando a segurança do seu sistema.

Configurando o Container Docker

Agora que o Docker está instalado, siga os passos abaixo para configurar o container do NHipster:

  1. Abra o terminal ou prompt de comando.
  2. Execute o seguinte comando para baixar a imagem do MySQL:
    docker pull mysql
  3. Após o download da imagem, execute o seguinte comando para iniciar um container com o MySQL:
    docker run -p 3306:3306 --name <nome_do_container> -e MYSQL_ROOT_PASSWORD=<senha_do_banco> -e MYSQL_DATABASE=<nome_do_banco> -d mysql
  4. Aguarde até que o container seja iniciado. Você pode verificar o status do container executando o seguinte comando:
    docker ps
    O resultado deve mostrar o container "nhip-mysql" em execução.

Instalando o NHipster

Pré-instalação

Antes de prosseguir com a instalação do Nhipster, é necessário ter o Node.js na versão 14.16 e o Java na versão 11 instalados em seu sistema, pois o NHipster requer essas versões específicas.

Node.js

nvm install 14.16 && nvm use 14.16

Java

sdk install java 11.0.12-open && sdk use java 11.0.12-open
  • Agora que o ambiente está configurado, você pode instalar o NHipster e gerar seu primeiro projeto. Siga os passos abaixo:
  1. Abra o terminal ou prompt de comando.
  2. Execute o seguinte comando para instalar o NHipster:
npm i -g generator-jhipster-nodejs jhipster
  • Aguarde até que o processo de instalação seja concluído.

  • Caso você esteja enfrentando problemas com o pacote "browser-sync-client" no frontend, execute o seguinte comando para corrigi-lo:

    npm i browser-sync-client@2.27.9
  • No backend, você deve instalar uma dependência em uma versão específica para que ele execute fielmente:

    npm i @types/node@14.x
  • Para gerar um novo projeto utilizando um arquivo JDL (JHipster Domain Language), execute o seguinte comando substituindo <local_do_jdl> pelo caminho do arquivo JDL:

nhipster jdl <local_do_jdl>

Certifique-se de que o arquivo JDL esteja corretamente formatado e contendo as configurações desejadas para o seu projeto.

Importando o 'URL' Manualmente

Após a geração do projeto com o comando nhipster jdl <local_do_jdl>, você precisa adicionar manualmente a importação do 'URL' em seu código. Siga os passos abaixo para fazer isso:

  1. Localize o arquivo onde você deseja adicionar a importação do 'URL'. Por exemplo, src/client/header-util.ts.
  2. Abra o arquivo em um editor de código.
  3. Pressione Ctrl + P para abrir a barra de pesquisa do editor.
  4. Digite src/client/header-util.ts:4 para ir diretamente à linha 4 do arquivo.
  5. Adicione a seguinte linha de código abaixo da importação existente:
import { URL } from 'url';

Adicionando ambiente em desenvolvimento

  • O nhipster não gera a linha de que tipo de banco e quais suas configurações utilizar quando o backend está em desenvolvimento, logo você deve fazer isso com:
    if (process.env.BACKEND_ENV === 'dev') {
        ormconfig = {
            name: 'default',
            type: 'mysql',
            database: 'braas',
            host: 'localhost',
            port: 3307,
            username: 'sa',
            password: 'yourStrong(!)Password',
            logging: false,
            synchronize: commonConf.SYNCRONIZE,
            entities: commonConf.ENTITIES,
            migrations: commonConf.MIGRATIONS,
            cli: commonConf.CLI,
            migrationsRun: commonConf.MIGRATIONS_RUN,
        };
    }
  • Adicionando estas linhas ao arquivo server/src/orm.config.ts e modificando os campos com as informações do seu banco, deve-se fazer um último passo:

  • Altere a linha

synchronize: commonConf.SYNCRONYZE,

para

synchronize: true,
  • Execute o comando:
cd server && npm run start:dev
  • Apos ele executar, completamente e exibir a porta do servidor, pare o código e volte as configurações iniciais desta linha!

Observações

  • É recomendado reiniciar o computador após a instalação do SDKMan, NVM e Docker para garantir que todas as alterações sejam aplicadas corretamente.
  • O NHipster usa como padrão a versão 14 do Node.js. Versões acima podem ter problemas ao iniciar o NHipster. Certifique-se de que a versão correta do Node.js esteja instalada.
  • Verifique a documentação oficial do NHipster para obter mais informações sobre o uso da ferramenta.

Finalizando

  • Agora com tudo pronto,você pode executar em um terminal: cd server && npm run start:dev e na pasta raíz npm start

  • Esses dois comandos irão iniciar tanto o backend quanto o frontend.

Plus

JDL base

application{
config{
baseName <nome_da_aplicação>
applicationType <tipo_da_aplicação>
authenticationType <tipo_de_autenticação>
prodDatabaseType <banco_de_dados_em_produção>
devDatabaseType <banco_de_dados_em_desenvolvimento>
enableSwaggerCodegen true
enableTranslation true
languages [<idioma(s)_adicionais_do_projeto>]
nativeLanguage <idioma_nativo>
serverPort <porta_do_servidor>
}
entities *
}

Utilizando este arquivo, você pode gerar sua aplicação sem precisar selecionar na hora da execução, além de no mesmo arquivo que estas informações ficam, você pode criar entidades, relações, dtos, etc de sua aplicação.

Para mais informações, veja: https://www.jhipster.tech/jdl/

Contribuindo

Se você deseja contribuir para este tutorial ou encontrou algum problema, fique à vontade para criar um issue ou pull request no repositório GitHub.

Licença

Este tutorial está sob a licença MIT. Consulte o arquivo LICENSE para mais informações.

@echo off
REM Tenta carregar o NVM
if exist "%HOME%/.nvm/nvm.sh" (
call "%HOME%/.nvm/nvm.sh"
echo NVM carregado com sucesso!
)
REM Tenta carregar o SDKMAN
if exist "%HOME%/.sdkman/bin/sdkman-init.sh" (
call "%HOME%/.sdkman/bin/sdkman-init.sh"
echo SDKMAN carregado com sucesso!
)
REM Instala a versão do Node.js usando o nvm
echo Instalando o Node.js 14.16...
nvm install 14.16 && nvm use 14.16
REM Instala o Java usando o sdk
echo Instalando o Java 11.0.12-open...
sdk install java 11.0.12-open && sdk use java 11.0.12-open
REM Instala o nhipster e suas dependências
npm install -g generator-jhipster && (
echo JHipster instalado com sucesso!
) || (
echo Falha ao instalar o JHipster
)
npm install -g yo && (
echo Yeoman instalado com sucesso!
) || (
echo Falha ao instalar o Yeoman
)
npm install -g generator-jhipster-nodejs && (
echo JHipster Node.js instalado com sucesso!
) || (
echo Falha ao instalar o JHipster Node.js
)
REM Gerando o projeto
for /f %%i in ('dir /b /a-d *.jdl') do set /a jdlQtd+=1 & set "jdlFile=%%i"
if %jdlQtd% equ 1 (
nhipster jdl %jdlFile% && (
echo Sucesso
) || (
echo Falha ao gerar o projeto
)
) else (
echo Mais de um jdl encontrado! Apenas um arquivo pode ser utilizado
)
REM Corrige problema de versão de biblioteca
npm i browser-sync-client@2.27.9 && (
echo Biblioteca browser-sync-client corrigida com sucesso!
) || (
echo Falha ao corrigir a biblioteca browser-sync-client
)
REM Corrige problema de geração de código
set "path=server\src\client\header-util.ts"
set "line=4"
powershell -Command "(Get-Content '%path%') -replace '^(.*)$', 'import { URL } from \'url\';`n`$1' | Set-Content '%path%'"
echo Código corrigido com sucesso!
REM Corrige problema de geração de código 2
set "path2=server\src\orm.config.ts"
set "line2=43"
set "code_to_insert=if (process.env.BACKEND_ENV === 'dev') {`n ormconfig = {`n name: 'default',`n type: 'mysql',`n database: 'braas',`n host: 'localhost',`n port: 3307,`n username: 'sa',`n password: 'yourStrong(!)Password',`n logging: false,`n synchronize: commonConf.SYNCRONIZE,`n entities: commonConf.ENTITIES,`n migrations: commonConf.MIGRATIONS,`n cli: commonConf.CLI,`n migrationsRun: commonConf.MIGRATIONS_RUN,`n };`n}"
powershell -Command "(Get-Content '%path2%') -replace ('^(.*)$', '%code_to_insert%') | Set-Content '%path2%'"
echo Código corrigido com sucesso!
REM Instala dependência que falta no projeto
cd server
npm i @types/node@14.x && (
echo Dependência instalada com sucesso!
) || (
echo Falha ao instalar a dependência
)
REM Inicia o projeto
cls
echo Rode o comando 'npm start' para iniciar o frontend.
echo Rode o comando cd server ^&^& npm run start:dev para iniciar o backend em modo desenvolvimento.
#!/bin/bash
# Tenta carregar o NVM
if source $HOME/.nvm/nvm.sh; then
echo "NVM carregado com sucesso!"
fi
# Tenta carregar o SDKMAN
if source "$HOME/.sdkman/bin/sdkman-init.sh"; then
echo "SDKMAN carregado com sucesso!"
fi
# Instala a versão do Node.js usando o nvm
echo "Instalando o Node.js 14.16..."
nvm install 14.16 && nvm use 14.16
# Instala o Java usando o sdk
echo "Instalando o Java 11.0.12-open..."
sdk install java 11.0.12-open && sdk use java 11.0.12-open
# Instala o nhipster e suas dependências
if npm install -g generator-jhipster; then
echo "JHipster instalado com sucesso!"
fi
if npm install -g yo; then
echo "Yeoman instalado com sucesso!"
fi
if npm install -g generator-jhipster-nodejs; then
echo "JHipster Node.js instalado com sucesso!"
fi
# Gerando o projeto
jdlQtd=$(ls -a | grep -c '\.jdl$')
jdlFile=$(ls -a | grep '\.jdl$')
if [ $jdlQtd -eq 1 ]; then
if nhipster jdl $jdlFile; then
echo "Sucesso"
fi
else
echo "Mais de um jdl encontrado! Apenas um arquivo pode ser utilizado"
fi
# Corrige problema de versão de biblioteca
if npm i browser-sync-client@2.27.9; then
echo "Biblioteca browser-sync-client corrigida com sucesso!"
fi
# Corrige problema de geração de código
path="server/src/client/header-util.ts"
line=4
if sed -i "$line s/^/import { URL } from 'url';\n/" $path; then
echo "Código corrigido com sucesso!"
fi
# Corrige problema de geração de código 2
path2="server/src/orm.config.ts"
line2=43
code_to_insert=$'if (process.env.BACKEND_ENV === \'dev\') {\n ormconfig = {\n name: \'default\',\n type: \'mysql\',\n database: \'braas\',\n host: \'localhost\',\n port: 3307,\n username: \'sa\',\n password: \'yourStrong(!)Password\',\n logging: false,\n synchronize: commonConf.SYNCRONIZE,\n entities: commonConf.ENTITIES,\n migrations: commonConf.MIGRATIONS,\n cli: commonConf.CLI,\n migrationsRun: commonConf.MIGRATIONS_RUN,\n };\n}\n'
tmp_file=$(mktemp) && awk -v line="$line2" -v code="$code_to_insert" 'NR==line {print code} {print}' "$path2" > "$tmp_file" && mv "$tmp_file" "$path2"
echo "Código corrigido com sucesso!"
# Instala dependência que falta no projeto
cd server
if npm i @types/node@14.x; then
echo "Dependência instalada com sucesso!"
fi
# Inicia o projeto
clear
echo "Rode o comando 'npm start' para iniciar o frotend."
echo "Rode o comando cd server && npm run start:dev para iniciar o backend em modo desenvolvimento."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment