scriptlint
scriptlint copied to clipboard
an enforceable script naming standard for package.json

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
testscript that is not the default script fromnpm init - have a
devscript and astartscript - abstract script names from their implementation (
test, notjest) - 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 afoobarscript) - use
camelCasefor 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
Documentation
- Motivation
- The scriptlint "standard" tl;dr
-
The
scriptlint
"standard"
- Rules enforceable via the scriptlint CLI
- Best practices
- The scriptlint CLI
- 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:
[](https://scriptlint.peerigon.io/issues/scriptlint/latest)
