Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

scriptlint

Package Overview
Dependencies
Maintainers
9
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

scriptlint

an enforcable script naming standard for package.json

  • 3.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
431
decreased by-49.35%
Maintainers
9
Weekly downloads
 
Created
Source


scriptlint status
npm version badge
dependency badge
Issue badge
CI badge

scriptlint

Enforceable standards for your package.json scripts – like eslint for npm run

⚠️ Requires nodejs >= 14.x.x

Intro

package.json scripts are an integral part of the Node dev experience: we use them to start our projects, run our dev environments and for all kinds of formatting, linting and tooling in general. They are just as important as our code. Yet we don't treat them with the same meticulous attention to detail. Scripts need :heart: too!

One of the main goals for scriptlint was to enable people to use memorable and consistent script names across their projects. Tools like nps are great when you have to organize scripts with a certain level of complexity, but they don't help you with the structure and naming of your scripts.

This is where the scriptlint CLI shines: it makes best practices outlined in this documentation enforceable throughout your project(s). Think of it as eslint for your "scripts" section.

Rules

Here's the tl;dr of all the best practices we consider the "scriptlint standard"

Your package.json's "scripts" section should…

  • have a test script that is not the default script from npm init
  • have a dev script and a start script
  • abstract script names from their implementation (test, not jest)
  • use namespaces to categorize scripts ("test:unit": "jest")
  • use : as a namespace separator
  • have the scripts in alphabetic order
  • have a trigger script for all hooks (ex: if you have prefoobar, there must be a foobar script)
  • use camelCase for all script names
  • not alias devDependencies (no "jest": "jest")
  • not use && or & for sequential or parallel script execution

(italic = strict rule)

Read more about the standard rules here

Usage

Install locally:

npm install scriptlint -D (or yarn add scriptlint -D)

… then run npx scriptlint --strict

Read about configuration here

Documentation

  1. Motivation
  2. The scriptlint "standard" tl;dr
  3. The scriptlint "standard"
    1. Rules enforceable via the scriptlint CLI
      1. Minimum rules
        1. mandatory-start
        2. mandatory-dev
        3. mandatory-test
        4. no-default-test
      2. Strict rules
        1. uses-allowed-namespace
        2. alphabetic-order
        3. correct-casing
        4. no-aliases
        5. prepost-trigger-defined
        6. no-unix-double-ampersand
        7. no-unix-single-ampersand
    2. Best practices
  4. The scriptlint CLI
    1. Installation
    2. Usage
    3. Configuration
    4. Extending
    5. Use as a JavaScript module
  5. Contributing to scriptlint

Badge

Would you like a scriptlint badge for your project readme? No problem: have a look at https://scriptlint.peerigon.io/ or adapt the snippet below:

[![scriptlint status](https://img.shields.io/endpoint?url=https://scriptlint.peerigon.io/api/shield/scriptlint/latest)](https://scriptlint.peerigon.io/issues/scriptlint/latest)

Sponsors

FAQs

Package last updated on 25 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc