eslint-config-twilio
raw JSON → 2.0.0 verified Sat Apr 25 auth: no javascript
Twilio's official ESLint shareable config enforcing JavaScript style guidelines. Current stable version 2.0.0 requires ESLint ^8 and drops support for ESLint 5, 6, and 7. Integrates with prettier, eslint-plugin-import, eslint-plugin-no-only-tests, and eslint-plugin-sonarjs. Designed for Twilio's codebase but usable by any JavaScript project. Released under twilio-style monorepo with slow cadence; no known further updates.
Common errors
error Error: Cannot find module 'eslint-config-twilio' ↓
cause Package not installed or not in node_modules.
fix
Run 'npm install eslint eslint-config-twilio --save-dev'.
error Error: Failed to load plugin 'import' declared in 'BaseConfig': Cannot find module 'eslint-plugin-import' ↓
cause Peer dependencies (including eslint-plugin-import) are not installed automatically.
fix
Install missing peer dependencies: 'npm install eslint-plugin-import --save-dev'.
error Error: ESLint configuration in .eslintrc.json is invalid: Unexpected top-level property "extends" ↓
cause Using an invalid ESLint config file format (e.g., missing JSON quotes or using JavaScript object).
fix
Ensure .eslintrc.json is valid JSON with double-quoted strings.
Warnings
breaking Dropped support for ESLint 5, 6, and 7. Only ESLint ^8 is supported. ↓
fix Upgrade ESLint to version 8 or later.
gotcha You must install peer dependency eslint@^8 manually; npm<7 does not auto-install peer deps. ↓
fix Run 'npm install eslint@^8 --save-dev' if not already installed, or upgrade npm to >=7.
gotcha The prettier rules are not applied unless you extend 'twilio'. Overriding prettier/prettier rules requires additional configuration. ↓
fix Follow the Prettier section in README to customize: add override rule 'prettier/prettier': ['warn', {}, { 'usePrettierrc': true }]
Install
npm install eslint-config-twilio yarn add eslint-config-twilio pnpm add eslint-config-twilio Imports
- extends config wrong
{ "extends": ["eslint-config-twilio"] }correct{ "extends": ["twilio"] } - prettier config import (CommonJS) wrong
import baseConfig from 'eslint-config-twilio/rules/prettier';correctconst baseConfig = require('./node_modules/eslint-config-twilio/rules/prettier'); - prettier config import (ESM) wrong
import baseConfig from 'eslint-config-twilio/rules/prettier';correctimport { createRequire } from 'module'; const require = createRequire(import.meta.url); const baseConfig = require('./node_modules/eslint-config-twilio/rules/prettier');
Quickstart
// Install
npm install eslint@^8 eslint-config-twilio --save-dev
// .eslintrc.json
{
"extends": ["twilio"]
}
// package.json scripts
{
"scripts": {
"lint": "eslint --ext js src/",
"lint:fix": "npm run lint -- --fix"
}
}
// Example usage
npx eslint src/