Skip to main content
Redhat Developers  Logo
  • Products

    Platforms

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat AI
      Red Hat AI
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • View All Red Hat Products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat Developer Hub
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat OpenShift Local
    • Red Hat Developer Sandbox

      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Openshift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • View All Technologies
    • Programming Languages & Frameworks

      • Java
      • Python
      • JavaScript
    • System Design & Architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer Productivity

      • Developer productivity
      • Developer Tools
      • GitOps
    • Automated Data Processing

      • AI/ML
      • Data Science
      • Apache Kafka on Kubernetes
    • Platform Engineering

      • DevOps
      • DevSecOps
      • Ansible automation for applications and services
    • Secure Development & Architectures

      • Security
      • Secure coding
  • Learn

    Featured

    • Kubernetes & Cloud Native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • AI/ML
      AI/ML Icon
    • View All Learning Resources

    E-Books

    • GitOps Cookbook
    • Podman in Action
    • Kubernetes Operators
    • The Path to GitOps
    • View All E-books

    Cheat Sheets

    • Linux Commands
    • Bash Commands
    • Git
    • systemd Commands
    • View All Cheat Sheets

    Documentation

    • Product Documentation
    • API Catalog
    • Legacy Documentation
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

Add standardized support information to your Node.js modules

February 10, 2021
Lucas Holmquist
Related topics:
Node.jsOpen source

Share:

    The Nodeshift team recently improved the consistency of the projects we use to maintain our Node.js modules. We made sure that the same linter and tests—ESLint and Tape, for those interested—were used on all projects. We also added support information for the modules we publish to the npm registry. We looked to the Node.js Package Maintenance Working Group for the standardized support information to add.

    In this article, I detail the changes we made based on the Package Maintenance Working Group's recommended best practices. After reading the article, you'll be familiar with the recommended support information and the tools available for adding it to your Node.js modules. First, I will introduce the Node.js Package Maintenance Working Group and its purpose.

    The Node.js Package Maintenance Working Group

    The Node.js Package Maintenance Working Group was created to help package maintainers and consumers navigate the ever-growing Node.js module ecosystem. The working group has a few specific goals. One of those goals is to help package maintainers communicate with and set expectations for their users. The working group recommends providing information such as the project's level of backing, the target level of support, and what versions of Node.js will eventually be supported for every Node.js module. Users can then select modules that are a good fit for their functional and business needs.

    Note: For a more in-depth look at the Node.js Package Maintenance Working Group's recommendations, check out Node.js package maintenance: Bridging the gap between maintainers and consumers on the OpenJSF project page.

    The working group created an initial set of best practices that anyone who maintains and consumes packages can use when adding a support policy to their modules. The easiest way to add this standardized information to your Node.js modules is to create a separate file called package-support.json, which lives at the root of the package. You can then add the support parameter to the package.json with a value of true.

    Updating the Nodeshift modules

    More advanced options are available, but we decided to only add the support: true parameter to our package.json and store support information in a separate file, package-support.json.

    Here are the contents of the package-support.json for Opossum, one of our modules:

    {
      "versions": [
        {
          "version": "*",
          "target": {
            "node": "lts"
          },
          "response": {
            "type": "regular-7"
          },
          "backing": {
            "company": "true"
          }
        }
      ]
    }
    

    Let's unpack the fields here:

    • First, we have the top-level versions property, which in our case is an array. This property contains information for a package version range. We have only one entry in our array.
    • The next field is version, which specifies the module version or versions that are supported. This could be a semantic versioning (SemVer) range, but in our case, we use *, signifying all versions.
    • Next, we have the target property, which tells us the platform version we'll support. In our case, we are running on Node.js and plan to support currently active long-term support (LTS) versions. This means that as Node.js versions become LTS, we will support them. Similarly, as Node.js versions enter end-of-life (EOL), we will no longer support them.
    • We next specify that our response is regular-7, which means that dedicated folks maintain this package and users can expect a response within seven days or fewer.
    • Lastly, our backing property is set to company, because it is part of our day job to maintain these packages.

    Each of these fields has more advanced options, so please see the "Format and Structure" section of the package maintenance team documents to learn more.

    Validating support information (@pkgjs/support)

    Now that we have added the support file to our module, we, as maintainers of the module, want to check that the information we added to the package.json and the package-support.json is valid.

    For this, we can use a tool from the Node.js Package Maintenance Working Group called @pkgjs/support. To start, we run the validate command from our module's root to make sure it is valid:

    npx @pkgjs/support validate
    

    Because we are using GitHub actions, we’ve put this command in our continuous integration (CI) pipeline to test that our support information is valid whenever the integration is run. We also package consumers, and our module has dependencies, so we add another important command called show:

    npx @pkgjs/support show
    

    This command allows us to view and understand the support information that other maintainers might provide. Right now, the command's implementation is very basic, but we expect it to evolve and grow over time, much like the tools that use the license information provided in package.json.

    Conclusion

    As you've seen, adding support information for a Node.js module can be very simple and beneficial to the module's users and the Node.js module ecosystem as a whole. We hope you join us in adding the recommended support information to your modules. We believe it’s a good way for a maintainer to help set expectations. As Node.js use becomes more widespread, support information will be important to ensure a good match between users' expectations and the modules they use.

    While this article only covers the basic commands, more advanced options are available. To learn more about the @pkgjs/support tool or the Node.js Package Maintenance Working Group, see the project's GitHub repository.

    Last updated: February 8, 2021

    Recent Posts

    • Why some agentic AI developers are moving code from Python to Rust

    • Confidential VMs: The core of confidential containers

    • Benchmarking with GuideLLM in air-gapped OpenShift clusters

    • Run Qwen3-Next on vLLM with Red Hat AI: A step-by-step guide

    • How to implement observability with Python and Llama Stack

    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Products

    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform

    Build

    • Developer Sandbox
    • Developer Tools
    • Interactive Tutorials
    • API Catalog

    Quicklinks

    • Learning Resources
    • E-books
    • Cheat Sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site Status Dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2025 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue