精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

別再用 Bash 寫前端自動(dòng)化腳本了!

開發(fā) 前端
今年最受歡迎的項(xiàng)目是谷歌的 zx,可在 JavaScript 或 TypeScript 中編寫簡單的命令行腳本。

導(dǎo)讀

Vladimir[1] 發(fā)現(xiàn)自己一直討厭 bash 編寫的自動(dòng)化流程腳本,并且在機(jī)緣巧合下發(fā)現(xiàn)同事們都有類似的想法,因此他分享了他認(rèn)為 JavaScript 編寫自動(dòng)化腳本的優(yōu)勢,看看能不能說服大家去共建更好的生態(tài)。

與之相關(guān)的是,谷歌的 zx[2] 項(xiàng)目正是為此而生,并且在去年的 JavaScript 工具流行趨勢調(diào)查中獲得了第一名。

今年最受歡迎的項(xiàng)目是谷歌的 zx,可在 JavaScript 或 TypeScript 中編寫簡單的命令行腳本。

zx 支持在代碼中嵌入任何 bash 表達(dá)式(ls、cat、git 等等),并借助 JavaScript 模板字面量獲得結(jié)果。

zx 涵蓋了多個(gè)軟件包提供的功能:

node-fetch:使用與瀏覽器中相同的 API 發(fā)出 HTTP 請(qǐng)求;

fs-extra:運(yùn)行文件系統(tǒng)

Globby:匹配給定用戶友好模式的文件名

接下來是他所分享的一些看法:

我在日常的工作中也體會(huì)到,大家仿佛有共識(shí)一般默認(rèn)寫自動(dòng)化構(gòu)建腳本時(shí)要去用 bash,希望這篇文章可以帶給大伙一些不一樣的思考,也許 JavaScript 來寫會(huì)更好?

先看看幾個(gè)可能的優(yōu)點(diǎn):

  • 你的團(tuán)隊(duì)可能對(duì) JS 最熟悉
  • dev 和 CI 機(jī)器上很可能默認(rèn)安裝了 Node
  • 直接可以訪問其他 JS 工具
  • Node 是跨平臺(tái)的運(yùn)行時(shí)
  • 進(jìn)程間通信是異步的,而且相當(dāng)方便

如果你時(shí)間不多的話,不妨看看快速比較表格:

這是你團(tuán)隊(duì)的主要語言

相比于 bash,大多數(shù)前端團(tuán)隊(duì)都更熟悉 JS。Node 是具有特殊的 API,但總的來說它有函數(shù)一等公民,循環(huán)和 promise 等熟悉特性。bash?我搞了幾年下來還是不確定它是咋工作的 —— 語法很熟悉,但在意想不到的地方又不一樣,大多數(shù)變量是字符串,到底存在模塊不?如果我錯(cuò)了,也不要糾正我,我不關(guān)心了。我一直只是用的時(shí)候去谷歌……

每個(gè)體面的程序員都需要學(xué)習(xí) bash?這是病態(tài)的!如果你的后端同事需要在你的項(xiàng)目中做一些緊急改動(dòng),那他應(yīng)該學(xué)習(xí)一些 JS。C 語言風(fēng)格的語法讓任何人都能大概了解代碼的意圖。當(dāng)然從這個(gè)角度來看 bash 也差不多,但 JS 在這里起碼并不比它差。

在 JS 優(yōu)先的團(tuán)隊(duì)中使用 JS 進(jìn)行自動(dòng)化腳本的編寫,是最合乎邏輯的選擇。

runtime 大概率已經(jīng)安裝了

你的 bash 腳本即使成功運(yùn)行了,麻煩也沒有結(jié)束,因?yàn)樗ǔ?huì)在另一臺(tái)機(jī)器上失敗(說你呢,Alpine Docker 容器……)。各種 shells[3](SH,ASH,BASH,ZSH)都略有不同,在不同的 Linux 發(fā)行版上也不完全通用。你當(dāng)然可以手動(dòng)挑選必要的包,或者重新手寫邏輯,但是真的很浪費(fèi)時(shí)間。

