Skip to content

ayamada/is-dev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

@tir.jp/is-dev

npm version License

Lightweight environment detection and assertions optimized for tree-shaking and dead code elimination in bundlers like esbuild.

This module provides constants and functions that can be completely removed from your production build when used with a bundler that supports dead code elimination (e.g., esbuild, rollup, webpack).

Installation

npm install @tir.jp/is-dev

Features

isDev and isProd

Detects the current environment. It looks for IS_DEV or IS_PROD global variables (defined via bundler define plugins). If neither is defined, isDev defaults to true.

import { isDev, isProd } from '@tir.jp/is-dev';

if (isDev) {
  console.log('Running in development mode');
}

if (isProd) {
  // This block and the check itself can be eliminated in production
  // if IS_DEV/IS_PROD are defined as constants.
}

assert(condition, message)

A simple assertion function. In production mode, it becomes an empty function and can be completely removed by your bundler.

import { assert } from '@tir.jp/is-dev';

assert(value > 0, 'value must be positive');

assertOnlyValidParams(invalids)

Checks if an object (typically containing "rest" parameters) is empty. Useful for catching typos in parameter objects during development without any production overhead.

import { assertOnlyValidParams } from '@tir.jp/is-dev';

function myFunction(params) {
  const { foo, bar, ...invalids } = params || {};
  assertOnlyValidParams(invalids);
  
  // Logic using foo and bar...
}

Production Optimization (e.g., esbuild)

To achieve full code elimination, define IS_DEV or IS_PROD as constants in your bundler configuration.

esbuild example

esbuild app.js --bundle --minify --define:IS_DEV=false --outfile=out.js

In this case, isDev becomes false at compile time, and all isDev blocks and assert calls will be removed from the final bundle.

License

Zlib

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors