Convert

A small library for really easy, totally type-safe unit conversions in JavaScript & TypeScript.

bundlephobia Codecov

yarn add convert
# or
npm install convert

Features

  • Full build time and runtime checks of conversions
  • Using a web framework like Next.js or Nuxt.js? You get 0-cost build-time conversions. Convert is totally side-effect free, so conversions will be precalculated at build-time, so absolutely zero conversion code is sent to clients!
  • Works in browsers and Node.js (UMD, ESModules, and CommonJS builds provided)
  • Out of the box ES5 backwards-compatibility
  • 0 dependencies
  • Supports bigints if you pass something with typeof bigint

Usage

// ESM:
import {convert} from 'convert';
// CJS:
const {convert} = require('convert');

// 360 seconds into minutes
convert(360).from('seconds').to('minutes');
// -> 6

// BigInt support
convert(20n).from('hours').to('minutes');
// -> 1200n

// We also do length, mass, data, volume, pressure, and temperature
convert(5).from('kilometers').to('nautical miles');
convert(12).from('pounds').to('ounces');
convert(64).from('bytes').to('KiB');
convert(10).from('atmospheres').to('kPa');
convert(451).from('fahrenheit').to('celsius');

Contributing

Below is a list of commands you will probably find useful.

yarn start

Runs the project in development/watch mode. Your project will be rebuilt upon changes. TSDX has a special logger for you convenience. Error messages are pretty printed and formatted for compatibility VS Code's Problems tab.

Your library will be rebuilt if you make edits.

yarn build

Bundles the package to the dist folder. The package is optimized and bundled with Rollup into multiple formats (CommonJS, UMD, and ES Module).

yarn test

Runs the test watcher (Jest) in an interactive mode. By default, runs tests related to files changed since the last commit.

Alternatives

All of them are bad because they aren't as small as this and many aren't as simple to use.

npm bundle size of convert

npm bundle size of uom + npm bundle size of uom-units

npm bundle size of units-converter

npm bundle size of safe-units

npm bundle size of convert-units

npm bundle size of js-quantities

Thanks

Big thanks to @Jdender, @TheAkio, @iCrawl, @p7g, @aequasi, and the TypeScript Discord server for their help in getting the typesafety working.

Thanks to @MicroDroid for fixing temperature conversion.