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

@springernature/eslint-config

v6.1.0

Published

ESLint shareable config used at Springer Nature

Downloads

22,680

Readme

eslint-config-springernature

Build Status NPM version

ESLint shareable config used at Springer Nature.

Requirements

This package requires:

  • Node version 18 or greater due to support for v16 running out soon this year. Please have a look at our open source support page for details on which versions of node we support, and why. Version 5 of this package supports Node versions >=8 and <16.
  • eslint version 8.38.0 or greater (due to eslint-plugin-unicorn v47.0.0).

Upgrade note

With version 6.0.0, eslint-config-springernature switches to ESlint version 8, which is a major update. Up to version 5.x, eslint-config-springernature worked fine together with the module gulp-eslint. From version 6 on, gulp-eslint will fail with the error message

Environment key "es2024" is unknown

which is related to the upgrade to ESlint 8.

gulp-eslint has not been maintained for several years now and seems to be dead. Luckily, there's an updated version of that module called gulp-eslint-new, which works well with ESlint 8.

So if you are using gulp-eslint and want to update eslint-config-springernature to version 6, then you should replace gulp-eslint with gulp-eslint-new.

Installation

Our default export contains all of our ESLint rules, and includes the following plugins:

These plugins are defined as peerDependencies in eslint-config-springernature, which means that you will need to add these to your own project's devDependencies.

You can find the correct version of each dependency by using npm info:

npm info "@springernature/eslint-config@latest" peerDependencies

There are several ways to do install this without effort using the install-peerdeps tool.

Using Yarn

Manual

Run yarn add --dev <dependency>@<version> for each peerDependency listed by the npm info command above.

Automated

If you have npx available (included with npm 5+) then you can run npx install-peerdeps --dev @springernature/eslint-config to install the dependencies automatically. This will detect and use Yarn if available.

Using NPM

If you're using npm 5+, then you can use npx to install the dependencies automatically:

npx install-peerdeps --dev @springernature/eslint-config

If you're using an older version of npm where npx is not available, you can manually install and run install-peerdeps.

npm install -g install-peerdeps
install-peerdeps --dev @springernature/eslint-config

The cli will produce and run a command like:

npm install --save-dev @springernature/eslint-config eslint@^#.#.# eslint-plugin-node@^#.#.# eslint-plugin-import@^#.#.# eslint-plugin-no-use-extend-native@^#.#.# eslint-plugin-promise@^#.#.# eslint-plugin-unicorn@^#.#.#

Alternatively, you can use the following shell script:

(
  export PKG=@springernature/eslint-config;
  npm info "$PKG@latest" peerDependencies --json | command sed 's/[\{\},]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG@latest"
)

Usage

Add one of the following to your .eslintrc file:

  • core - The core Springer Nature code style (with ES6 support)
  • legacy - For legacy JS environments (without ES6 support)

These optional extensions can be added in addition to one of the above configurations:

Examples

// Core configuration
{
  "extends": "@springernature/eslint-config",
  "rules": {
    // Additional, per-project rules...
  },
  "overrides": [
    // Overrides for specific files or directories
  ]
}
// Legacy configuration
{
  "extends": "@springernature/eslint-config/legacy",
  "rules": {
    // Additional, per-project rules...
  },
  "overrides": [
    // Overrides for specific files or directories
  ]
}
// Core with optional extensions
{
  "extends": [
    "@springernature/eslint-config",
    "@springernature/eslint-config/node",
    "@springernature/eslint-config/jest"
  ],
  "rules": {
    // Additional, per-project rules...
  },
  "overrides": [
    // Overrides for specific files or directories
  ]
}
// Core config extended with node config for subset of files
// Useful if you use both node and browser js in the same repo
{
	"extends": "@springernature/eslint-config",
	"overrides": [
		{
			"files": [
				"path/to/app/files/*.js"
			],
			"extends": "@springernature/eslint-config/node"
		}
	]
}

Ignore files/folders

You can optionally create an .eslintignore file to ignore file paths. The .eslintignore file is a plain text file where each line is a glob pattern indicating which paths should be omitted from linting. For example, the following will ignore all files in the tests and coverage folders:

**/tests/*
**/coverage/*

If you want to ignore the same files and folders contained in the .gitignore file, you can do so by omitting the creation of the .eslintignore file and using the following command for linting instead:

eslint --ignore-path .gitignore **/*.js

Per-project rules

We've chosen a sensible set of rules and plugins that helps us catch the most common errors while writing JavaScript. Using a unified linting configuration across Springer Nature makes it easier to share code and resources between different teams and projects.

In certain situations it may be necessary to specify per-project rules. A typical use case is when migrating an old project using a different linter to this eslint config, where it may not be possible to fix all the issues raised by eslint in one go and we opt instead for an iterative approach.

If you need to add per-project rules, consider changing them from error to warn instead of disabling them completely. This will allow any tests to pass, but will help you remember that a rule has been overwritten:

  "rules": {
    "block-scoped-var": "warn",
  }

If the problem is in one specific line of code, consider using the eslint-disable-line or eslint-disable-next-line directives, instead of disabling a rule for your whole project. For example:

// eslint-disable-next-line no-unassigned-import
require('polyfill');

const zero; // eslint-disable-line no-unused-vars

Please use per-project rules and eslint-disable-line and eslint-disable-next-line directives sparingly and only when strictly necessary.

Environments and configuration overrides

It's common to have specific files or directories that require different settings. For example, a folder in your project may contains tests that use mocha. Instead of defining the global variables that mocha expects manually, you can use environments and overrides. You can also change specific rules for these files.

  "overrides": [
    {
      "files": "tests/**/*.js",
      "env": {
        "browser": true,
        "jquery": true,
        "mocha": true
      },
      "rules": {
        "no-console": "warn"
      }
    }
  ]

Contributing

This package is used by many active Springer Nature projects. We always welcome issues and pull requests, but we may not always be able to merge your suggestions.

If we decide that we can't merge your PR or act on your issue, it's nothing personal! We love to see new contributors, and we strive to provide a welcoming and inclusive environment.