Lab 10: Node.js Core Modules

Time: 30 minutes | Level: Practitioner | Docker: docker run -it --rm node:20-alpine sh

Overview

Master Node.js built-in modules: fs (promises API), path, os, crypto (UUID/hashing/HMAC), Buffer, and stream basics — all without installing dependencies.


Step 1: fs/promises — File System

const fs = require('node:fs/promises');
const path = require('node:path');

// Writing, reading, and working with files
async function fileOperations() {
  const tmpDir = '/tmp/node-lab';

  // Create directory (recursive = no error if exists)
  await fs.mkdir(tmpDir, { recursive: true });

  // Write a file
  await fs.writeFile(path.join(tmpDir, 'hello.txt'), 'Hello, Node.js!\n', 'utf8');

  // Append to file
  await fs.appendFile(path.join(tmpDir, 'hello.txt'), 'Second line\n');

  // Read file
  const content = await fs.readFile(path.join(tmpDir, 'hello.txt'), 'utf8');
  console.log('File content:', content.trim());

  // Write JSON
  const data = { users: ['Alice', 'Bob'], count: 2 };
  await fs.writeFile(
    path.join(tmpDir, 'data.json'),
    JSON.stringify(data, null, 2)
  );

  // Read JSON
  const raw = await fs.readFile(path.join(tmpDir, 'data.json'), 'utf8');
  console.log('JSON data:', JSON.parse(raw).count, 'users');

  // List directory
  const files = await fs.readdir(tmpDir);
  console.log('Files:', files);

  // File stats
  const stats = await fs.stat(path.join(tmpDir, 'hello.txt'));
  console.log('File size:', stats.size, 'bytes');
  console.log('Is file:', stats.isFile());

  // Cleanup
  await fs.rm(tmpDir, { recursive: true });
}

fileOperations().catch(console.error);

💡 Always use node:fs/promises (the promise-based API) over the callback-based fs. Add the node: prefix to make it clear it's a built-in.


Step 2: path — Working with File Paths


Step 3: os — Operating System Info


Step 4: crypto — Cryptographic Operations


Step 5: Buffer — Binary Data


Step 6: Stream Basics


Step 7: Useful Utility Modules


Step 8: Capstone — Core Modules All Together

Run verification:

📸 Verified Output:

(UUIDs are random — your UUID will differ)


Summary

Module
Key APIs
Use Case

node:fs/promises

readFile, writeFile, mkdir, stat

File I/O operations

node:path

join, resolve, parse, basename, extname

Cross-platform paths

node:os

platform(), cpus(), totalmem(), tmpdir()

System information

node:crypto

randomUUID, createHash, createHmac, scryptSync

Cryptography

Buffer

from, alloc, concat, copy, toString

Binary data handling

node:stream

Readable, Writable, Transform, pipeline

Streaming data

node:util

promisify, inspect, isDeepStrictEqual

Utilities

Last updated