Skip to content

Instantly share code, notes, and snippets.

@fnoquiq
Last active June 4, 2024 19:09
Show Gist options
  • Save fnoquiq/be627f3043da46ec638cd0543878d0ec to your computer and use it in GitHub Desktop.
Save fnoquiq/be627f3043da46ec638cd0543878d0ec to your computer and use it in GitHub Desktop.
Adonis tutorial

AdonisJS

Instalando CLI do Adonis

Cole no terminal o seguinte comando para instalar a interface de linha de comando do Adonis:

npm install -g @adonisjs/cli

Criar um novo projeto

Execute o comando adonis new -h, ele retornará todas as opções ou tags extras que poderão ser usadas para criar um novo projeto.

Para criar um novo projeto use então como exemplo: adonis new nomeDaAplicacao --api-only --yarn e aguarde a instalação.

Configurar Eslint

Inicie instalando o eslint: yarn add eslint prettier eslint-config-prettier eslint-plugin-prettier -D

Feito isso, rode o iniciador do eslint, usando: npx eslint --init

? How would you like to use ESLint? To check syntax, find problems, and enforce code style

? What type of modules does your project use? CommonJS (require/exports)

? Which framework does your project use? None of these

? Does your project use TypeScript? No

? Where does your code run? Node

? How would you like to define a style for your project? Use a popular style guide

? Which style guide do you want to follow? Standard: https://github.com/standard/standard

? What format do you want your config file to be in? JavaScript

? Would you like to install them now with npm? Yes

O arquivo .eslintrc.js deverá ficar parecido com este:

module.exports = {
  env: {
    es6: true,
    node: true
  },
  extends: ['standard', 'prettier'],
  plugins: ['prettier'],
  globals: {
    Atomics: 'readonly',
    SharedArrayBuffer: 'readonly',
    use: true
  },
  parserOptions: {
    ecmaVersion: 2018
  },
  rules: {
    'prettier/prettier': 'error'
  }
}

Crie também um arquivo .prettierrc e cole:

{
  "singleQuote": true,
  "trailingComma": "none",
  "tabWidth": 2,
  "semi": false
}

Para finalizar execute ./node_modules/.bin/eslint --fix . --ext .js para aplicar as novas regras de lint em todos os arquivos javascript.

Configurar Database

O Adonis possui suporte para bancos de dados relacionais, sendo eles o Postgres, Mysql e o Sqlite. Para configura-lo, basta entrar no arquivo config/database e executar a instalação da dependência relacionada ao banco usado.

Ao instalar o postgres por exemplo, basta executar no terminal yarn add pg e após isso subir um container docker com o banco de dados e configurar os valores no arquivo .env

** Exemplo para configuração de Postgres: **

O banco do postgres nao é criado automaticamente, logo você deve criar por conta própia.

Obs: Recomendo o uso do postbird para fazer a criação do banco e visualização dos dados.

Arquivo .env

DB_CONNECTION=pg
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=mysecretpassword
DB_DATABASE=gonode

Após isso, execute adonis migration:run para rodar as migrations.

Configuração container docker

Para iniciar um novo container docker, basta executar o seguinte comando: sudo docker run --name postgresbarber -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword -d postgres.

Rodar a aplicação

Ao executar adonis serve --dev é possível levantar o servidor em modo de desenvolvimento.


Configurar Husky com Eslint e Commit-lint

Tutorial disponível neste link.

AIRBNB Style eslint-prettier config for AdonisJS

? How would you like to use ESLint? To check syntax, find problems, and enforce code style

? What type of modules does your project use? CommonJS (require/exports)

? Which framework does your project use? None of these

? Does your project use TypeScript? No

? Where does your code run? Node

? How would you like to define a style for your project? Use a popular style guide

? Which style guide do you want to follow? Airbnb: https://github.com/airbnb/ javascript

? What format do you want your config file to be in? JSON

? Would you like to install them now with npm? Yes

.eslintrc.json

{
  "env": {
    "commonjs": true,
    "es6": true,
    "node": true
  },
  "extends": ["airbnb-base", "prettier"],
  "plugins": ["prettier"],
  "globals": {
    "use": "readonly",
    "Atomics": "readonly",
    "SharedArrayBuffer": "readonly"
  },
  "parserOptions": {
    "ecmaVersion": 2018
  },
  "rules": {
    "prettier/prettier": "error",
    "class-methods-use-this": "off",
    "strict": [0, "global"],
    "consistent-return": "off",
    "no-param-reasssign": "off"
  }
}

.prettierrc

{
  "singleQuote": true,
  "trailingComma": "es5"
}
@luizxsoto
Copy link

Opa, nessa "DEFAULT-GUIDE", temos o problema do "space-before-function-paren" do ESLINT, que no caso o PRETTIER tira esse espaço. Sabe como resolver ?
Resultado:
static boot() {}
Esperado:
static boot () {}

@fnoquiq
Copy link
Author

fnoquiq commented Mar 30, 2020

fala Luiz, acredito que não tenha como resolver o problema do espaço antes dos parênteses na função =/ existem varias issues abertas sobre o problema, infelizmente não achei nenhuma solução viável. Existe um fork não oficial chamado prettierx que aparentemente tem suporte a essa configuração, caso queira testar.

Eu sinceramente deixei assim, mas caso queria arrumar tente esse fork ai.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment