eslint-config-etherpad
v4.0.4
Published
ESLint shareable config used for Etherpad and its plugins
Readme
Etherpad ESLint Shareable Config
This package contains an ESLint shareable config that is used by Etherpad and Etherpad plugins in the https://github.com/ether namespace. You are encouraged to use it for your own Etherpad plugins so that your code stays consistent with the Etherpad codebase.
Available Configs
etherpad: Base config containing settings that are common to all files.etherpad/node: Extendsetherpadfor code that runs in Node.js.etherpad/browser: Extendsetherpadfor code that runs in the browser.etherpad/tests: Extendsetherpadfor test code.etherpad/tests/backend: Extendsetherpad/nodeandetherpad/testsfor backend test code.etherpad/tests/cypress: Extendsetherpad/nodeandetherpad/testsfor Cypress test code.etherpad/tests/frontend: Extendsetherpad/browserandetherpad/testsfor frontend test code.etherpad/plugin: Applies the above configs to the appropriate files. Assumes the plugin follows the typical file layout.
Usage in an Etherpad Plugin
Install the shareable config and its dependencies:
npm install --save-dev eslint eslint-config-etherpad typescriptCreate a
.eslintrc.cjsin your project's root directory:'use strict'; // This is a workaround for https://github.com/eslint/eslint/issues/3458 require('eslint-config-etherpad/patch/modern-module-resolution'); module.exports = { root: true, extends: 'etherpad/plugin', };If you
require('ep_etherpad-lite/*')anywhere in your server-side code, add a peer dependency to yourpackage.jsonso that thenESLint plugin (for Node.js) won't complain about unavailable modules:"peerDependencies": { "ep_etherpad-lite": ">=1.8.6" },Adding an entry to
peerDependenciesdoes not causenpm installto install that peer dependency; you must manually install it yourself:npm install --no-save ep_etherpad-lite@file:/path/to/etherpad-lite/srcThe above command creates a symlink at
node_modules/ep_etherpad-litethat points to/path/to/etherpad-lite/src. Unfortunately,npmautomatically deletes that symlink whenever you runnpm installto install, add, or update a regular dependency, so remember to re-run the above command each time you runnpm install.Optional but recommended: Define a
lintscript in yourpackage.jsonso that you can runnpm run lintto check the code:"scripts": { "lint": "eslint ." },Optional but recommended: Specify the minimum version of Node.js you support (ideally this would match Etherpad's minimum required version) so that the
nESLint plugin (for Node.js) can warn you when you use incompatible features:"engines": { "node": ">=12.17.0" },Apply automatic fixes. If you added the optional
lintscript topackage.json, you can run:npm run lint -- --fixOr you can run:
npx eslint --fix .
Overrides
If you need to tune the configs, you can specify
overrides
in your .eslintrc.cjs. For example:
'use strict';
// This is a workaround for https://github.com/eslint/eslint/issues/3458
require('eslint-config-etherpad/patch/modern-module-resolution');
module.exports = {
root: true,
extends: 'etherpad/plugin',
overrides: [
{
files: ['static/js/shared/**/*'],
env: {
shared-node-browser: true,
},
extends: 'etherpad/node',
},
],
};Copyright and License
Copyright © 2020 Richard Hansen [email protected]
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
