npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

is-really-node

v1.0.0

Published

Determine whether the current runtime is _really_ Node.js, or some impostor.

Downloads

3

Readme

is-really-node

Sometimes you want to make sure that the JavaScript runtime you're expecting to be running on is the one you're actually running on. With this library, you can detect whether you're actually running inside Node.js, and not Deno or Bun. A single (default) export is provided, and it's a boolean that's true if we're definitely running inside Node.js.

This is done by first checking verious globals, and then attempting to alter v8 options, and testing those options have been altered. This is only currently possible in Node.js. The aim is to never have false negatives, and also load quickly if the globals-checking gives us a negative.

Some Details (FAQ)

  • Why not TypeScript or at least JSDoc?
    • The module is very small, and the code does some things that would probably piss off tsc.
    • I don't use TypeScript in my day job, so I tend not to default to it. Don't worry, I'm not one of those haters you see on Twitter.
    • Submit a PR that works correctly and I'll add it.
  • Okay, but why no .d.ts?
    • I'm lazy and Keep forgetting how to do that for default exports, since I don't use TypeScript in my day job. Submit a PR and I'll add it.
  • Do you just hate Bun and Deno? Are you some Node.js purist? They're both Node.js compatible anyway!
    • No. A lot of code I work with targets very specific runtime things that only work in Node.js, so I want an easy way to bail early if that stuff isn't going to work, even if the runtime is trying to fake that it's Node.js. That's all. Please feel free to create is-really-bun or is-really-deno if that suits your work.
  • Isn't checking the globals alone enough?
    • Nope. If folks are trying to fake that they're in Node.js, they can always mess with the globals. Instead we need to do something that's truly impossible in the other platforms, like messing with v8 options.
  • Why no CommonJS?
    • Deno doesn't support CommonJS, AFAIK.
    • That's a bad excuse though. Really I should make this work with require on platforms that support it. Submit a PR that handles this and I'll add it.

License

The MIT License. See LICENSE.txt