Publicat originalment per Federico Kauffman a streaver.com
Definim primer una CLI
Una cerca ràpida a Google genera, per descomptat, un Article de Viquipèdia amb la definició CLI:
Una interfície de línia d’ordres o intèrpret d’idiomes de comandes (CLI), també coneguda com a interfície d’usuari de línia d’ordres, interfície d’usuari de la consola i interfície d’usuari de caràcters (CUI), és un mitjà per interactuar amb un programa d’ordinador on l’usuari (o client) emet ordres al programa en forma de línies de text successives (línies d'ordres). Un programa que gestiona la interfície s'anomena intèrpret de llenguatge d'ordres o intèrpret d'ordres (computació).
Així, en poques paraules, un CLI és un programa que pot entendre les sol·licituds realitzades per un usuari en forma de text i després actuar i executar codi en resposta a això.
Aquest tipus de programes són molt útils per a molts casos d’ús diferents, des de clics simples com el cal
Eina Bash que mostra el mes actual, fins a d'altres extremadament complexes com kubectl
per gestionar clústers de Kubernetes.
Fins i tot si no utilitzeu CLIs directament cada dia (cosa que és molt improbable), és probable que us afectin indirectament, per exemple, git
és una CLI, gcc
el compilador GNU, create-react-app
una CLI de bastides per generar aplicacions React i moltes més.
Com crear els vostres propis CLI
Com moltes coses al món tecnològic, la resposta és: 'depèn'. Hi ha moltes maneres de construir-les i probablement totes són vàlides en diferents contextos. En aquest cas, exploraré com construir-ne un amb JavaScript i Oclif: a Node.JS Open CLI Framework (per Heroku) , que inclou una CLI per crear CLI 🤔.
at & t bellsouth per correu electrònic d'inici de sessió
PERILL
A partir d’ara suposaré que esteu còmode amb JavaScript i l’ecosistema NPM en general, si no ho esteu, probablement tindreu una idea general, però us recomano que en llegiu alguna cosa abans de començar.
Com començar amb Oclif
Al meu entendre, construir alguna cosa sol ser una bona manera d’aprendre, de manera que en aquest cas he fet una pluja d’idees @flarraa i va decidir construir una CLI de la Copa Libertadores ( veure Wikipedia ).
La idea és proporcionar un conjunt d’ordres que permetin recuperar i mostrar informació sobre els partits ja jugats i els propers per al campionat de la Copa Libertadores.
Anem a excavar!
La CLI d'Oclif té dues maneres possibles de generar projectes CLI, una és npx oclif single mynewcli
i el segon és npx oclif multi mynewcli
, en aquest cas, generarem una CLI de múltiples ordres.
Ens agradaria que el nostre ordre fos semblant a libertadores games:all
, libertadores games:past
, libertadores games:upcoming
i això és coherent amb la generació de CLI de múltiples comandes d'Oclif.
Inicialització del projecte
En primer lloc, inicialitzem el projecte fent:
_-----_ ╭──────────────────────────╮ | | │ Time to build a │ |--(o)--| │ multi-command CLI with │
Això us farà algunes preguntes i, després, instal·larà tot el que necessiteu per començar a codificar.
---------´ │ oclif! Version: 1.13.1 │ ( _´U
|° ´ Y
_) ╰──────────────────────────╯
/ A /
| ~ |
'. . ' _
'cd libertadores-cli
? npm nom del paquet libertadores-cli
? nom de la safata d'ordres, la CLI exportarà llibertadors
? descripció Una senzilla CLI per obtenir informació sobre Copa Libertadores al vostre terminal
? autor Federico Kauffman
? versió 0.0.0
? llicència MIT
? Qui és el propietari del repositori GitHub ( https://github.com/OWNER/repo ) streaver
? Quin és el nom GitHub del dipòsit ( https://github.com/owner/REPO ) Alliberadors-cli
? Seleccioneu un fil de gestor de paquets
? TypeScript núm
? Utilitzeu eslint (linter for JavaScript) Sí
? Utilitzeu mocha (marc de proves) Sí
? Afegeix un servei CI de configuració de serveis (integració / servei de lliurament continu)
He seleccionat alguns valors predeterminats que m'agraden i ara teniu un munt de fitxers i carpetes que seran la nostra estructura principal per al projecte. A continuació, introduïu el directori amb bin
.
Vaig a explicar breument què ens ha generat Oclif:
src
Mirant l'arbre de fitxers podeu veure el index.js
directori que conté els fitxers binaris per executar l'ordre a cada plataforma (Unix / Windows).
descàrrega de graphql-playground
Veieu el src/commands
carpeta amb un hello
que simplement exporta un paquet Oclif intern que carregarà les ordres disponibles, i aquestes ordres es defineixen als fitxers ubicats a hello
carpeta. Per defecte, Oclif genera un tests
ordre, executem-ho i vegem què tenim:
npm run test
Si executeu el yarn test
subcomanda que obtindreu:
hello
Per últim, però no menys important, teniu el src/command/hello.js
carpeta on col·locareu totes les proves, de fet, Oclif ja ha creat algunes proves i les podem executar amb tests/commands/hello.test.js
o games:all
.
Creació de la primera ordre
En primer lloc, podem eliminar el README.md
com que no el farem servir, simplement suprimiu el // Insert some really crazy code to parse the HTML // you can find this at https://github.com/streaver/libertadores-cli this.log(results);
i libertadores games:all
.
Ara podem utilitzar l’ordre del generador d’OCLif CLI; creem el cli-ux
ordre amb:
npx oclif multi libertadores-cli
Això crearà tots els fitxers necessaris per a l'ordre (incloses les proves) i també actualitzarà el
$ npx oclif multi libertadores npx: installed 442 in 32.454s|_+_|fitxer automàticament per incloure la nova ordre.Anem a obtenir els detalls de la Copa Libertadores http://www.conmebol.com/es/copa-libertadores-2019/fixture , i ho farem servir titellaire per entrar al lloc i obtenir les dades.
.
├── README.md
├── bin
│ ├── run
│ └── run.cmd
├── package.json
├── src
│ ├── commands
│ │ └── hello.js
│ └── index.js
├── test
│ ├── commands
│ │ └── hello.test.js
│ └── mocha.opts
└── yarn.lock5 directories, 9 files
}
}
Ara podem executar
$ ./bin/runi obtindrem els resultats allà mateix al terminal:A simple CLI to get information about Copa Libertadores right in your terminal
on comprar un akitaVERSION
libertadores-cli/0.0.0 darwin-x64 node-v11.13.0USAGE
$ libertadores [COMMAND]COMMANDS
hello Describe the command here
help display help for libertadores
Com haureu notat, també he afegit una funció de càrrega per proporcionar a l'usuari alguns comentaris visuals. Per afegir-ho, només cal instal·lar el paquet
$ ./bin/run helloi, a continuació, emboliqueu les parts lentes del codi en algunes trucades d'inici / aturada:hello world from ./src/commands/hello.js
Instal·leu-lo així:
npx oclif command games:all
Afegiu la filadora amb alguna cosa així:
$ yarn add puppeteer --save
const puppeteer = require(puppeteer);
…
class AllCommand extends Command {
async run() {
…
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(
http://www.conmebol.com/es/copa-libertadores-2019/fixture ,
{ waitUntil: load, timeout: 0 }
);|_+_|Ara, en aquest moment tenim la CLI, podem escriure-hi proves. Oclif inclou alguns valors predeterminats per provar aquest tipus de CLIs. En aquest cas concret, només voleu provar que la sortida al terminal sigui la que espereu. Afortunadament, això és exactament el que fa la prova generada automàticament per a l'ordre, només heu d'adaptar aquest codi.
Us deixaré aquesta tasca a vosaltres (el lector, igual que els llibres de matemàtiques) ... o podeu consultar-los a la pàgina repositori oficial per a la Copa Libertadores CLI.
Instal·leu la CLI, estigueu al dia i no us perdeu els jocs ❤️⚽️!
-----------------------------------
Gràcies per llegir: heart: Si t’ha agradat aquesta publicació, comparteix-la amb tots els teus amics de programació. Segueix-me Facebook | Twitter
Aprèn més
☞ Parlant amb Python des de JavaScript (i de nou!)
numpy convertir a flotant☞ Els 12 millors trucs de Javascript per a principiants
☞ Programació funcional en JavaScript
☞ JavaScript per a l'aprenentatge automàtic mitjançant TensorFlow.js
☞ Aprèn JavaScript - Curs JavaScript per a principiants
☞ El curs JavaScript complet 2019: construeix projectes reals.
predicció del preu de la moneda aeon☞ Converteix-te en desenvolupador de JavaScript: aprèn (React, Node, Angular)
☞ JavaScript: entendre les parts estranyes
☞ Vue JS 2: la guia completa (inclòs Vue Router i Vuex)
☞ El tutorial complet de JavaScript i ES6 (inclòs ES7 i React)
☞ JavaScript: guia pas a pas per a principiants
☞ El Bootcamp per a desenvolupadors web
☞ MERN Stack Front to Back: Full Stack React, Redux i Node.js
#javascript
www.streaver.com
Construint CLIs impressionants amb JavaScript i Oclif
Publicat originalment per Federico Kauffman a streaver.com