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

eslint-release

v3.3.0

Published

ESLint Release Tools

Downloads

20,335

Readme

NPM version Downloads Build Status

ESLint Release Tool

This release tool has been extracted from the ESLint project so that it can be shared among projects. While it's intended for use in ESLint organization projects, it is shared freely so others might use it as well.

Please note that while this project is shared freely, it is not intended to be a general-purpose utility. The functionality is highly specific to how ESLint projects handle releases and the project will remain very focused on this use case.

Warning: There are minimal tests for this project and the API is rapidly changing. Use at your own risk.

Installation

You can install the ESLint release tool using npm:

$ npm install eslint-release --save-dev

Usage

To start, you'll need to define two environment variables:

  • NPM_TOKEN - a token to use for npm publish. The token must be from a user that has permission to publish the package.
  • ESLINT_GITHUB_TOKEN - a token for a GitHub user that has repo permission (used for posting release notes).

The ESLint release tool is designed to be used on the command line and is divided into two phases: package generation and package publishing.

To generate a regular release:

$ eslint-generate-release

To generate a prerelease, you need to include the prerelease identifier:

$ eslint-generate-prerelease alpha

Both eslint-generate-release and eslint-generate-prerelease generate a new version and update the changelog but will not push back to GitHub or publish to npm. It will generate an npm package and a .eslint-release-info.json file.

For both releases and prereleases, you can then publish the release:

$ eslint-publish-release

This command publishes the generate npm package and pushes the changes to GitHub. The .eslint-release-info.json file is required for this step to work correctly.

You can optionally include the release tool in another Node.js script:

var ReleaseOps = require("eslint-release");

What It Does

When you run the release tool for a regular release, the following steps take place:

  1. Updates your npm packages to ensure you're running everything with the version that would be installed with a fresh install (only outside of CI release)
  2. Runs npm test to validate the release
  3. Gathers the commit message for each commit since the last release
  4. Calculates the next release version based on the commit message format of the changes since the last release
  5. Updates CHANGELOG.md and commits the changes
  6. Runs npm version to update the version
  7. Pushes the current branch to origin, with tags
  8. Creates GitHub release marked as Latest
  9. Converts all line endings to Unix style
  10. Publishes the package to npm
  11. Reverts any file changes

When you do a prerelease, the same steps are taken except that package is published to npm under the next tag instead of latest, and the GitHub release is marked as Pre-release.

API Usage

This package exports two functions:

  • generateRelease(prereleaseId, packageTag) - This corresponds to the CLI command eslint-generate-release when prereleaseId is undefined, and the CLI command eslint-generate-prerelease prereleaseId when prereleaseId is a string value.
  • publishRelease() - This corresponds to the CLI command eslint-publish-release.

packageTag is used as the --tag value in the npm publish command. It's also used to determine whether a regular release will be marked as Latest on GitHub: it will be marked as Latest only if packageTag is "latest". This parameter is optional and defaults to "latest" when prereleaseId is undefined, "next" otherwise.

Examples

Publish a regular latest release:

const ReleaseOps = require("eslint-release");

ReleaseOps.generateRelease();
ReleaseOps.publishRelease();

Publish a regular release with maintenance tag:

const ReleaseOps = require("eslint-release");

ReleaseOps.generateRelease(undefined, "maintenance");
ReleaseOps.publishRelease();

Publish an alpha prerelease:

const ReleaseOps = require("eslint-release");

ReleaseOps.generateRelease("alpha");
ReleaseOps.publishRelease();

Contributing

Issues and pull requests will be triaged and responded to as quickly as possible. We operate under the ESLint Contributor Guidelines, so please be sure to read them before contributing. If you're not sure where to dig in, check out the issues.

License

MIT License

Where to ask for help?

Join our Chatroom