用 Node 的話,丟失的 runtimes 的問題非常少見 - CI 機(jī)器無論如何都可以運(yùn)行 npm / yarn,這些和 node 綁在一起。此外,一旦 node 程序編寫完成,通常每臺(tái)計(jì)算機(jī)上都可以運(yùn)行。

開箱即用的跨平臺(tái)特性

這就引出了下一點(diǎn) —— node 是一個(gè)跨平臺(tái)的運(yùn)行時(shí),在 linux、mac 和 windows 上運(yùn)行良好。對(duì),MacOS 是兼容 POSIX 的,但是許多命令在選項(xiàng)和輸出格式上仍然有細(xì)微的差異?,F(xiàn)在,你需要 Windows 支持嗎?雖然大多數(shù)前端開發(fā)人員都使用 Mac,而且存在 Win 的 bash 端口。但是,免費(fèi)支持開箱即用總是很好的:

  • 降低了開源項(xiàng)目的貢獻(xiàn)障礙。
  • 一旦我需要匆忙在 Windows 服務(wù)器上啟動(dòng) dev 服務(wù)器的時(shí)候,一般都很不愉快。
  • 經(jīng)理想玩玩你的項(xiàng)目,但他用的是 Win 電腦。

Node 團(tuán)隊(duì)花了大量時(shí)間抽象出操作系統(tǒng)之間的差異。忽視這一點(diǎn),而去堅(jiān)持使用 bash,會(huì)適得其反。

直接訪問其他 JS 工具

前端工作流(webpack/parcel/babel/PostSS)中的大多數(shù)工具都開放了 node APIs。甚至像 esbuild 和 swc 這樣的非 JS 工具也提供 node bindings。如果你的自動(dòng)化編排在 node 上運(yùn)行,那么訪問這些 API 就很簡單:只需導(dǎo)入包并調(diào)用函數(shù)。

在 bash 中,有兩個(gè)麻煩的選項(xiàng)可以與基于 node 的工具集成:

  • 通過奇怪的選項(xiàng)格式調(diào)用 CLI。
  • 編寫一個(gè)最小的 JS 包裝器來調(diào)用 node API,從 bash 調(diào)用它。

另外一個(gè)好處是,由于許多工具的 CLI 位于單獨(dú)的軟件包中(如 @babel/CLI),如果直接使用 node API,可以跳過安裝,從而節(jié)省一點(diǎn) npm i時(shí)間。

體面的進(jìn)程間通信

node 作為自動(dòng)化運(yùn)行時(shí)的一個(gè)很棒的方面是它的 IPC 能力。有時(shí)候你更喜歡通過 CLI 而不是 node API 使用其他工具。也可以 —— 在 node 中,這可以通過 child_process[4] 異步且跨平臺(tái)地完成!你甚至可以在不同的進(jìn)程之間使用管道輸出,就像 shell 的管道操作符 |。雖然內(nèi)置的Stream和child_process API 可能不太符合人體工程學(xué),但你可以根據(jù)自己的口味使用包裝器——我比較喜歡execa。

bash 也擅長于流程管理,但對(duì)我來說,有太多的可能性了——參考這個(gè) stackoverflow 問題:里面提到有五種不同的并行運(yùn)行命令的方式[5],如果你不知道自己在做什么,這就很容易讓你搬起石頭砸自己的腳。

龐大的生態(tài)系統(tǒng)

npm 為各種各樣的問題提供了很好的解決方案。我最喜歡的是管理子進(jìn)程的 execa[6]、處理 CLI 選項(xiàng)的yargs[7]和輸出樣式的chalk[8]。

是的,也存在類似的許多命令行工具,但必須使用特定于操作系統(tǒng)的軟件包管理器(apt?brew?apk?)安裝它們。大伙真的不想處理這種問題。此外,您安裝的任何 CLI 軟件包也可以通過 spawn/exec 在 node 中使用。

