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

@shopify/eslint-plugin

v46.0.0

Published

Shopify's ESLint rules and configs.

Downloads

835,214

Readme

@shopify/eslint-plugin

License: MIT npm version

Shopify’s ESLint rules and configs.

Installation

You'll first need to install ESLint:

With Yarn

yarn add --dev eslint

With npm

$ npm i eslint --save-dev

Next, install @shopify/eslint-plugin:

With Yarn

yarn add --dev @shopify/eslint-plugin

With npm

$ npm install @shopify/eslint-plugin --save-dev

Note: If you installed ESLint globally (using the -g flag) then you must also install @shopify/eslint-plugin globally.

Usage

As of version 46.0.0, this package uses Eslint's "Flat Config" format, not the legacy "eslintrc" format. To upgrade your Eslint configuration, follow the Configuration Migration Guide.


Shopify’s ESLint configs come bundled in this package. In order to use them, you include the relevant configurations in your project’s eslint.config.js. For example, the following will use the ESNext (ES2015 and later) config:

import shopifyEslintPlugin from '@shopify/eslint-plugin';

export default [...shopifyEslintPlugin.configs.esnext];

If you are working on an ES5 project, use the ES5 version of the configuration:

import shopifyEslintPlugin from '@shopify/eslint-plugin';

export default [...shopifyEslintPlugin.configs.es5];

You can also add some "augmenting" configs on top of the "core" config by using an array of linting configs. For example, the following configuration would provide a base ESNext config that is augmented by a React config:

import shopifyEslintPlugin from '@shopify/eslint-plugin';

export default [
  ...shopifyEslintPlugin.configs.esnext,
  ...shopifyEslintPlugin.configs.react,
];

Likewise, if you are using TypeScript and React, the following configuration uses the TypeScript base config with the React-specific rules provided by the React configuration file. To demonstrate multiple augmentations, we've also added the Prettier config, which disables rules that will conflict in projects using prettier.

import shopifyEslintPlugin from '@shopify/eslint-plugin';

export default [
  ...shopifyEslintPlugin.configs.typescript,
  ...shopifyEslintPlugin.configs.react,
  ...shopifyEslintPlugin.configs.prettier,
];

Provided configurations

This plugin provides the following core configurations:

  • esnext: Use this for anything written with ES2015+ features.
  • typescript: Use this for Typescript projects. The rules enabled in this config do not require type-checking to run. To enable all Typescript rules, you must augment this config with the typescript-type-checking config mentioned below.
  • es5: Use this for legacy projects.

This plugin also provides the following tool-specific configurations, which can be used on top of the core configurations:

  • typescript-type-checking Use this config to augment the typescript config to enable all TypeScript rules, including those that require type checking. These rules are slower to run and and you will need to specify a path to your tsconfig.json file in the "project" property of "parserOptions". The following example would provide all of the TypeScript rules, assuming the tsconfig.json is in the same directory as you ESlint configuration.
import shopifyEslintPlugin from '@shopify/eslint-plugin';

export default [
  ...shopifyEslintPlugin.configs.typescript,
  ...shopifyEslintPlugin.configs['typescript-type-checking'],
  {
    languageOptions: {
      parserOptions: {
        project: 'tsconfig.json',
      },
    },
  },
];
  • react: Use this for React projects.
  • polaris: Use this for projects that use Shopify’s React Polaris components.
  • prettier: Use prettier for consistent formatting. Using this Shopify's prettier config will override the default Shopify eslint rules in favor of prettier formatting. Prettier must be installed within your project, as @shopify/eslint-plugin does not provide the dependency itself.
  • webpack: Use this for projects built by webpack.

node

If you are working on a node module, we also provide the node configuration for you. Note that this configuration needs to be used in conjunction with one of the core configurations (either es5 or esnext). If you plan to transpile your code using Babel, use the esnext config. If you do not plan to do so, the config you choose depends on the version of node you wish to support, and how many ESNext features are natively available in that version. You can see a detailed list of what version of node supports what new JavaScript features by visiting http://node.green.

A node project that will use Babel for transpilation would need the following ESLint config:

import shopifyEslintPlugin from '@shopify/eslint-plugin';

export default [
  ...shopifyEslintPlugin.configs.esnext,
  ...shopifyEslintPlugin.configs.node,
];

Supported Typescript version

The supported version of TypeScript is constrained by the @typescipt-eslint parser support that is installed.

Plugin-Provided Rules

This plugin provides the following custom rules, which are included as appropriate in all core linting configs:

Suggested additional configs

For applications that use graphql we recommend using the operations-recommended preset from @graphql-eslint/eslint-plugin. This is not included as part of this plugin because graphql has a large install footprint and not everybody needs it.