Checks if the current module is the main executed module.
- Supports both ES and CJS modules.
- Works with Bun, Deno and Node.js.
- Includes TypeScript types.
- Zero dependencies.
- As efficient as possible depending on the completeness of
import.meta
. - Tiny size - 503 B original, 295 B minified, 216 B gzipped, 193 B brotlied.
Node.js version 14 and newer is supported.
import { isMain } from 'js-main'
if (isMain(import.meta)) {
// this module has been executed
}
const { isMain } = require('js-main')
if (isMain(module)) {
// this module has been executed
}
You can install this package using your favourite package manager:
npm i -D js-main
yarn add -D js-main
pnpm i -D js-main
bun i -D js-main
This package exports one named function:
function isMain(import.meta | module): boolean
It expects the expression import.meta
as the first parameter in an ES module and module
in a CJS module. It returns a boolean, which will be true
if the current module is the main executed module.
ES or CJS export will be chosen according to the type
from package.json
of the importing package. The ES export type can be enforced by the path suffix /es
:
import { isMain } from 'js-main'
import { isMain } from 'js-main/es'
The CJS export type can be enforced by the path suffix /cjs
:
const { isMain } = require('js-main')
const { isMain } = require('js-main/cjs')
If you use only CJS modules, you can use the following code without depending on this or any other package:
if (require.main === module) {
// this module has been executed
}
In lieu of a formal styleguide, take care to maintain the existing coding style. Lint and test your code:
git clone https://github.com/prantlf/js-main.git
bun i --frozen-lockfile
bun run lint
bun run test
Copyright (c) 2024 Ferdinand Prantl
Licensed under the MIT license.