ncc
github.com
What it is
ncc is a free, MIT-licensed command-line tool for compiling a Node.js module and its dependencies into one file. It is distributed through npm as `@vercel/ncc`, with `npm i -g @vercel/ncc` given as the global installation command. The project targets publishing minimal npm packages and sending only relevant application code to serverless environments. Its design goals include zero configuration, built-in TypeScript support, and handling Node.js programs and npm modules. Inputs can include TypeScript, binary addons, and dynamic requires. Build options cover minification, source maps, watched builds, external modules, and ECMAScript target selection. Node.js programs can call ncc programmatically with options for caching, externals, minification, source maps, and asset builds. `.ts` and `.tsx` inputs require a `tsconfig.json`. Module-format behavior includes automatic ES module output for `.mjs` files and `.js` files inside a `type: module` package boundary. Support examples cover Sequelize with MariaDB and `@google-cloud/vision` with `google-proto-files`. Dynamically loaded assets that static analysis cannot identify may not work correctly. It runs on Linux.
Spec sheet
- What it does
- ncc is a CLI that compiles a Node.js module and its dependencies into a single file.Read 9 Oct 2026 · github.com
- Purpose
- ncc is a CLI that compiles a Node.js module and its dependencies into a single file.Read 4 Oct 2026 · github.com
- Integrations
- The package support guide gives configuration examples for Sequelize with MariaDB and for `@google-cloud/vision` with `google-proto-files`.Read 4 Oct 2026 · github.com
- License
- The repository lists an MIT license.Read 9 Oct 2026 · github.com
- Build options
- The CLI offers minification, source maps, asset builds, externals, watch mode, and ECMAScript target selection.Read 9 Oct 2026 · github.com
- Compatibility caveat
- Dynamically loaded assets that cannot be statically analyzed may not work correctly because files and assets are relocated using a static evaluator.Read 9 Oct 2026 · github.com
- Configuration
- The design goals include zero configuration and built-in TypeScript support.Read 4 Oct 2026 · github.com
- Design goals
- Its design goals include zero configuration, built-in TypeScript support, and support for Node.js programs and npm modules.Read 9 Oct 2026 · github.com
- Distribution
- The README directs users to install ncc from npm as `@vercel/ncc`.Read 4 Oct 2026 · github.com
- Install
- The README gives `npm i -g @vercel/ncc` as the global installation command.Read 4 Oct 2026 · github.com
- Installation
- The README gives `npm i -g @vercel/ncc` as the installation command.Read 9 Oct 2026 · github.com
- Intended uses
- The project lists publishing minimal npm packages and shipping relevant app code to serverless environments as motivations.Read 9 Oct 2026 · github.com
- Module formats
- When building an `.mjs` file or a `.js` file inside a `type: module` package boundary, ncc automatically creates ES module output.Read 9 Oct 2026 · github.com
- Node.js scope
- The project supports Node.js programs as input and output.Read 4 Oct 2026 · github.com
- Package integration examples
- The package support guide gives configuration examples for Sequelize with MariaDB and `@google-cloud/vision`.Read 9 Oct 2026 · github.com
- Package-specific setup
- The project says some packages may need extra options to work better with ncc static analysis and directs users to its issue queue for troubleshooting.Read 9 Oct 2026 · github.com
- Programmatic use
- The README documents using ncc from Node.js with options for caching, externals, minification, source maps, asset builds, and watch mode.Read 9 Oct 2026 · github.com
- Support channel
- The package support guide suggests searching the issue queue or posting an issue when a package does not run with ncc.Read 9 Oct 2026 · github.com
- Supported inputs
- It supports TypeScript, binary addons, and dynamic requires.Read 9 Oct 2026 · github.com
- TypeScript requirement
- For `.ts` or `.tsx` inputs, the README says a `tsconfig.json` file is necessary.Read 4 Oct 2026 · github.com
- Use cases
- The project lists publishing minimal npm packages and shipping only relevant app code to serverless environments as motivations.Read 4 Oct 2026 · github.com
Plans and prices
Strong points and limits
Strong points
- Free MIT-licensed CLI
- Compiles dependencies into one file
- Built-in TypeScript support
- Minification and source-map options
- Programmatic Node.js interface
Limits
- Linux is the listed platform
- TypeScript inputs require tsconfig.json
- Unanalyzable dynamic assets may fail
- Some packages need extra options
Who it suits
ncc suits Node.js developers packaging npm modules or preparing code for serverless environments. It also fits projects needing TypeScript input, configurable builds, or programmatic compilation.
Verdict
ncc provides a focused way to bundle Node.js programs and dependencies into a single output file. Its zero-configuration goals and build controls are balanced by static-analysis caveats for dynamic assets and package-specific setups.
Where Specifiction places it
- JavaScript Build Tools#5 of 278.2