Node.js टेस्ट रनर
- अब Node.js में बिल्ट-इन टेस्ट रनर फीचर शामिल है
- टेस्ट फ़ाइलों में
node:test मॉड्यूल import करके टेस्ट लिखे जा सकते हैं
- एकल टेस्ट चलाना:
node --test tests/math.test.js
- यह टेस्ट फ़ाइलों को अपने आप पहचानकर चलाता है
- बिल्ट-इन
assert मॉड्यूल का उपयोग करके टेस्ट सत्यापित किए जा सकते हैं
- टेस्ट suite और hooks का उपयोग करके संबंधित टेस्टों को group और manage किया जा सकता है
Node.js नेटिव mocking
- अब Node.js में नेटिव mocking फीचर शामिल है
- दूसरे टेस्ट frameworks में मिलने वाले mocking फीचर्स अब सीधे Node.js में इस्तेमाल किए जा सकते हैं
node:test मॉड्यूल में mock मेथड का उपयोग करके mocking फीचर लागू किया जा सकता है
Node.js नेटिव टेस्ट coverage
- टेस्ट coverage से यह समझने में मदद मिलती है कि source code का कितना हिस्सा टेस्ट किया गया है
- Node.js 20 से नेटिव टेस्ट coverage फीचर उपलब्ध है
--experimental-coverage फ़्लैग का उपयोग करके टेस्ट coverage डेटा बनाया जा सकता है
- coverage रिपोर्ट के जरिए बिना टेस्ट किए गए code areas की पहचान की जा सकती है
Node.js watch mode
- watch mode फ़ाइल बदलावों को रियल-टाइम में पहचानकर script को अपने आप फिर से चलाता है
- Nodemon जैसी बाहरी dependency की ज़रूरत नहीं पड़ती
--watch फ़्लैग का उपयोग करके फ़ाइल बदलाव पहचानकर script को अपने आप चलाया जा सकता है
Node.js Corepack
- Corepack प्रोजेक्ट और package manager के बीच पुल का काम करता है
- प्रोजेक्ट में कौन-सा package manager इस्तेमाल होगा, यह घोषित किया जा सकता है, और Corepack उसे अपने आप manage करता है
corepack enable कमांड से Corepack को enable किया जा सकता है
Node.js .env loader
- Node.js 20 से .env फ़ाइलों से environment variables को नेटिव तरीके से लोड करने का फीचर उपलब्ध है
--env-file फ़्लैग का उपयोग करके .env फ़ाइल लोड की जा सकती है
- कई .env फ़ाइलें लोड करके अलग-अलग environment configuration सेट की जा सकती हैं
Node.js import.meta सपोर्ट
- Node.js v20.11.0 और v21.2.0 में
import.meta.filename और import.meta.dirname का सपोर्ट है
- फ़ाइल path और directory name को अधिक आसानी से प्राप्त किया जा सकता है
Node.js नेटिव timer promises
- Node.js v15 से timers को promise के रूप में इस्तेमाल किया जा सकता है
setTimeout और setInterval को promise की तरह उपयोग करके async code को और संक्षिप्त लिखा जा सकता है
Node.js permission module
- यह Node.js applications के resource access को नियंत्रित करने वाला एक experimental फीचर है
--experimental-permission फ़्लैग का उपयोग करके file system, network, environment variables आदि की access सीमित की जा सकती है
Node.js policy module
- यह malicious code के लोड होने को रोकने वाला एक security फीचर है
--experimental-policy फ़्लैग का उपयोग करके policy फ़ाइल निर्दिष्ट की जा सकती है, और module loading को नियंत्रित किया जा सकता है
7 टिप्पणियां
node --runका ज़िक्र नहीं है। नए versions से NPM पर निर्भर हुए बिना scripts चलाना संभव है। startup कई गुना तेज़ हो जाता है।इस बार tsboard प्रोजेक्ट पर काम करते हुए मैंने Bun runtime के साथ काफी तुलना की, और Node.js वाकई लगभग हर मामले में अच्छा है, लेकिन (1) TypeScript का सपोर्ट न होना और (2) speed — ये दो बातें अब भी खटकती हैं। compatibility या hardware resources को लेकर ज़्यादा picky न होना जैसी बातें मुझे सच में शानदार लगती हैं.
अगर आप TypeScript और execution speed जैसी बातों को ध्यान में रख रहे हैं, तो Bun runtime पर भी एक बार ज़रूर विचार करें...!
वाह~ मूल लेख में Jest का ज़िक्र भी है।
मैंने एक छोटे प्रोजेक्ट में
jestसेnode.jsपर माइग्रेट करके देखा, लेकिन assertion functions का सपोर्ट बहुत कम है, इसलिए कुछ खास नहीं लगा :(लगता है आप लोग नए ट्रेंड्स को बहुत ही जल्दी अपना लेते हैं..
और native mocking भी!