Uzziniet, kā efektīvi izmantot fx, JSON manipulācijas komandrindas rīku

fx ir populārs JSON manipulācijas komandrindas rīks. To var instalēt caur npm, uzliet vai lejupielādēt vai kā atsevišķu bināru failu.

npm i -g fx

fx noderēs ar čokurošanās komandu. Ja jums ir kāda API, kas atgriež JSON, un jūs vēlaties iedziļināties struktūrā vai vienkārši to redzēt, ievadiet JSON fx.

čokurošanās https://swapi.co/api/planets/ | fx

fx ir patiešām glīts interaktīvais režīms, lai iedziļinātos JSON.

Lai naviģētu JSON, varat izmantot peles vai bulttaustiņus. fx atbalsta krokas, noklikšķiniet uz faila, lai to izvērstu, vai nospiediet labo bultiņu, lai izvērstu. Nospiediet taustiņu e, lai rekursīvi izvērstu visus laukus. Nospiediet Shift + e, lai sakļautu visu atpakaļ.

Interaktīvs digger

Atrodoties interaktīvā režīmā, nospiediet. (punkta) taustiņš. Termināla loga beigās parādīsit kursoru ar uznirstošo JSON lauku. Izmantojiet bulttaustiņus, lai izvēlētos lauku, un nospiediet enter, turpiniet, līdz atrodat vajadzīgos datus. Ja jums jāiet atpakaļ par vienu līmeni, nospiediet Ctrl + w, lai izdzēstu pēdējo ceļa segmentu. Šī komanda precīzi noņem pēdējo daļu blakus. vai [kronšteins. Ja vēlaties sākt no jauna, nospiediet Ctrl + u.

BTW, šajā laukā jūs varat rakstīt jebkuru JavaScript izteicienu, ne tikai ceļa izteiksmi.

Diezgan drukāšana

Dažreiz jums nav nepieciešams interaktīvais diggeris un jūs vēlaties izdrukāt JSON, lai izietu. To var izdarīt, pievienojot. arguments fx komandai.

čokurošanās https://swapi.co/api/planets/1/ | fx.

Vai arī, lai izdrukātu tikai daļu no JSON, norādiet vēlamo ceļu.

čokurošanās https://swapi.co/api/planets/1/ | fx .films

API pieprasīšana katru reizi ir laikietilpīga, kā būtu, ja vispirms to saglabātu diskā?

čokurošanās https://swapi.co/api/planets/1/> data.json

Tagad failu kā pirmo argumentu mēs varam nodot fx.

fx data.json .films

Katrs fx arguments var būt kāda JavaScript funkcija, izveidosim .fxrc failu, kurā mēs ievietosim noderīgu funkciju un fragmentus atkārtotai izmantošanai.

Fragmenti

Pievienosim mūsu komandrindas vārda spēku. Instalējiet lodash visā pasaulē.

npm i -g lodash

Savā mājas direktorijā izveidojiet .fxrc failu. Un ielieciet tajā nākamo līniju.

Object.assign (globāls, nepieciešams ('lodash / fp'))

Tagad jūs varēsit izsaukt visas lodash metodes, pat neizmantojot _ prefiksu. Piemēram, skatiet, kurš nesen ir apņēmies reaģēt:

čokurošanās 'https://api.github.com/repos/facebook/react/commits' \
| fx 'groupBy ("activ.author.name")' 'mapValues ​​(lielums)' \
      toPairs 'sortBy (1)' reverse 'take (10)' fromPairs

Saskaitīsim dažādu vārdu lietojumu saistītos ziņojumos.

čokurošanās 'https://api.github.com/repos/facebook/react/commits' \
| fx 'karte (' activ.message ')' 'karte (vārdi)' saplacināt \
     'karte (zemākaCase)' 'groupBy (identitāte)' 'mapValues ​​(lielums)' \
      toPairs 'sortBy (1)' reverse 'take (30)' fromPairs

Pievienojot savus fragmentus

Arī tas ir diezgan viegli. Piemēram, man ir viena API, kas pieprasa, lai dokumenti tiktu kodēti base64. Apskatīsim, kā to var izdarīt.

Izveidojiet kādu funkciju un piešķiriet to globālajam. Piemēram, base64 fragments.

global.base64 = str => Buffer.no (str) .toString ('base64')

Tagad es varu darīt kaut ko līdzīgu:

fx data.json '{vērtība: base64 (JSON.stringify (this))}' |) čokurošanās -X POST

