成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

幾天狂增 1.1 萬 Star!谷歌這個(gè)腳本工具必須推薦一波

新聞 開發(fā)工具
這是一個(gè)更方便、更友好幫助開發(fā)者寫腳本的工具。有 Google “爸爸”的光環(huán)加持,該工具短短幾天在 GitHub 上就破萬 Star 了。

 

zx 是一個(gè)更方便、更友好幫助開發(fā)者寫腳本的工具。有 Google “爸爸”的光環(huán)加持,該工具短短幾天在 GitHub 上就破萬 Star 了。

簡介

Bash 很好,但是在編寫腳本的時(shí)候,人們通常會(huì)選擇一種更方便的編程語言,JavaScript 就是一個(gè)很完美的選擇。但是標(biāo)準(zhǔn)的 Node.js 庫在使用之前需要許多額外的操作,比如安裝、引入庫等,zx 提供一個(gè)包裝器 child_process,用于轉(zhuǎn)義參數(shù)并提供合并的默認(rèn)值。

  1. #!/usr/bin/env zx 
  2.  
  3. await $`cat package.json | grep name` 
  4.  
  5. let branch = await $`git branch --show-current` 
  6.  
  7. await $`dep deploy --branch=${branch}` 
  8.  
  9. await Promise.all([ 
  10.  
  11. $`sleep 1; echo 1`, 
  12.  
  13. $`sleep 2; echo 2`, 
  14.  
  15. $`sleep 3; echo 3`, 
  16.  
  17. ]) 
  18.  
  19. let name = 'foo bar' 
  20.  
  21. await $`mkdir /tmp/${name}` 

項(xiàng)目地址是:

https://github.com/google/zx

安裝使用

安裝

  1. npm i -g zx 

簡單使用。將編寫的腳本放在 .mjs 后綴的文件中,或者使用 .js 后綴,但是需要 void async function () {...}() 對(duì)腳本進(jìn)行包裝。

腳本需要包含以下文件頭:

  1. #!/usr/bin/env zx 

運(yùn)行腳本(需要先添加執(zhí)行權(quán)限):

  1. chmod +x ./script.mjs 
  2.  
  3. ./script.mjs 
  4.  
  5. // 或者使用這個(gè)命令 
  6.  
  7. zx ./script.mjs 

常用命令

使用child_process包中提供的exec函數(shù)可以把字符串當(dāng)做命令執(zhí)行,并返回Promise<ProcessOutput>對(duì)象。

  1. let count = parseInt(await $`ls -1 | wc -l`) 
  2.  
  3. console.log(`Files count: ${count}`) 

例如,并行上傳文件:

  1. let hosts = [...] 
  2.  
  3. await Promise.all(hosts.map(host => 
  4.  
  5. $`rsync -azP ./src ${host}:/var/www` 
  6.  
  7. )) 

