Skip to main content
AI
  • Get started with AI

    • Red Hat AI

      Accelerate the development and deployment of enterprise AI solutions.

    • AI learning hub

      Explore learning materials and tools, organized by task.

    • AI interactive demos

      Click through scenarios with Red Hat AI, including training LLMs and more.

    • AI/ML learning paths

      Expand your Red Hat OpenShift AI knowledge using these learning resources.

    • AI quickstarts

      Focused AI use cases designed for fast deployment on Red Hat AI platforms.

    • No-cost AI training

      Foundational Red Hat AI training.

  • Featured resources

    • Red Hat OpenShift AI
    • Open source AI for developers
    • AI product application development
    • Open source-powered AI/ML for hybrid cloud
    • AI and Node.js cheat sheet

Red Hat AI Factory with NVIDIA

Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments.

Learn
  • Self-guided

    • Documentation

      Find answers, get step-by-step guidance, and learn how to use Red Hat products.

    • Learning paths

      Explore curated walkthroughs for common development tasks.

    • Guided learning

      Receive custom learning paths powered by our AI assistant.

    • See all learning
  • Hands-on

    • Developer Sandbox

      Spin up Red Hat's products and technologies without setup or configuration.

    • Interactive labs

      Learn by doing in these hands-on, browser-based experiences.

    • Interactive demos

      Click through product features in these guided tours.

  • Browse by topic

    • AI/ML
    • Automation
    • Java
    • Kubernetes
    • Linux
    • See all topics
  • Training & certifications

    • Courses and exams
    • Certifications
    • Skills assessments
    • Red Hat Academy
    • Learning subscription
    • Explore training
Build
  • Get started

    • Red Hat build of Podman Desktop

      A downloadable, local development hub to experiment with our products and builds.

    • Developer Sandbox

      Spin up Red Hat's products and technologies without setup or configuration.

  • Download products

    • Red Hat Enterprise Linux
    • Red Hat AI
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products
  • Featured

    • Red Hat build of OpenJDK
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat Developer Toolset
  • References

    • E-books
    • Documentation
    • Cheat sheets
    • Architecture center
Community
  • Get involved

    • Events
    • Live AI events
    • Red Hat Summit
    • Red Hat Accelerators
    • Community discussions
  • Follow along

    • Articles & blogs
    • Developer newsletter
    • Videos
    • Github
  • Get help

    • Customer service
    • Customer support
    • Regional contacts
    • Find a partner

Join the Red Hat Developer program

Download Red Hat products and project builds, access support documentation, learning content, and more.

ConsoleDocsSupport Search
New For you

Recommended

We'll recommend resources you may like as you browse. Try these suggestions for now.

  • Product downloads
  • Cheat sheets
  • Red Hat Developer learning portal
  • Developer blog
  • E-books
  • Developer Sandbox
Log in

Get more with a Red Hat Developer account

  • Product downloads
  • Console access
  • Event registration
  • Training & trials
Explore more account benefitsLog in or register

A subscription may be required for some services.

Contact us

Add standardized support information to your Node.js modules

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

    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

    • A day in the life of an NVIDIA H100 on Red Hat OpenShift 5

    • Migrate BuildConfigs to builds for Red Hat OpenShift with one plug-in install

    • Run Red Hat Enterprise Linux CoreOS on NVIDIA BlueField DPUs

    • Agent harness engineering: Separating model capabilities from enforcement

    • What's new for developers in Red Hat Enterprise Linux 10.3 and 9.9

    Red Hat Developers logo

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    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
    © 2026 Red Hat

    Red Hat legal and privacy links

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