Skip to main content
Redhat Developers  Logo
  • Products

    Featured

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat OpenShift AI
      Red Hat OpenShift AI
    • Red Hat Enterprise Linux AI
      Linux icon inside of a brain
    • Image mode for Red Hat Enterprise Linux
      RHEL image mode
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • Red Hat Developer Hub
      Developer Hub
    • View All Red Hat Products
    • Linux

      • Red Hat Enterprise Linux
      • Image mode for Red Hat Enterprise Linux
      • Red Hat Universal Base Images (UBI)
    • Java runtimes & frameworks

      • JBoss Enterprise Application Platform
      • Red Hat build of OpenJDK
    • Kubernetes

      • Red Hat OpenShift
      • Microsoft Azure Red Hat OpenShift
      • Red Hat OpenShift Virtualization
      • Red Hat OpenShift Lightspeed
    • Integration & App Connectivity

      • Red Hat Build of Apache Camel
      • Red Hat Service Interconnect
      • Red Hat Connectivity Link
    • AI/ML

      • Red Hat OpenShift AI
      • Red Hat Enterprise Linux AI
    • Automation

      • Red Hat Ansible Automation Platform
      • Red Hat Ansible Lightspeed
    • Developer tools

      • Red Hat Trusted Software Supply Chain
      • Podman Desktop
      • Red Hat OpenShift Dev Spaces
    • Developer Sandbox

      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
    • Secure Development & Architectures

      • Security
      • Secure coding
    • Platform Engineering

      • DevOps
      • DevSecOps
      • Ansible automation for applications and services
    • Automated Data Processing

      • AI/ML
      • Data Science
      • Apache Kafka on Kubernetes
      • View All Technologies
    • Start exploring in the Developer Sandbox for free

      sandbox graphic
      Try Red Hat's products and technologies without setup or configuration.
    • Try at no cost
  • Learn

    Featured

    • Kubernetes & Cloud Native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • Java
      Java 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

    • API Catalog
    • Product Documentation
    • Legacy Documentation
    • Red Hat Learning

      Learning image
      Boost your technical skills to expert-level with the help of interactive lessons offered by various Red Hat Learning programs.
    • Explore Red Hat Learning
  • 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

    • How to build a Model-as-a-Service platform

    • How Quarkus works with OpenTelemetry on OpenShift

    • Our top 10 articles of 2025 (so far)

    • The benefits of auto-merging GitHub and GitLab repositories

    • Supercharging AI isolation: microVMs with RamaLama & libkrun

    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