因此,以下是我選擇 JS/node 來管理復(fù)雜自動(dòng)化工作流的主要原因:

  • JS 是你們團(tuán)隊(duì)的主要語言!
  • 節(jié)點(diǎn)運(yùn)行時(shí)通常安裝在本地和 CI 中,因?yàn)槟幚淼氖?npm/Spread。
  • node 跨平臺(tái)運(yùn)行,與 bash 和 make 不同。
  • node 可以直接訪問其他 JS 工具。
  • node IPC(用于編排 CLI 工具)非常合適,尤其是使用 execa 時(shí)。
  • 在 node 中編寫 CLI 工具,有很多好用的軟件包。

當(dāng)然也有理由避免使用 node(比如缺少關(guān)于自動(dòng)化用例的教程,對(duì)于不熟悉 node 的人來說,異步的復(fù)雜性),但我仍然相信它是 JS 項(xiàng)目中構(gòu)建自動(dòng)化流程最可靠的選擇。

Vladimir:https://thoughtspile.github.io/2022/02/14/js-automation

參考資料

[1]Vladimir: https://twitter.com/thoughtspile

[2]zx: https://github.com/google/zx

[3]各種 shells: https://en.wikipedia.org/wiki/Shell_script

[4]child_process: https://nodejs.org/api/child_process.html

[5]里面提到有五種不同的并行運(yùn)行命令的方式: https://stackoverflow.com/questions/3004811/how-do-you-run-multiple-programs-in-parallel-from-a-bash-script

[6]execa: https://github.com/sindresorhus/execa

[7]yargs: https://github.com/yargs/yargs

[8]chalk: https://github.com/chalk/chalk

責(zé)任編輯:武曉燕 來源: 前端從進(jìn)階到入院
相關(guān)推薦

2025-11-03 04:00:00

2025-08-13 03:00:00

2025-05-19 04:00:00

2020-12-02 11:18:50

print調(diào)試代碼Python

2020-12-04 10:05:00

Pythonprint代碼

2021-06-09 06:41:11

OFFSETLIMIT分頁

2021-01-29 11:05:50

PrintPython代碼

2020-12-15 08:06:45

waitnotifyCondition

2020-12-03 09:05:38

SQL代碼方案

2023-10-26 16:33:59

float 布局前段CSS

2021-05-25 09:30:44

kill -9Linux kill -9 pid

2020-07-17 07:15:38

數(shù)據(jù)庫ID代碼

2022-01-27 07:48:37

虛擬項(xiàng)目Django

2024-12-26 07:47:20

2020-12-08 06:20:49

前端重構(gòu)Vue

2024-06-12 13:54:37

編程語言字符串代碼

2019-03-12 14:48:29

路由器XBOXPS4

2022-10-27 21:34:28

數(shù)據(jù)庫機(jī)器學(xué)習(xí)架構(gòu)

2025-05-15 03:00:00

2025-08-06 09:31:12

點(diǎn)贊
收藏

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

