-
Notifications
You must be signed in to change notification settings - Fork 1
Home
- Motivation
- The scriptlint "standard" tl;dr
- The scriptlint "standard"
- The scriptlint CLI
- Contributing to scriptlint
package.json
scripts are an integral part of the JavaScript 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 ❤️ 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.
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 fromnpm init
- have a
dev
script and astart
script - abstract script names from their implementation (
test
, notjest
) - use namespaces to categorize scripts (
"test:unit": "jest"
) - use
:
as a namespace separator - be in alphabetic or natural order
- have a trigger script for all hooks (if you have
preFoo
, there must be afoo
) - use
camelCase
for all script names - not alias
devDependencies
("jest": "jest"
) - not use
&&
or&
for sequential or parallel script execution (doesn't work on all operating systems)
(italic = default rule, regular = "strict" rule)
scriptlint
helps you to maintain a good structure in your package.json
's "scripts"
section using linting rules. These rules reflect best practices
- Motivation
- The scriptlint "standard" tl;dr
-
The scriptlint "standard"
- Rules enforceable via the scriptlint CLI
- Best practices
- The scriptlint CLI
- Contributing to scriptlint