Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Node.js v22 で変わること

Node.js v22 で変わること

2024/04/24 令和トラベルで発表した Node.js v22 で変わることの話です。

Avatar for Yosuke Furukawa

Yosuke Furukawa

April 24, 2024
Tweet

More Decks by Yosuke Furukawa

Other Decks in Programming

Transcript

  1. ໔੹ • v21 Ͱ͢ͰʹೖͬͯΔ΋ͷ΋ؚΈ·͢ • 21 ͱ 22 ͸ Major

    Version up Ͱ͋Γɺػೳͷ௥Ճ͸ Minor Version up Ͱ͢ͰʹߦΘΕͯΔ΋ͷ΋ଟ͍ͨΊ
  2. require(ESM) • ͜Ε·Ͱͷঢ়گ • Node.js ٴͼ JS ʹ͸̎ͭͷmodule load ํ͕ࣜ͋Δ

    • ESM ͱ CJS • ैདྷ͋ͬͨͷ͕ CJS, 2015೥Ҏ߱ʹͰ͖ͨͷ͕ESM • ESM ͔Β CJS ͸ಡΊ͕ͨɺٯͷCJS͔ΒESMΛಡΉ͜ͱ͕Ͱ͖ͳ͔ͬͨ
  3. require(ESM) • ྫ͑ΔͳΒɺ USB-C ͱ USB-A Έ͍ͨͳɾɾɾʁ • USB-CରԠσόΠε͸ USB-CɺUSB-A྆ํରԠͰ͖ΔʢΞμϓλ΋ചͬͯΔ͠ɺن֨

    తʹ΋ೝΊΒΕͯΔʣ • USB-AରԠσόΠε͸USB-C͔Βܨ͛ͳ͍ɻʢΞμϓλ͸ചͬͯΔ͚Ͳɺن֨֎ͰೝΊ ΒΕͯͳ͍ʣ • CରԠ AରԠ AରԠ CରԠ
  4. require(ESM) • ৚݅෇͖Ͱ CJS => ESM ΋ೝΊΔ͜ͱʹͳͬͨ • ͖ͬ͞ͷྫͰݴ͑͹ɺ USB-A

    σόΠε͔Β USB-C ΁ͷม׵͕ ن্֨΋ೝΊΒΕΔΑ͏ʹͳͬͨɻ • ৚݅͸͋ΔɺதͰ top-level-await Λ͍ͯ͠Δͱμϝ • USB-A=>USB-C΋USB-Cͷಠࣗػೳ͸࢖͑ͳ͍ͷͱಉ͡
  5. v8 Maglev • v8 ͱ͍͏ JavaScript ࣮ߦΤϯδϯ͕มΘͬͨɻ • Just In

    Time Compiler ʹ͸֊૚͕͋Δɻ • ࠓ·Ͱ Ignition, Sparkplug, TurboFan ͷ3૚ͩͬͨͷ͕ɺ4૚ʹ ͳͬͨɻ Ignition, Sparkplug, Maglev, TurboFan
  6. node --run • npm run hogehoge Ͱ࣮ߦ͍ͯͨ͠ script ࣮ߦʹ৽͍͠ํ๏͕ ೖͬͨɻ

    • node --run hogehoge Ͱ࣮ߦՄೳ • ͜ΕʹΑΓɺ npm ্ཱͪ͛·Ͱͷىಈ࣌ؒΛݮΒͯ͠ύ ϑΥʔϚϯεվળͰ͖ΔΑ͏ʹͳ͍ͬͯΔɻ
  7. node --run • npm run test ΑΓ΋ node --run test

    ͷํ͕଎͍ͬͯ͜ͱ • ద౰ͳ؀ڥͰ࣮ߦͨ݁͠Ռͩͱ100msલޙ଎͍ɻ
  8. fs.glob,fs.globSync import { glob } from 'node:fs/promises'; for await (const

    entry of glob('**/*.mjs')) { console.log(entry); } // foo.mjs // bar/baz.mjs // hoge/fuga/piyo.mjs