Unix shell commands para Node.js →shelljs
Hoje, peguei um boilerplate, para começar um projeto usando Node.js, TypeScript, Mongo, Mongoose, Express e ao avaliar encontrei nos scripts do package.json a seguinte linha:
"copyApp": "cd src/public && cp -rfv app ../../build/public",
Funciona, no Linux, e no Mac, o comando cp existe nestes Sistemas Operacionais, mas no Windows não, e como eu e toda equipe que trabalho estão no windows, esta linha me traria problemas.
É por isto que hoje, lhe escrevo, para compartilhar a solução que dei para este comando que copia todo o conteúdo de uma pasta para outra. No meu refactoring utilizei o shelljs, a sua proposta é dar ao node comandos shell do Unix, e com ele, minha solução foi criar o arquivo scripts-shell/copy-app.js e chama-lo nos scripts do package.json
var shell = require('shelljs');
shell.cp('-R', 'src/public/app', 'build/public');
Assim, troquei isto:
"copyApp": "cd src/public && cp -rfv app ../../build/public",
Por isto:
"copyApp": "node scripts-shell/copy-app.js",
Desta maneira o script se tornou multi plataforma ;) Curtiu?
Vamos a mais um exemplo simples, para atiçar sua curiosidade. Poderia executar o comando cat e ver o conteúdo de um arquivo, assim:
const sh = require('shelljs')const contents = sh.cat('arq1.txt')console.log(contents.toString())