如果執(zhí)行腳本返回非0狀態(tài)碼,將會(huì)拋出ProcessOutput對(duì)象:

  1. try { 
  2.  
  3. await $`exit 1
  4.  
  5. catch (p) { 
  6.  
  7. console.log(`Exit code: ${p.exitCode}`) 
  8.  
  9. console.log(`Error: ${p.stderr}`) 
  10.  

拋出ProcessOutput對(duì)象結(jié)構(gòu)如下:

  1. class ProcessOutput { 
  2.  
  3. readonly exitCode: number 
  4.  
  5. readonly stdout: string 
  6.  
  7. readonly stderr: string 
  8.  
  9. toString(): string 
  10.  

cd(),修改工作路徑:

  1. cd('/tmp'
  2.  
  3. await $`pwd` // outputs /tmp 

fetch(),對(duì)node-fetch包的包裝:

  1. let resp = await fetch('http://wttr.in'
  2.  
  3. if (resp.ok) { 
  4.  
  5. console.log(await resp.text()) 
  6.  

question(),對(duì)readline包的包裝:

  1. type QuestionOptions = { choices: string[] } 
  2.  
  3. function question(query: string, options?: QuestionOptions): Promise<string> 

用法:

  1. let username = await question('What is your username? '
  2.  
  3. let token = await question('Choose env variable: ', { 
  4.  
  5. choices: Object.keys(process.env) 
  6.  
  7. }) 

chalk包,不需要導(dǎo)入就可以直接用

  1. console.log(chalk.blue('Hello world!')) 

fs包,需要導(dǎo)入就可以直接用

  1. let content = await fs.readFile('./package.json'

Promisified默認(rèn)被引入了,相當(dāng)于寫了以下代碼:

  1. import {promises as fs} from 'fs' 

os包,需要導(dǎo)入就可以直接用

  1. await $`cd ${os.homedir()} && mkdir example` 

zx可以從其他腳本導(dǎo)入:

  1. #!/usr/bin/env node 
  2.  
  3. import {$} from 'zx' 
  4.  
  5. await $`date` 

傳遞環(huán)境變量:

  1. process.env.FOO = 'bar' 
  2.  
  3. await $`echo $FOO` 

執(zhí)行遠(yuǎn)程腳本:

  1. zx https://medv.io/example-script.mjs 

 

 

責(zé)任編輯:張燕妮 來源: 開源前哨
相關(guān)推薦

2021-05-17 14:59:10

技術(shù)資訊

2021-01-01 09:03:44

故障HAProxy服務(wù)器

2021-05-17 10:44:24

Python 工具編程語言

2020-08-06 17:16:47

抖音Tiktok美國

2021-07-14 16:03:36

開源技術(shù) 工具

2019-02-21 15:19:17

云管理工具云計(jì)算容器

2021-09-01 13:46:07

GitHub Copi漏洞代碼訓(xùn)練

2021-05-18 11:40:11

開源腳本工具

2021-12-26 00:13:24

Log4jLogback漏洞

2014-09-02 10:19:22

IT程序員

2010-10-21 14:38:07

網(wǎng)絡(luò)融合

2015-11-17 12:56:33

浪潮SC15

2023-10-07 10:11:59

ViteRust

2022-05-09 17:12:32

元宇宙技術(shù)生活

2023-11-16 14:00:23

iOS 17.2蘋果

2023-07-14 13:32:05

2014-09-29 14:35:57

WIFI物聯(lián)網(wǎng)RFID

2013-12-03 10:04:04

Windows更新代號(hào)Windows 8.1

2022-05-10 08:49:46

設(shè)備驅(qū)動(dòng)Linux

2021-12-07 08:27:19

RTTI運(yùn)行類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲综合中文字幕在线观看 | 亚洲小说图片 | 福利在线看| 色狠狠桃花综合 | 亚洲女人天堂成人av在线 | 最新高清无码专区 | 91av在线影院 | 男女污污动态图 | 日韩二区 | 国产激情网| 亚洲精品一区中文字幕乱码 | 中文字幕国产 | 免费精品视频一区 | 在线色网| 亚洲欧美在线一区 | 中文字幕av在线一二三区 | 91网站在线播放 | 国产激情精品视频 | 高清黄色网址 | 久久久久久国产精品免费免费 | 国产精品网址 | 欧美成人精品一区二区男人看 | 亚洲精品在线免费观看视频 | 久草.com | 国产一区二区三区久久久久久久久 | 亚洲精品视频免费看 | 欧美激情黄色 | 亚洲不卡在线观看 | 最近日韩中文字幕 | 亚洲精品在线视频 | 久久精品在线播放 | 一区二区三区在线 | 草久久久 | 综合久久综合久久 | 51ⅴ精品国产91久久久久久 | 精品国产精品国产偷麻豆 | 天天激情综合 | 丁香婷婷在线视频 | 亚洲国产精品精华素 | 国产高清精品在线 | 日韩精品免费 |