Product
Introducing Ruby Support in Socket
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
Bundle your TypeScript library with no config, powered by [esbuild](https://github.com/evanw/esbuild).
Tsup is a zero-config TypeScript bundler that aims to provide a simple and efficient way to bundle TypeScript projects. It supports various output formats, minification, and other advanced features with minimal configuration.
Basic Bundling
This command bundles the TypeScript file located at `src/index.ts` into CommonJS and ES Module formats. Tsup automatically handles the TypeScript compilation and output generation.
tsup src/index.ts --format cjs,esm
Minification
This command bundles and minifies the TypeScript file located at `src/index.ts`. Minification reduces the file size by removing unnecessary whitespace and comments, making the output more efficient for production use.
tsup src/index.ts --minify
Watch Mode
This command enables watch mode, which automatically rebundles the TypeScript file located at `src/index.ts` whenever changes are detected. This is useful for development environments where you want to see changes in real-time.
tsup src/index.ts --watch
Custom Entry Points
This command allows you to specify multiple entry points for bundling. In this example, both `src/index.ts` and `src/worker.ts` are bundled into ES Module format. This is useful for projects with multiple entry files.
tsup src/index.ts src/worker.ts --format esm
Environment Variables
This command allows you to define environment variables that can be used within your TypeScript code. In this example, `PROCESS_ENV` is set to `production`, which can be used for conditional logic in the code.
tsup src/index.ts --define.PROCESS_ENV=production
Esbuild is an extremely fast JavaScript bundler and minifier. It is known for its speed and efficiency, making it a popular choice for large projects. Compared to tsup, esbuild offers more advanced features but may require more configuration.
Rollup is a module bundler for JavaScript that compiles small pieces of code into something larger and more complex, such as a library or application. It is highly configurable and supports a wide range of plugins. Rollup is more flexible but can be more complex to set up compared to tsup.
Webpack is a powerful and highly configurable module bundler for JavaScript applications. It supports a wide range of features and plugins, making it suitable for complex projects. However, it can be more challenging to configure and may require more boilerplate compared to tsup.
Bundle your TypeScript library with no config, powered by esbuild.
Anything that's supported by Node.js natively, namely .js
, .json
, .mjs
. And TypeScript .ts
, .tsx
.
This project is designed for bundling Node.js libraries.
Install it locally in your project folder:
npm i tsup -D
# Or Yarn
yarn add tsup --dev
You can also install it globally but it's not recommended.
tsup [...files]
Files are written into ./dist
.
You can bundle multiple files in one go:
tsup src/index.ts src/cli.ts
Code splitting is enabled by default and supported in cjs
and esm
format.
By default tsup bundles all import
-ed modules but dependencies
in your packages.json
are always excluded, you can also use --external <module>
flag to mark other packages as external.
tsup index.ts --dts
This will emit ./dist/index.js
and ./dist/index.d.ts
.
Supported format: esm
, cjs
, (default) and iife
.
You can bundle in multiple formats in one go:
tsup src/index.ts --format esm,cjs,iife
That will output files in following folder structure:
dist
├── index.mjs # esm
├── index.global.js # iife
└── index.js # cjs
If the type
field in your package.json
is set to module
, the filenames will be slightly different:
dist
├── index.js # esm
├── index.global.js # iife
└── index.cjs # cjs
Read more about esm
support in Node.js.
If you don't want extensions like .mjs
or .cjs
, e.g. you want your library to be used in a bundler (or environment) that doesn't support those, you can enable --legacy-output
flag:
tsup src/index.ts --format esm,cjs,iife --legacy-output
..which outputs to:
dist
├── esm
│ └── index.js
├── iife
│ └── index.js
└── index.js
You can use --target es5
or "target": "es5"
in tsconfig.json
to compile the code down to es5, it's processed by buble. Some features are NOT supported by this target, namely: for .. of
.
When an entry file like src/cli.ts
contains hashbang like #!/bin/env node
tsup will automatically make the outout file executable, so you don't have to run chmod +x dist/cli.js
.
tsup src/index.ts --watch
esbuild is fast because it doesn't perform any type checking, you already get type checking from your IDE like VS Code or WebStorm.
Additionally, if you want type checking at build time, you can enable --dts
, which will run a real TypeScript compiler to generate declaration file so you get type checking as well.
For more details:
tsup --help
MIT © EGOIST (Kevin Titor)
FAQs
Bundle your TypeScript library with no config, powered by esbuild
The npm package tsup receives a total of 1,143,593 weekly downloads. As such, tsup popularity was classified as popular.
We found that tsup demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.