Skip to content

Brightspace/eslint-config-brightspace

Repository files navigation

eslint-config-brightspace

NPM version

Common Brightspace eslint configs.

Installation

npm install eslint-config-brightspace

Usage

To use a shared configuration without any customizations, export it from a eslint.config.js file at the project root:

export { nodeConfig as default } from 'eslint-config-brightspace';

Shared configurations can also be included in a custom configuration:

import { nodeConfig } from 'eslint-config-brightspace';

export default [
	...nodeConfig,
	// Custom configuration
];

Additional File Extensions

Include extensions beyond .js files using the addExtenstion helper function:

import { addExtensions, nodeConfig } from 'eslint-config-brightspace';
export default addExtensions(nodeConfig, ['.js','.html']);

Different Configurations for Different Directories

To include different configurations for specific directories, use the setDirectoryConfigs helper function. This replaces the configuration hierarchy from eslint8.

Include the global configuration and specify the directory configurations. These will apply to all files inside the directory and recursively to any of its subdirectories.

import { litConfig, nodeConfig, setDirectoryConfigs, testingConfig } from 'eslint-config-brightspace';

export default setDirectoryConfigs(
	litConfig,
	{
		'test': testingConfig,
		'test/cli': nodeConfig
	}
);

Note that each set configuration will force all prior configurations to ignore it. For example, for the above configuration, litConfig will ignore any files in the test directory; and testingConfig will ignore any files in the test/cli directory.

Environment Specific Configs

Environment Description
browserConfig use with code that runs in a browser
litConfig use with Lit projects
testingConfig use with @brightspace-ui/testing test code
nodeConfig use with Node.js projects
reactConfig use with React projects

Example:

export { nodeConfig as default } from 'eslint-config-brightspace';

See the eslint rules for more details on rule configuration. See the eslint shareable configs for more details on creating configs.

Developing and Contributing

After cloning the repo, run npm install to install dependencies.

Versioning and Releasing

This repo is configured to use semantic-release. Commits prefixed with fix: and feat: will trigger patch and minor releases when merged to main.

To learn how to create major releases and release from maintenance branches, refer to the semantic-release GitHub Action documentation.