精品午夜福利视频| 麻豆三级在线观看| 毛片在线免费| 久久精品国产精品亚洲红杏| 久久艳片www.17c.com | 久久综合亚洲色hezyo国产| 久久亚洲道色| 欧美午夜精品免费| 老子影院午夜伦不卡大全| 欧美日韩国产中文字幕在线| 精品亚洲porn| 欧美在线一级va免费观看| 日本在线观看网址| 黑人久久a级毛片免费观看| 色婷婷国产精品综合在线观看| 国产精品无码乱伦| 亚洲色欧美另类| 久久99精品国产91久久来源| 91精品国产高清久久久久久| 久久久久麻豆v国产| 男人的天堂久久| 欧美酷刑日本凌虐凌虐| 欧美 日韩精品| 主播国产精品| 国产精品萝li| 欧美激情第一页在线观看| 成 人 黄 色 片 在线播放| 日本不卡高清视频| 97在线视频免费观看| 久久久久久久久久久久久女过产乱| 欧美黑人巨大videos精品| 日韩一级片网站| 伊人影院综合在线| 亚洲不卡系列| 欧美性xxxx极品高清hd直播| 800av在线免费观看| 日本最新在线视频| 久久精品视频一区二区三区| 精品国产日本| 色欲久久久天天天综合网| 国产在线麻豆精品观看| 国产精品欧美激情| 无码人妻丰满熟妇区五十路| 亚洲影院一区| 91wwwcom在线观看| 日韩xxxxxxxxx| 亚洲手机视频| 欧美富婆性猛交| 少妇影院在线观看| 亚洲电影在线一区二区三区| 最好看的2019年中文视频| www亚洲色图| 精品99在线| 一区二区成人精品| 永久免费av无码网站性色av| 成人一区而且| 精品国产拍在线观看| 国产美女网站视频| 99久久精品国产亚洲精品| 自拍偷拍亚洲区| 欧美一区二区三区观看| 999国产精品视频| 久久久91精品| 2021亚洲天堂| 黄色亚洲大片免费在线观看| 久久人人爽人人爽人人片av高请| 国产精品a成v人在线播放| 一区在线免费观看| 91av在线播放| 亚洲成熟少妇视频在线观看| 三级久久三级久久| 国产美女直播视频一区| 国产精品乱码久久久| 国产一区免费电影| 成人在线看片| 日韩精品一二| 国产精品视频一区二区三区不卡| 中文字幕中文字幕在线中心一区 | 亚洲女子a中天字幕| 蜜桃网站在线观看| 国产精品xx| 色综合久久天天综合网| 天天爽夜夜爽一区二区三区| 国产精品国产亚洲精品| 亚洲国产精品资源| 熟女高潮一区二区三区| 久久久久久免费视频| 欧美极品美女电影一区| 日韩在线 中文字幕| 另类综合日韩欧美亚洲| 国产精品久久久久久久小唯西川 | 草草视频在线一区二区| 亚洲欧美国产另类| 免费看一级大片| 亚洲精品在线二区| 国产精品视频自在线| 黑人精品一区二区三区| 久久精品亚洲乱码伦伦中文| 久久久久福利视频| 亚洲永久av| 日韩色在线观看| 精品欧美一区二区久久久| 亚洲精品在线观看91| 欧美孕妇孕交黑巨大网站| 亚洲一级av毛片| 91视视频在线直接观看在线看网页在线看| 亚洲a∨一区二区三区| 国产蜜臀av在线播放| 欧美视频精品在线观看| 第四色在线视频| 国产精品成人a在线观看| 欧美中文字幕在线播放| 99视频免费看| 中日韩免费视频中文字幕| 免费超爽大片黄| 国产精品**亚洲精品| 亚洲午夜未满十八勿入免费观看全集 | 亚洲一区二区三区中文字幕在线观看| 亚洲另类欧美自拍| 九九视频免费看| 老色鬼精品视频在线观看播放| 精品一区二区国产| av网站导航在线观看免费| 欧美在线999| 激情综合丁香五月| 黑人一区二区| 91中文在线视频| 草草影院在线观看| 欧美日韩在线影院| 大桥未久恸哭の女教师| 女主播福利一区| 成人网中文字幕| wwwww在线观看免费视频| 欧美午夜视频在线观看| 国产精品无码电影| 欧美三级不卡| 亚洲影视九九影院在线观看| 无遮挡的视频在线观看| 一本大道久久a久久精二百| 国产麻豆xxxvideo实拍| 99国产精品| 国产麻豆乱码精品一区二区三区| 污视频免费在线观看| 欧美一区二区三区免费大片 | 香蕉视频1024| 影音先锋成人在线电影| 亚洲一区二区三区在线免费观看| 欧美三级理伦电影| 4438x成人网最大色成网站| av资源在线免费观看| 麻豆高清免费国产一区| 视频一区二区三区免费观看| 97欧美成人| 日韩一区视频在线| 国产伦精品一区二区三区四区 | 在线能看的av| 91在线播放网址| 成人毛片一区二区| 亚洲精品亚洲人成在线观看| 日本高清不卡的在线| 精品资源在线看| 欧美日韩中文精品| 极品美妇后花庭翘臀娇吟小说| 久久草av在线| 中文字幕乱码免费| 国产成人福利av| 欧美怡春院一区二区三区| 成人在线二区| 91精品啪在线观看国产60岁| 久久久久亚洲av成人片| 久久综合久久99| 日韩一级理论片| 一个色综合网| 欧美国产一区二区在线| 日韩午夜电影免费看| 色综合久久久888| 视频午夜在线| 91麻豆精品久久久久蜜臀| 久久久精品国产sm调教网站| 91欧美一区二区| 亚洲精品在线视频播放| 亚洲伦伦在线| 亚洲一区二区在线免费观看| 9l视频自拍九色9l视频成人| 欧美诱惑福利视频| 国产成人高清精品| 精品小视频在线| 国产乱码一区二区| 欧美性高跟鞋xxxxhd| frxxee中国xxx麻豆hd| 成人一区二区三区在线观看| 日本熟妇人妻中出| 激情欧美国产欧美| 一本一生久久a久久精品综合蜜| 亚洲精品观看| 国产精品你懂得| 看黄在线观看| 久99久在线视频| 成年人在线免费观看| 亚洲娇小xxxx欧美娇小| 国产精品色综合| 色域天天综合网| 久久久久久久久久综合| 国产欧美1区2区3区| 青青草原播放器| 亚洲欧美日韩视频二区| 伊人久久大香线蕉综合75| 蜜臀av一区| 国产专区欧美专区| 国产乱码午夜在线视频| 中文字幕日本欧美| 青青久在线视频免费观看| 欧美巨大另类极品videosbest | 偷拍日韩校园综合在线| 国产又粗又长又硬| 成人美女视频在线观看| 国产三级三级看三级| 亚洲综合好骚| 亚洲激情免费视频| 国产一区二区三区网| 91亚洲精品在线| 成人综合网站| 2025国产精品视频| a√资源在线| 亚洲国产精品字幕| 精品区在线观看| 欧美三级日韩在线| 成年人视频免费| 黄色成人在线免费| 精品一区在线观看视频| 国产精品国产三级国产aⅴ中文| 狠狠人妻久久久久久综合蜜桃| 国产在线乱码一区二区三区| 手机看片福利日韩| 日韩和的一区二区| 亚洲熟妇av日韩熟妇在线| 围产精品久久久久久久| 水蜜桃一区二区三区| 少妇精品久久久一区二区三区 | 丰满人妻一区二区三区免费视频 | 亚洲成人福利在线观看| 亚久久调教视频| 最新精品视频| 91精品观看| 国产av不卡一区二区| 奇米影视亚洲| 一区不卡字幕| 四季av一区二区三区免费观看 | 青青草原综合久久大伊人精品| 蜜桃91精品入口| 天堂一区二区三区四区| 精品欧美国产| 免费看日本一区二区| 欧美极品色图| 国产99久久| 亚洲欧美日韩国产yyy| 日韩国产一区二区| 亚洲欧美精品在线观看| 日韩国产欧美| 日产国产精品精品a∨| 日韩av大片| 宅男av一区二区三区| 欧美不卡视频| 中文字幕无码精品亚洲资源网久久| 黄色日韩精品| 免费成人午夜视频| 日本人妖一区二区| 亚洲一级免费观看| 激情综合色综合久久| 亚洲第一中文av| 高清不卡在线观看| 一级特黄a大片免费| 久久综合久久99| 日本爱爱小视频| 亚洲精品国产成人久久av盗摄| 久艹视频在线观看| 91福利国产精品| 一二三四区视频| 日韩欧美国产一二三区| 国产麻豆91视频| 日韩国产精品一区| 国产三级电影在线观看| 久久久精品电影| 蜜桃麻豆影像在线观看| 国产精品久久久精品| 色综合久久久| 久久久久久久久久久久久久一区 | 国产高清不卡一区| 色婷婷精品久久二区二区密| 国产亚洲美州欧州综合国| 亚洲熟女www一区二区三区| 在线日韩三级| 久久伊人中文字幕| 少妇一级淫免费播放| 黑人巨大精品欧美黑白配亚洲 | 韩国三级中文字幕hd久久精品| 日本人妻一区二区三区| 91看片淫黄大片一级| 呻吟揉丰满对白91乃国产区| 国产精品麻豆久久久| 91浏览器在线观看| 欧美日韩激情一区| 婷婷色在线视频| 欧美xxxx做受欧美| 欧美专区福利免费| 亚洲综合在线中文字幕| 欧美亚洲高清| 人妻少妇精品无码专区二区| 美日韩一级片在线观看| 免费成人深夜夜行p站| 亚洲色图视频免费播放| 伊人中文字幕在线观看| 亚洲成人精品久久| 国产原厂视频在线观看| 欧美一区二区色| 国产欧美三级电影| 亚洲资源在线网| 国产亚洲网站| 久久人人爽人人人人片| 亚洲日本在线看| 国产又黄又猛又粗又爽| 欧美精品一区二区在线播放| 日本高清中文字幕在线| 欧美最猛性xxxx| 黑人久久a级毛片免费观看| 中文字幕日韩精品久久| 丝袜美腿亚洲色图| 欧洲女同同性吃奶| 亚洲国产美女搞黄色| 国产伦精品一区二区三区视频痴汉 | 少妇高潮久久77777| jizz内谢中国亚洲jizz| 国产一区二区三区高清| 欧美1区3d| 超碰成人在线播放| 2022国产精品视频| 国产精品 欧美 日韩| 日韩欧美资源站| www久久日com| 91网在线免费观看| 91精品国产视频| 日韩成人av免费| 国产精品国产三级国产普通话99| 蜜臀99久久精品久久久久小说| 亚洲欧美一区二区三区久久| 第一福利在线视频| 动漫精品视频| 国产精品久久久久久模特 | 蜜臀av无码一区二区三区| 国产盗摄女厕一区二区三区| 国产午夜手机精彩视频| 欧美精品乱码久久久久久按摩| 免费黄色电影在线观看| 国产主播欧美精品| 99精品在线观看| 黑人无套内谢中国美女| 亚洲激情校园春色| h狠狠躁死你h高h| 国内精品久久久久久| 成人动态视频| 国产精品一色哟哟| 91麻豆免费看片| 久久精品无码av| 亚洲毛片在线免费观看| 国产精品99久久久久久董美香 | 国产精品成av人在线视午夜片| 九九热精品视频在线观看| 天天爽夜夜爽一区二区三区| 亚洲欧洲成人av每日更新| 91麻豆成人精品国产| 久久久久一本一区二区青青蜜月| 高潮按摩久久久久久av免费| 国产一区二区网| 国产精品免费视频网站| 国产精品永久久久久久久久久| 久久福利视频导航| 天海翼精品一区二区三区| 欧美日韩一区二区在线免费观看| 国产欧美日韩精品a在线观看| 国产99久一区二区三区a片| 欧美激情一区二区久久久| 日本午夜精品久久久| 久久国产精品国产精品| 亚洲黄色av一区| 日本一级在线观看| 国产主播喷水一区二区| 一区二区亚洲| 中文字幕无码日韩专区免费| 日韩片之四级片| 韩国主播福利视频一区二区三区| 一区二区三区欧美在线| 成人一区二区视频| 日韩欧美在线观看免费| 按摩亚洲人久久| 国产人妖ts一区二区| 在线一区二区不卡| 欧美色xxxx| 2021av在线| 久久影院理伦片| 国模大尺度一区二区三区|