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-plugin-banno-prism

v0.11.0

Published

ESLint plugin for Banno Prism projects

Downloads

360

Readme

eslint-plugin-banno-prism

This is an ESLint plugin for Banno Prism projects.

🚨 This plugin is not ready yet! See the Roadmap below. 🚨

  • At this time only Typescript projects are supported.
  • It's fairly strict. It's based on Standard and enforces certain styles.

Please open an issue (Jack Henry developers can discuss in #org-prism) for any questions or requests. PRs are welcome.

Requirements

  • Node.js >=12.22.0

Using in Your Project

Installation

(Script provided at the bottom to role all of these steps into one.)

You'll first need to install our ESLint plugin using some of ESLint's rules:

yarn add eslint-plugin-banno-prism lint-staged husky --dev

You also will want an easy way to download all the peer dependencies. To do that:

yarn add install-peerdeps --dev

Then to run the newly installed package to download the dependencies using yarn:

npx install-peerdeps eslint-plugin-banno-prism --dev --yarn

Configuration

Create an eslint configuration file (e.g. .eslintrc.js) in your project folder. Include this plugin and choose a ruleset to extend:

module.exports = {
  root: true,
  parserOptions: {
    project: 'tsconfig.dev.json'
  },
  plugins: [
    'banno-prism'
  ],
  extends: [
    'plugin:banno-prism/typescript'
  ],
  settings: {
    'import/resolver': {
      node: {
        'extensions': ['.js', '.ts']
      }
    }
  }
}

The plugin offers the following configurations:

  • typescript -- Includes rules for existing projects, mostly these rules will autofix, or be able to be otherwise applied in bulk
  • typescript-strict -- Includes rules that are good but don't autofix and can be too much for existing projects

You'll probably want to use or create a different tsconfig file to include files beyond what is included in the tsconfig.json file (e.g. test files, miscellaneous scripts):

{
  "extends": "./tsconfig.json",
  "include": [
    "src/types",
    "src/**/*.ts",
    "test/**/*.ts"
  ]
}

Note that strictNullChecks must be enabled in your tsconfig file. Otherwise @typescript-eslint/no-unnecessary-boolean-literal-compare will not work correctly.

You can include the only-warn plugin to convert all errors to warnings. This is useful for established projects that need to be linted but shouldn't block commits or CI pipelines.

In package.json add the lint-staged config:

  "lint-staged": {
    "*.{js,ts}": "eslint --max-warnings=0"
  },

You'll also want to double check that the engine for node is defined so the node rules work correctly:

  "engines": {
    "node": "18.x"
  },

Add the husky scripts to run lint-staged pre-commit by executing:

npm pkg set scripts.prepare="husky install"
npm run prepare
npx husky add .husky/pre-commit "npx lint-staged"
git add .husky/pre-commit

Add these scripts to package.json

    "lint": "eslint --max-warnings=0 src/ test/",
    "lint:ci": "eslint --max-warnings=0 src/ test/",
    "lint:fix": "eslint --fix src/ test/",

You can do pretty much everything above (expect tsconfig edits which may not be needed) with the script below (note you'll need to fix the cp command to copy from some valid eslintrc file)

npm pkg set "lint-staged[*.{js,ts}]"="eslint --max-warnings=0" && npm pkg set engines.node="18.x" && yarn add @typescript-eslint/eslint-plugin eslint-plugin-banno-prism lint-staged husky eslint eslint-config-standard@^17 eslint-plugin-import@^2.27.5 --dev && npm pkg set scripts.prepare="husky install" && npm run prepare && npx husky add .husky/pre-commit "npx lint-staged" && cp /Users/loren/Sites/node-links-aggregator/.eslintrc.cjs ./ && rm -f tslint.json && npm pkg set scripts.lint="eslint --max-warnings=0 src/ test/" && npm pkg set scripts.lint:fix="eslint --fix src/ test/" && npm pkg set scripts.lint:ci="eslint --max-warnings=0 src/ test/" && git add .husky/pre-commit package.json yarn.lock .eslintrc.cjs && yarn remove tslint tslint-config-standard

If your project uses binci.yml, you'll want to add yarn lint:ci as the first part of binci test.

Usage

Run ESLint against the files and folders you want to check:

eslint --fix bin/ src/ test/

Include the --fix flag to automatically fix problems.

Notes

eslint-plugin-n replaces the eslint-plugin-node plugin.

You can disable an eslint rule for a block of code (function, file, etc) by putting /* eslint-disable <rule-name> */ above the code to be executed. Putting this at the top of the file will ignore the whole file for the given rule.

Roadmap

v0.x.0

The v0.x.0 series will be used while the plugin is under active development and rules are being ironed out.

Most rules will be set as warnings to allow for testing without blocking CI.

  • [ ] Get basic plugin working and published for usage
  • [ ] First pass of rules (sanity check, discussion)

v1.0.0

Starting with v1.0.0, the plugin is ready for primetime.

Linting problems that should be fixed prior to commit will be emitted as errors.

post v1.0.0

  • [ ] Support for non-TS (JS only) projects. Also see https://typescript-eslint.io/docs/linting/troubleshooting/.#one-of-my-lint-rules-isnt-working-correctly-on-a-pure-javascript-file
  • [ ] Use Prettier rather than ESLint for styling