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

intrinsic-dependencies

v0.0.2

Published

a simple utility ensuring invisible but required dependencies aren't removed

Downloads

17

Readme

Intrinsic Dependencies

npm version ci Github

A utility for ensuring invisible but required dependencies aren't removed.


Scenario

You may be reviewing dependencies for security or performance reasons and see a dependency which appears to be unneeded. You remove the dependency and suddenly your project is broken. This problem can be fatal—for example, if the dependency is required for something specific to production.

The solution is just a few functions. However, it can be difficult to remember to add these functions to your project. And, this issue usually doesn't come up unless you have a big work project.

That's where Intrinsic Dependencies comes in. Just add the cli to your npm scripts and you're good to go! Intrinsic Dependencies fails or passes with a log of dependencies that are required. That's it.


Solution Overview

Add your "intrinsic dependencies" in a object to your package.json with notes like so:

{
  "intrinsicDependencies": {
    "dockerode": "Referenced during production deployment. Production will fail if removed!",
  }
}

And then add a command to your node scripts to run in your ci (or where ever):

"scripts": {
  "prod-check": "intrinsic-dep-check"
}

Now, intrinsic-dep-check will fail (fail your ci) if a required intrinsic dependency is removed.


Installation

npm install intrinsic-dependencies -save-dev

This should never be a dependency! Just use it as a dev dependency. Or better yet, with npx.

Usage

As a cli (recommended)

intrinsic-dep-check

As a node function

import { checkIntrinsicDependencies } from 'intrinsic-dependencies';

checkIntrinsicDependencies();

See below for more usage details.


Cli

Intrinsic Dependencies can be invoked via a few cli names; clearest is intrinsic-dep-check. See the package.json bin object for reference.

The cli also accepts 2 options (not required), --filePath and --configPath. These options can be used to specify a custom path for the package.json or an optional json formated config file.

intrinsic-dep-check --filePath /path/to/package.json --configPath /path/to/config.json

Node

You can use Intrinsic Dependencies as a node function as well.

import { checkIntrinsicDependencies } from 'intrinsic-dependencies';

checkIntrinsicDependencies();

This function also accepts 2 options (not required), filePath and configPath. These options can be used to specify a custom path for the package.json or an optional json formated config file.

import { checkIntrinsicDependencies } from 'intrinsic-dependencies';

checkIntrinsicDependencies({ filePath: '/path/to/package.json', configPath: '/path/to/config.json' });

Details

This project was intentionally made with "just node"; no Typescript. This keeps the project pure, small, and as close to "just node" as possible.

For development, esbuild, prettier and eslint are used because no similar functionality is provided by "just node".


Made by @yowainwright for fun with passion! MIT, 2024.