Vai arī sadalot atsevišķās funkcijās:

fx data.json JSON.stringify base64 '{value: this}' | čokurošanās -X POST

Rediģēt savā vietā

Ar fx jūs varat viegli modificēt JSON objektus, izmantojot ... izplatītāja operatoru.

atbalss '{"skaits": 0}' | fx '{... this, count: this.count + 1}'

Bet, mēģinot modificēt failu un vienā komandā saglabāt diskā, jūs sabojājat failu.

fx data.json '{... this, count: this.count + 1}'> data.json

Tas ir raksturīgi visai komandrindai. Piemēram, sed ir īpašs karodziņš rediģēšanai vietējā sed -i. Pievienosim arī šo funkciju.

global.save = json => (pieprasīt ('fs'). writeFileSync (process.argv [2], JSON.stringify (json, null, 2)), json)

Tagad mēs varam vienkārši piezvanīt uz glābšanu:

fx data.json '{... this, count: 1}' 'saglabāt

Mēs pat varam izvadīt modificēto lauku, vienlaikus ietaupot uz diska.

fx data.json '{... this, count: this.count + 1}' save .count

Izmantojot xargs

fx izdrukā virknes kā “neapstrādātas” virknes bez pēdiņām, tāpēc tas var būt noderīgi, lai fx filtrus varētu sarunāt ar sistēmām, kas nav balstītas uz JSON. Bet, ja mēs vēlamies nodot argumentu sarakstu? Nākamais fragments noder.

global.list = json => (json.forEach (x => console.log (x)), nav definēts)

Pēc noklusējuma nenoteikts tiek iespiests stderr, lai tas neietekmētu mūsu caurules.

čokurošanās https://swapi.co/api/planets/1/ | fx .films saraksts | xargs čokurošanās

Meklē JSON

fx atbalsta interaktīvu JSON meklēšanu. Lai meklētu, nospiediet /, varat ievadīt modeli.

Lai pārietu uz nākamo paraugu atbilstību, nospiediet n. Filtru var lietot, izmantojot. arī. fx lieliski darbojas ar abiem vienlaikus.

Bet ko tad, ja mēs vēlamies kaut ko savādāku?

Es domāju, ka JavaScript ir labākā valoda darbam ar JSON (saīsinājums JavaScript objekta apzīmējumam). Ko mēs vēlamies atrast visos dažu rakstu parādījumos un izdrukāt tos pēc kārtas? Mēs varam izveidot savu meklēšanas fragmentu. Tāpēc izveidosim meklēšanas fragmentu!

Tagad mēs varam rekursīvi meklēt mūsu JSON!

fx data.json 'atrast (/ labot / i)'

Un vēl labāk, izmantojot iepriekšējo fragmentu sarakstu, jūs varat izdrukāt pamatotas detaļas.

fx data.json 'atrast (/ noteikt / i)' saraksts | xargs -L1 fx data.json

Straumēšana

fx atbalsta arī JSON straumēšanu. Jūs to varat izmantot žurnālu parsēšanai utt.

kubectl apaļkoki ... | fx .ziņa

Atlasiet (vai filtrējiet) tikai vēlamos ziņojumus, pirms tam atlasot palīgu.

kubectl apaļkoki ... | fx 'atlasīt (x => x.līmenis == "informācija")' .ziņa

Vai arī vienkārši savienojiet dažus JSON failus, izmantojot kaķi un pievienojot to fx.

kaķis * .json | fx .length

Motīvu atbalsts

fx atbalsta arī tēmas. Jūs varat mainīt krāsas un ievilkumu.

global.FX_STYLE_SPACE = 4

Tālāk ir parādītas divas satriecošas fx tēmas:

  • fx-theme-monokai - monokai tēma
  • fx-theme-nakts - nakts tēma

Es ceru, ka jums patiks lietot fx!

Ja jums patīk tas, ko es daru, lūdzu, apsveriet iespēju atbalstīt mani Patreonā.
Un sekojiet man vietnē GitHub.