\newline Logo
Left arrow icon.
Go to Preview Lesson
Go to Preview Lesson
LESSON 5.1CommonJS vs ESM in Node
Course Thumbnail of Bundling and Automation in Monorepos.Bundling and Automation in Monorepos
  • MODULE 1
    Getting Oriented

    This is a description for module 2.

    • LESSON 1.1Code Loading Lesson
    • LESSON 1.2MDX Powered Lesson
    • LESSON 1.3Codesandbox Embed Lesson
    • LESSON 1.4Replit Embed Lesson
  • MODULE 2
    Introduction

    This is a description for module 1.

    • LESSON 2.1Initial setup for pnpm and Node version management
    • LESSON 2.2How pnpm organizes node_modules
    • LESSON 2.3Configuring pnpm peer dependencies and hoisting
    • LESSON 2.4Setting up a pnpm workspace monorepo
    • LESSON 2.5Production vs development dependencies
    • LESSON 2.6Dependency version ranges and protocols
    • LESSON 2.7Patching dependencies with pnpm
  • MODULE 3
    Shared config

    Shared configuration within a monorepo

    • LESSON 3.1Adding a formatter with Prettier
    • LESSON 3.2Sharing TypeScript configuration
    • LESSON 3.3Shared ESLint configuration for ESLint 8 and 9
    • LESSON 3.4VSCode ESLint extension hoisting workaround
    • LESSON 3.5Shared testing configuration with Jest and Vitest
  • MODULE 4
    Monorepo management and automation tools

    Tools and techniques for managing and automating tasks within a monorepo

    • LESSON 4.1Automated git hooks with Lefthook
    • LESSON 4.2Pre-commit formatting with pretty-quick
    • LESSON 4.3Benchmarking and speeding up pre-commit hooks
    • LESSON 4.4Finding unused dependencies with Knip
    • LESSON 4.5Should Knip run in pre-commit?
    • LESSON 4.6Enforcing monorepo dependency consistency with Sherif
    • LESSON 4.7Per-workspace pre-commit checks with Lefthook
  • MODULE 5
    Understanding Node fundamentals and TypeScript build tools in a Monorepo

    Explore Node.js fundamentals and TypeScript build tools essential for effective monorepo management.

    • LESSON 5.1CommonJS vs ESM in Node
    • LESSON 5.2Node.js package.json exports
    • LESSON 5.3How TypeScript Picks an exports Condition
    • LESSON 5.4Sharing UI code by exporting TypeScript
    • LESSON 5.5When exporting TypeScript breaks (and how to fix it)
    • LESSON 5.6
    • LESSON 5.7Adding Preconstruct to Our Monorepo
    • LESSON 5.8Preconstruct for logger and automatic dev symlinks
  • MODULE 6
    Continuous Integration and Deployment in Monorepos

    Explore strategies and tools for implementing continuous integration and deployment in monorepo environments.

    • LESSON 6.1Module 05 — CI/CD
    • LESSON 6.2Adding a basic GitHub Actions CI workflow
    • LESSON 6.3CI concurrency and push triggers
    • LESSON 6.4Extracting a composite GitHub Action for pnpm and Node
    • LESSON 6.5Running Sherif in CI without pnpm install
    • LESSON 6.6Splitting CI into multiple fast checks
    • LESSON 6.7Pinning GitHub Actions by full SHA
    • LESSON 6.8Adding workflow_dispatch
    • LESSON 6.9Building a single workspace with Docker
  • MODULE 7
    Turborepo

    Learn how to use Turborepo for efficient monorepo management, including caching, parallel builds, and task orchestration.

    • LESSON 7.1Initial Turborepo setup
    • LESSON 7.2Build and start with Turborepo
    • LESSON 7.3Turbo transit tasks
    • LESSON 7.4Workspace-specific turbo config
    • LESSON 7.5Environment variables in Turborepo
    • LESSON 7.6Custom inputs and global dependencies
    • LESSON 7.7Workaround for turbo cache symlink bug
Right arrow icon.
Go to Next Lesson
Go to Next Lesson
LESSON 5.3How TypeScript Picks an exports Condition
  • Go Pro
  • Log In

Node.js package.json exports

Table of Contents
  • Section 5.1Why care about exports?
  • Section 5.2Quick refresher on CJS vs ESM in Node.js
  • Section 5.3Shape of exports in a published package (complicated!)
  • Courses
  • Bundling and Automation in Monorepos
  • Node.js package.json exports
  • Go To Previous Lesson
    CommonJS vs ESM in Node
    CommonJS vs ESM in Node
  • Go To Next Lesson
    How TypeScript Picks an exports Condition
    How TypeScript Picks an exports Condition