Google выпустила инструмСнт для написания скриптов Π½Π° JavaScript вмСсто Bash

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚-надстройку ΠΎΡ‚ поискового Π³ΠΈΠ³Π°Π½Ρ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ сСбС Тизнь, Π½Π΅ Π·Π°Ρ€Ρ‹Π²Π°ΡΡΡŒ Π² Π΄Π΅Π±Ρ€ΠΈ синтаксиса Bash.

Компания Google прСдставила Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚-надстройку для child_process. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ смогут ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ скрипты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ JavaScript вмСсто Β«Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎΒ» Bash.Β 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ скрипта

			#!/usr/bin/env zx

await $`cat package.json | grep name`

let branch = await $`git branch --show-current`
await $`dep deploy --branch=${branch}`

await Promise.all([
  $`sleep 1; echo 1`,
  $`sleep 2; echo 2`,
  $`sleep 3; echo 3`,
])

let name = 'foo bar'
await $`mkdir /tmp/${name}`
		

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ этого скрипта ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ синтаксис, Ρ‚Π°ΠΊ ΠΈ саму ΡΡƒΡ‚ΡŒ Google ZX.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ?

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm i -g zx

Π§Ρ‚ΠΎ дальшС?

Π‘Π°ΠΌΠΈ скрипты ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° .mjs. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

Если ΠΆΠ΅ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ .js-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ скрипт стоит ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ void async function () {...}().

Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ скрипта ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шСбанг: #!/usr/bin/env zx

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт?

Запуск скрипта происходит ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… способов.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ:

			chmod +x ./script.mjs
./script.mjs
		

Π’Ρ‚ΠΎΡ€ΠΎΠΉ:

			zx ./script.mjs
		

ΠŸΡ€ΠΈ использовании zx Ρ‡Π΅Ρ€Π΅Π· bin ΠΈΠ»ΠΈ шСбанг, всС $, cd, fetch ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° GitHub, пСрСйдя ΠΏΠΎ ссылкС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: GitHub/Google

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