Acelerando Processos de Automação com TypeScript e Node
Automatizando tarefas pessoais e profissionais com o poder do Node.js e TypeScript
Por que automatizar em Node?
Node é um runtime multi-plataforma com uma API robusta com a capacidade não só de criar aplicações web, mas também de interagir com o próprio sistema operacional. Quando falamos em criar scripts de automação chegamos em divergências ditadas pelas plataformas: Shell Script ou Bash para usuários de Linux e macOS e PowerShell ou Batchscript para usuários Windows.
Com um runtime capaz de rodar em qualquer plataforma e um superset de tipos e regras que torna o ato da programação seguro contra possíveis erros de runtime é possível criar scripts únicos e economizar tempo e esforço construindo ferramentas chave para diversas operações.
Como usar o Node para criar automações?
Existem diversas formas de agregar automações com o Node, a mais simples e prática é fazendo o uso de npm scripts que nada mais são do que aliases feitos para comandos de terminal dentro de sua package.json que se mostram bem úteis para reduzir combinações grandes e contraintuitivas.
Mas os scripts não foram criados para fazer operações no projeto?
Não existe nenhuma regra quanto a isso, os scripts podem ser usados de qualquer maneira para executar qualquer comando, isso significa que eles podem ter um comportamento utilitário que depende apenas do objetivo da pessoa desenvolvedora durante a fase de programação.��Tanto um script de build para um projeto quanto um script que realiza operações usando o sistema de arquivos podem ser executados ao se utilizar npm scripts.��Importante NUNCA execute npm scripts de um projeto clonado que possa parecer suspeito ou não tenha fontes confiáveis. Certifique-se de que nenhum comportamento indesejado será executado dentro dos comandos.
Onde o TypeScript entra em nossas automações?
Quando entramos no âmbito de programação JavaScript, a maioria esmagadora das equipes de desenvolvimento concorda que a utilização do TypeScript traz um ambiente de desenvolvimento mais moderno, prático e seguro para montar qualquer tipo de algoritmo. Com a tipagem estática que prevalece durante a utilização do superset e as regras que coordenam o desenvolvimento, criar e manter scripts de automação se torna mais seguro e prático.��Para uma execução rápida dos scripts, nos nossos exemplos iremos utilizar a ferramenta ts-node que traz uma interface simples e amigável.
Criando a estrutura do projeto
Não há segredo, para começar a desenvolver um projeto de automação basta, primeiro, fazer o setup inicial do seu projeto node utilizando o comando npm init e depois disso instalar a package ts-node como pacote de desenvolvimento. Segue no exemplo:
Criando o primeiro comando (1/2)
Nosso primeiro comando será apenas um exemplo, faremos um console.log básico e o guardaremos como um script. Primeiro criaremos a nossa pasta “scripts” e o arquivo “hello-world.ts”:
Criando o primeiro comando (2/2)
Com nosso arquivo criado, podemos agora registrar o script diretamente no nosso package.json e o mesmo estará pronto para ser chamado via linha de comando.
Usando módulos node (1/2)
Entrando mais a fundo nas funcionalidades que realmente importam, é relativamente simples utilizar módulos node e interagir com diversos aspectos como o sistema operacional e o sistema de arquivos. Por exemplo, o módulo “fs” pode ser utilizado para manipular arquivos em qualquer parte do sistema:
Usando módulos node (2/2)
O exemplo anterior se refere ao nosso comando “file” que executa o script “create-file.ts” e, dada a existência prévia da pasta “files” na raiz do projeto ele pode criar um arquivo chamado “hello.txt” que contém a frase “Hello World”
Usando bibliotecas externas (1/2)
A utilização de comandos isolados escritos em TypeScript se torna interessante quando temos também a capacidade de utilizar bibliotecas externas. Nesse exemplo utilizaremos a biblioteca “axios” para fazer uma chamada a uma api externa e obter dados:
Usando bibliotecas externas (2/2)
Com isso, poderemos chamar a api e obter o resultado na tela:
Considerações adicionais
Contato e redes sociais
Email: scarletrosetech@gmail.com
Twitter: @scarletrosedev
LinkedIn: https://www.linkedin.com/in/scarlet-rose-4a90b6233/